Codis安装部署全架构
前期规划
机器与应用列表:
操作系统:CentOS6.5
1,操作系统:CentOS6.5
192.168.88.106 codis-server1
192.168.88.107 codis-server2
192.168.88.108 codis-server3
192.168.88.111 codis-ha1
192.168.88.112 codis-ha2
192.168.88.113 zookeeper-1(codis-proxy-1)
192.168.88.114 zookeeper-2(codis-proxy-2)
192.168.88.115 zookeeper-3(codis-proxy-3)
2,硬件配置:
ha mem:8G cpu:4 disk:100G
zookeeper mem:16G cpu:8 disk:300G
codis-server mem:16G cpu:8 disk:200G
3,架构应用
1), HA(192.168.88.111、192.168.88.112、VIP 192.168.88.159)
hostname:codisha-1 apps:keepalived master,haproxy prots:19000
hostname:codisha-2 apps:keepalived slave ,haproxy,codis-config prots:19000,18087
2),zookeeper+codis-proxy
hostname:zookeeper-1 apps: zookeeper1, codis_proxy_1 prots:2811,19000
hostname:zookeeper-2 apps: zookeeper2, codis_proxy_2 prots:2811,19000
hostname:zookeeper-3 apps: zookeeper3, codis_proxy_3 prots:2811,19000
3),codis-server
codis-server(192.168.88.106、192.168.88.107、192.168.88.108)
hostname: codis-server1 apps: codis_server_master,slave, ports:6379,6380,6389,6390
hostname: codis-server2 apps: codis_server_master,slave ports:6379,6380,6389,6390
hostname: codis-server3 apps: codis_server_master,slave ports:6379,6380,6389,6390
部署安装详细步骤
一,安装zookeeper
1,配置hosts文件 (所有机器上配置)
vim /etc/hosts
192.168.88.106 codis-server1
192.168.88.107 codis-server2
192.168.88.108 codis-server3
192.168.88.111 codis-ha1
192.168.88.112 codis-ha2
192.168.88.113 zookeeper-1(codis-proxy-1)
192.168.88.114 zookeeper-2(codis-proxy-2)
192.168.88.115 zookeeper-3(codis-proxy-3)
2,安装java环境
ZooKeeper 要求 JAVA 的环境才能运行,并且需要 JAVA6 以上的版本,可以从 SUN 官网上下载,并对 JAVA 环境变量进行设置。
yum -y install java-1.7.0-openjdk-devel
java -version
java version "1.7.0_75"
OpenJDK Runtime Environment (rhel-2.5.4.0.el6_6-x86_64 u75-b13)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
3,安装zookeeper
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 /usr/local/zookeeper
mkdir -p /data/zookeeper/{data,logs}
配置zoo.cfg
vim /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/zookeeper/data
#dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=zookeeper-1:2888:3888
server.2=zookeeper-2:2888:3888
server.3=zookeeper-3:2888:3888
上述配置内容说明,可以参考http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html#sc_RunningReplicatedZooKeeper
4,设置myid
在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字
[root@zookeeper-1 ~]# echo 1 > /data/zookeeper/data/myid
[root@zookeeper-2 ~]# echo 2 > /data/zookeeper/data/myid
[root@zookeeper-3 ~]# echo 3 > /data/zookeeper/data/myid
5,启动zookeeper
启动顺序zookeeper-1>zookeeper-2>zookeeper-3
[root@zookeeper-1 zookeeper]# zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@zookeeper-1 zookeeper]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader
可以看到最先开始启动的是leader,其他两个是follower
设置开机启动
vim /etc/rc.local
/usr/local/zookeeper/bin/zkServer.sh start
设置环境变量
vim /etc/profile
export ZOOKEEPERPATH=/usr/local/zookeeper
export GOROOT=/usr/local/go
export CODISPATH=/usr/local/codis
export PATH=$PATH:$GOROOT/bin:$ZOOKEEPERPATH/bin:$CODISPATH/bin
source /etc/profile
二,安装codis集群
1,安装go
设置环境变量
vim /etc/profile
export GOROOT=/usr/local/go
export CODISPATH=/usr/local/codis
export PATH=$PATH:$GOROOT/bin:$CODISPATH/bin
source /etc/profile
下载安装go
cd /usr/local/
wget http://golangtc.com/static/go/go1.3.3.linux-amd64.tar.gz
tar -zxvf go1.3.3.linux-amd64.tar.gz
go version
go version go1.3.3 linux/amd64
2,安装依赖环境
yum groupinstall "Development Tools"
3,安装codis
yum install -y git
go get github.com/wandoulabs/codis #这个需要几分钟下载共30M文件
package github.com/wandoulabs/codis
imports github.com/wandoulabs/codis
imports github.com/wandoulabs/codis: no buildable Go source files in /usr/local/codis/src/github.com/wandoulabs/codis
cd $GOPATH/src/github.com/wandoulabs/codis
[root@localhost codis]# pwd
/usr/local/codis/src/github.com/wandoulabs/codis
#执行编译测试脚本,编译go和reids。
./bootstrap.sh #这个需要十几分钟共下载50M文件
make gotest
# 将编译好后,把bin目录和一些脚本复制过去/usr/local/codis目录下:
mkdir -p /usr/local/codis/{logs,conf,scripts}
mkdir -p /data/codis_server/{logs,conf,data}
cp -rf bin /usr/local/codis/
cp sample/config.ini /usr/local/codis/conf/
cp sample/redis_conf/6381.conf /data/codis_server/conf/
cp -rf /usr/local/codis/src/github.com/wandoulabs/codis/sample/*.sh /usr/local/codis/scripts/
cp -rf /usr/local/codis/src/github.com/wandoulabs/codis/sample/usage.md /usr/local/codis/scripts/
cp /usr/local/codis/src/github.com/wandoulabs/codis/extern/redis-2.8.13/src/redis-cli /usr/local/codis/bin/redis-cli-2.8.13
cp /usr/local/codis/src/github.com/wandoulabs/codis/extern/redis-2.8.21/src/redis-cli /usr/local/codis/bin/redis-cli-2.8.21
ln -s /usr/local/codis/bin/redis-cli-2.8.21 /usr/local/codis/bin/redis-cli
4. 配置codis_proxy ( zookeeper-1、zookeeper-2、zookeeper-3 机器上配置)
配置codis_proxy_1 ( zookeeper-1 机器上配置)
cd /usr/local/codis/conf
vim config.ini
zk=zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
product=jerrymin-codis
proxy_id=codis_proxy_1
net_timeout=50
dashboard_addr=192.168.88.112:18087
coordinator=zookeeper
配置codis_proxy_2 ( zookeeper-1 机器上配置)
cd /usr/local/codis/conf
vim config.ini
zk=zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
product=jerrymin-codis
proxy_id=codis_proxy_2
net_timeout=50
dashboard_addr=192.168.88.112:18087
coordinator=zookeeper
配置codis_proxy_3 ( zookeeper-1 机器上配置)
cd /usr/local/codis/conf
vim config.ini
zk=zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181
product=jerrymin-codis
proxy_id=codis_proxy_3
net_timeout=50
dashboard_addr=192.168.88.112:18087
coordinator=zookeeper
5. 修改配置文件,启动codis-server服务(codis-server1、codis-server2、codis-server3 机器上配置)
cd /data/codis_server/conf/
grep -Ev "^#|^$" 6379.conf.bak >6379.conf
vim 6379.conf
修改如下参数: (生产环境,参数适当进行调整)
daemonize yes
timeout 300
pidfile /var/run/redis_6379.pid
port 6379
logfile "/data/codis_server/logs/codis_6379.log"
save 900 1
save 300 10
save 60 10000
dbfilename 6379.rdb
dir /data/codis_server/data
appendfilename "6379_appendonly.aof"
appendfsync everysec
具体配置文件如下:
daemonize yes
pidfile /var/run/redis_6379.pid
port 6379
tcp-backlog 511
timeout 300
tcp-keepalive 0
loglevel notice
logfile "/data/codis_server/logs/redis_6379.log"
databases 16
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename 6379.rdb
dir /data/codis_server/data
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
maxclients 10000
maxmemory 3gb
maxmemory-policy allkeys-lru
appendonly no
appendfilename "6379_appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
复制6380、6389、6390配置文件
cp 6379.conf 6380.conf
cp 6379.conf 6389.conf
cp 6379.conf 6390.conf
sed -i 's/6379/6380/g' 6380.conf
sed -i 's/6379/6389/g' 6380.conf
sed -i 's/6379/6390/g' 6380.conf
添加内核参数
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p
内核参数说明如下:
overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
启动codis-server服务
/usr/local/codis/bin/codis-server /data/codis_server/conf/6379.conf
/usr/local/codis/bin/codis-server /data/codis_server/conf/6380.conf
/usr/local/codis/bin/codis-server /data/codis_server/conf/6389.conf
/usr/local/codis/bin/codis-server /data/codis_server/conf/6390.conf
[root@codis-server1 ~]# /usr/local/codis/bin/codis-server /data/codis_server/conf/6379.conf
[root@codis-server1 ~]# /usr/local/codis/bin/codis-server /data/codis_server/conf/6380.conf
[root@codis-server1 ~]# /usr/local/codis/bin/codis-server /data/codis_server/conf/6389.conf
[root@codis-server1 ~]# /usr/local/codis/bin/codis-server /data/codis_server/conf/6390.conf
[root@codis-server1 ~]# ps aux |grep codis
root 7473 0.0 0.0 137388 9540 ? Ssl 09:48 0:00 /usr/local/codis/bin/codis-server *:6379
root 7478 0.0 0.0 137388 9524 ? Ssl 09:48 0:00 /usr/local/codis/bin/codis-server *:6380
root 7482 0.0 0.0 137388 9516 ? Ssl 09:48 0:00 /usr/local/codis/bin/codis-server *:6389
root 7486 0.0 0.0 137388 9524 ? Ssl 09:48 0:00 /usr/local/codis/bin/codis-server *:6390
root 7490 0.0 0.0 103252 856 pts/0 S+ 09:49 0:00 grep --color=auto codis
[root@codis-server1 ~]# netstat -tulpn|grep codis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 7473/codis-server *
tcp 0 0 0.0.0.0:6380 0.0.0.0:* LISTEN 7478/codis-server *
tcp 0 0 0.0.0.0:6389 0.0.0.0:* LISTEN 7482/codis-server *
tcp 0 0 0.0.0.0:6390 0.0.0.0:* LISTEN 7486/codis-server *
tcp 0 0 :::6379 :::* LISTEN 7473/codis-server *
tcp 0 0 :::6380 :::* LISTEN 7478/codis-server *
tcp 0 0 :::6389 :::* LISTEN 7482/codis-server *
tcp 0 0 :::6390 :::* LISTEN 7486/codis-server *
6. 查看一下启动流程:
cat /usr/local/codis/scripts/usage.md
0. start zookeeper //启动zookeeper服务
1. change config items in config.ini //修改codis配置文件
2. ./start_dashboard.sh //启动 dashboard
3. ./start_redis.sh //启动redis实例
4. ./add_group.sh //添加redis组,一个redis组只能有一个master
5. ./initslot.sh //初始化槽
6. ./start_proxy.sh //启动proxy
7. ./set_proxy_online.sh //上线proxy项目
8. open browser to http://localhost:18087/admin //访问web
这只是一个参考,有些顺序不是必须的,但启动dashboard前,必须启动zookeeper服务,这是必须的,后面有很多操作,都可以在web页面完成,例如添加/删除组,添加/删除redis实例等
7. 修改脚本,启动 dashboard。( 只需在一台机器上启动即可。codis-ha2上启动 ,后续大部分操作都可以在面板上操作)
cat /usr/local/codis/scripts/start_dashboard.sh
#!/bin/sh
CODIS_HOME=/usr/local/codis
nohup $CODIS_HOME/bin/codis-config -c $CODIS_HOME/conf/config.ini -L $CODIS_HOME/logs/dashboard.log dashboard --addr=:18087 --http-log=$CODIS_HOME/logs/requests.log &>/dev/null &
启动dashboard
[root@codis-ha2 scripts]# ls -lh start_dashboard.sh
-rwxr-xr-x 1 root root 218 Jun 24 22:04 start_dashboard.sh
[root@codis-ha2 scripts]# ./start_dashboard.sh
[root@codis-ha2 scripts]# ps aux |grep codis-config
root 2435 0.0 0.1 216444 11044 pts/1 Sl 10:06 0:00 /usr/local/codis/bin/codis-config -c /usr/local/codis/conf/config.ini -L /usr/local/codis/logs/dashboard.log dashboard --addr=:18087 --http-log=/usr/local/codis/logs/requests.log
root 2441 0.0 0.0 103252 840 pts/1 S+ 10:06 0:00 grep --color=auto codis-config
[root@codis-ha2 scripts]# netstat -tulpn |grep codis
tcp 0 0 :::10086 :::* LISTEN 2435/codis-config
tcp 0 0 :::18087 :::* LISTEN 2435/codis-config
访问dashboard
http://192.168.88.112:18087/admin/
8. 添加redis组
通过管理页面添加组ID,为组添加主从实例,一个组里只能有一个redis-master:
http://192.168.88.112:18087/admin/(最好用Firefox浏览器或者谷歌浏览器)
登录http://192.168.88.112:18087/admin/,添加2个组,组里面有2个实例,一个主一个从,默认每个组里面第一个实例是主
group_1
192.168.88.106:6379 master
192.168.88.107:6380 slave
group_2
192.168.88.106:6389 master
192.168.88.108:6390 slave
group_3
192.168.88.107:6379 master
192.168.88.106:6380 slave
group_4
192.168.88.107:6389 master
192.168.88.108:6380 slave
group_5
192.168.88.108:6379 master
192.168.88.106:6390 slave
group_6
192.168.88.108:6389 master
192.168.88.107:6390 slave
9. 修改脚本,初始化槽 ( 在codis-ha2机器上配置,初始化solt是在group设置好之后 )
[root@codis-ha2 scripts]# cat initslot.sh
#!/bin/sh
CODIS_HOME=/usr/local/codis
echo "slots initializing..."
$CODIS_HOME/bin/codis-config -c $CODIS_HOME/conf/config.ini slot init -f
echo "done"
echo "set slot ranges to server groups..."
$CODIS_HOME/bin/codis-config -c config.ini slot range-set 0 170 1 online
$CODIS_HOME/bin/codis-config -c config.ini slot range-set 171 341 2 online
$CODIS_HOME/bin/codis-config -c config.ini slot range-set 342 512 3 online
$CODIS_HOME/bin/codis-config -c config.ini slot range-set 513 683 4 online
$CODIS_HOME/bin/codis-config -c config.ini slot range-set 684 853 5 online
$CODIS_HOME/bin/codis-config -c config.ini slot range-set 854 1023 6 online
echo "done"
10.测试一下redis-master和redis-slave是否正常同步数据了:
这个需要用redis-cli测试:
[root@codis-server1 ~]# redis-cli -h 192.168.88.106 -p 6379
192.168.88.106:6379> ping
PONG
192.168.88.106:6379> set name jerrymin
OK
192.168.88.106:6379> get name
"jerrymin"
192.168.88.106:6379> quit
[root@codis-server1 ~]# redis-cli -h 192.168.88.107 -p 6380
192.168.88.107:6380> get name
"jerrymin"
192.168.88.107:6380> set name foo
(error) READONLY You can't write against a read only slave.
192.168.88.107:6380> quit
11. 修改start_proxy.sh,启动codis-proxy服务 ( 在zookeeper-1、zookeeper-2、zookeeper-3上配置)
zookeeper-1上(其他上面就是codis_proxy_2、codis_proxy_3)
查看start_proxy脚本
[root@zookeeper-1 scripts]# cat start_proxy.sh
#!/bin/sh
CODIS_HOME=/usr/local/codis
echo "shut down codis_proxy_1..."
$CODIS_HOME/bin/codis-config -c $CODIS_HOME/conf/config.ini proxy offline codis_proxy_1
echo "done"
echo "start new codis_proxy_1..."
nohup $CODIS_HOME/bin/codis-proxy --log-level info -c $CODIS_HOME/conf/config.ini -L $CODIS_HOME/logs/codis_proxy_1.log --cpu=4 --addr=0.0.0.0:19000 --http-addr=0.0.0.0:11000 &
echo "done"
echo "sleep 3s"
sleep 3
tail -n 30 $CODIS_HOME/logs/codis_proxy_1.log.0
查看proxy_online脚本
[root@zookeeper-1 scripts]# cat set_proxy_online.sh
#!/bin/sh
CODIS_HOME=/usr/local/codis
echo "set codis_proxy_1 online"
$CODIS_HOME/bin/codis-config -c $CODIS_HOME/conf/config.ini proxy online codis_proxy_1
echo "done"
启动proxy
[root@zookeeper-1 scripts]# ./start_proxy.sh
shut down codis_proxy_1...
{
"msg": "OK",
"ret": 0
}
done
start new codis_proxy_1...
done
sleep 3s
nohup: appending output to `nohup.out'
2015/07/24 11:06:13 [INFO] set log level to %!s(log.LogLevel=7)
2015/07/24 11:06:13 [INFO] running on 0.0.0.0:19000
2015/07/24 11:06:13 [INFO] start proxy with config: &{proxyId:codis_proxy_1 productName:jerrymin-codis zkAddr:zookeeper-1:2181,zookeeper-2:2181,zookeeper-3:2181 fact:<nil> netTimeout:50 proto:tcp provider:zookeeper}
2015/07/24 11:06:13 [INFO] proxy info = {Id:codis_proxy_1 Addr:zookeeper-1:19000 LastEvent: LastEventTs:0 State:offline Description: DebugVarAddr:zookeeper-1:11000 Pid:8097 StartAt:2015-07-24 11:06:13.4791833 +0800 CST}
2015/07/24 11:06:13 [WARN] wait to be online: codis_proxy_1
上线proxy
[root@zookeeper-1 scripts]# ./set_proxy_online.sh
set codis_proxy_1 online
{
"msg": "OK",
"ret": 0
}
done
三,配置HA
1,codis-ha1和codis-ha2上操作
安装keeplived和ipvsadm
设置VIP 192.168.88.159
codis-ha1 为LVS主
codis-ha2 为LVS备
如下是备的配置,主的配置与此类似
[root@codis-ha2 haproxy]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
local@localhost
}
notification_email_from localhost@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL_112
}
vrrp_script chk_haproxy_port {
script "/etc/keepalived/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 159
priority 50
advert_int 3
authentication {
auth_type PASS
auth_pass jerrymin
}
virtual_ipaddress {
192.168.88.159
}
track_script {
chk_haproxy_port
}
}
检测脚本,保证keepalived切换成主时haproxy在工作
[root@codis-ha2 keepalived]# cat check_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
2,安装配置haproxy
[root@codis-ha1 ~]#tar zxvf haproxy-1.5.11.tar.gz
[root@codis-ha1 ~]#cd haproxy-1.5.11
[root@codis-ha1 haproxy-1.5.11]#make TARGET=linux26 PREFIX=/usr/local/haproxy
[root@codis-ha1 haproxy-1.5.11]#make install PREFIX=/usr/local/haproxy
3,配置haproxy.cfg
global
maxconn 40000
daemon
user root
group root
nbproc 4
log 127.0.0.1 local3
spread-checks 2
defaults
timeout server 3s
timeout connect 3s
timeout client 60s
timeout http-request 3s
timeout queue 3s
frontend codis-proxy
bind :19000
default_backend codis-proxy-19000
frontend web_haproxy_status
bind :8080
default_backend web_status
backend codis-proxy-19000
mode tcp
option tcpka
balance roundrobin
server msvr1 192.168.88.113:19000 check inter 1s rise 5 fall 1
server msvr2 192.168.88.114:19000 check inter 1s rise 5 fall 1
server msvr3 192.168.88.115:19000 check inter 1s rise 5 fall 1
timeout server 9s
backend web_status
mode http
stats enable
stats refresh 5s
stats uri /status
stats realm Haproxy\ statistics
stats auth jerrymin:jerrymin@2015
4.启动服务
启动服务:
[root@codis-ha1 haproxy]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
[root@codis-ha1 haproxy]# ps aux |grep haproxy
root 3147 0.0 0.0 18668 3020 ? Ss 14:42 0:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
root 3148 0.0 0.0 18668 2888 ? Ss 14:42 0:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
root 3149 0.0 0.0 18668 2888 ? Ss 14:42 0:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
root 3150 0.0 0.0 18668 3020 ? Ss 14:42 0:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
[root@codis-ha1 haproxy]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.88.159:19000 wrr
-> 192.168.88.111:19000 Local 1 0 0
相关推荐
三、CODIS集群部署步骤 1. 安装Zookeeper集群:首先,你需要搭建一个稳定的Zookeeper集群,通常由3个或以上节点组成,以保证高可用性。 2. 部署Redis实例:安装多个Redis实例,并配置为集群模式,不启用主从复制。...
在深入探讨Redis专场中Codis集群演化与Redis异步迁移的内容之前,首先需要对Codis和Redis这两个核心概念有所了解。Redis是一个开源的内存中的数据结构存储系统,用作数据库、缓存和消息中间件。它支持数据结构如字符...
Zookeeper负责存储Codis集群的状态信息,包括Proxy、Server和数据分片的映射关系等,确保集群的一致性和可靠性。 7. **性能优化** Codis代理使用epoll事件模型,能够高效处理大量并发连接。同时,通过批处理和合并...
**CODIS集群安装包及文档详解** CODIS(Cluster Of Distributed Internet Services)是阿里巴巴开源的一款分布式Redis解决方案,它为了解决单个Redis实例在内存和网络带宽上的扩展瓶颈问题而设计。CODIS通过代理...
Codis Ansible Playbook 是一个自动化部署工具,用于简化 Codis 的集群安装和管理过程。Codis 是一个分布式 Redis 解决方案,它允许你水平扩展 Redis 集群,提高数据存储和处理能力。Ansible 是一个强大的 IT 自动化...
2.5 Codis 集群部署实战 2.5.1 集群概要 2.5.2 系统架构 2.5.3 角色分配 2.5.4 部署安装 2.5.5 服务启动及初始化集群 2.5.6 codis-server 的HA 2.5.7 关于集群监控的思考 2.5.8 使用过程中遇到的问题
server)ZooKeepercodis-proxy 是客户端连接的 Redis 代理服务, codis-proxy 本身实现了 Redis 协议, 表现得和一个原生的 Redis 没什么区别 (就像 Twemproxy), 对于一个业务来说, 可以部署多个 codis-proxy, codis-...
在Codis集群中,可以有多个Codis Server构成高可用的主从架构。 - Codis Dashboard:管理后台,通过该后台可以配置和管理集群状态,如添加、删除Proxy、Server等。 - Zookeeper:用于集群元信息的存储和管理,提供...
总结,CODIS是应对大数据量、高并发场景下的理想选择,通过上述步骤,你可以成功地在Linux环境下搭建一个完整的CODIS集群。记得在实际操作过程中,根据自己的服务器配置和业务需求调整相关参数,确保系统的稳定性和...
Codis 的核心架构由四个主要组件组成: 1. **Codis-Proxy**:作为客户端连接的 Redis 代理服务,它实现了 Redis 协议,确保客户端与 Codis 交互时的透明性。 Codis-Proxy 是无状态的,可以部署多个实例以提高并发...
Codis提供了一套完整的部署和运维工具,包括codis-proxy、codis-server、codis-config、codis-admin等,方便用户快速搭建和管理Redis集群。 10. 性能优化 Codis在设计上考虑了性能优化,如命令预处理、批量发送等...
通过以上步骤,你可以构建并运行一个完整的CODIS集群,实现Redis的高可用性和水平扩展。不过,实际操作中还可能涉及更多细节,比如网络配置、安全策略、数据备份等,需要根据具体场景进行适配。对于开发者来说,理解...
7. **与Redis兼容**:CODIS完全兼容Redis协议,这意味着任何支持Redis的客户端都可以无缝接入CODIS集群。 在安装“codis3.2.0-go1.7.5-linux.tar.gz”时,你需要按照以下步骤操作: 1. **解压文件**:使用`tar -...
在部署和使用CODIS 3.1时,你需要了解Linux环境下的基本操作,熟悉Zookeeper的配置和管理,以及如何通过Dashboard进行集群的监控和操作。在实际应用中,可以根据业务需求调整Proxy和Redis实例的数量,确保系统性能和...
- **分布式架构**:Codis通过Proxy代理层实现了客户端与多个Redis实例之间的透明通信,使得客户端无需感知后端Redis集群的结构变化。 - **动态扩容/缩容**:Codis支持在线添加或删除Redis节点,无需停机,保证业务...
这些工具极大地简化了集群的部署和维护工作。 6. Key限制: 描述中提到的"key最多只支持1024*1024个"可能指的是单个Redis实例的限制,而非Codis框架本身的限制。在分布式环境中,Codis可以通过多实例分片来突破...
### Redis数据库集群部署知识点详解 #### 一、Redis简介与特性 **Redis**(Remote Dictionary Server)是一款开源的键值(key-value)存储系统,它以其卓越的性能和灵活性,在众多NoSQL数据库中脱颖而出。Redis主要...
3. **Redis集群解决方案Codis**: Codis是专门针对Redis设计的集群管理工具,它提供了完整的集群部署、运维和扩展能力,帮助用户轻松管理和维护大规模Redis集群。 **内容详解** 1. **Codis架构**:Codis由三部分...