Redis Cluster集群安装配置详解

Redis从3.0版本开始支持cluster模式,集群至少需要三个主节点和三个从节点,生产环境部署时要保证主从在不同服务器,避免单点故障,实现集群高可用。
其结构特点:
     1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
     2、节点的fail是通过集群中超过半数的节点检测失效时才生效。
     3、客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
     4、redis-cluster把所有的物理节点映射到[0-16383]slot上(不一定是平均分配),cluster 负责维护node<->slot<->value。

     5、Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。



Redis服务器说明
10.199.194.14 6379
10.199.194.14 6380
10.199.194.14 6381
  
10.199.194.14 6382
10.199.194.14 6383
10.199.194.14 6384

部署步骤
1、编译安装redis, 安装目录:/apps/svr
cd /apps/svr
tar -zxf redis-3.0.5.tar.gz
cd redis-3.0.5
make && make install

2、创建redis集群节点
mkdir /apps/svr/redis_cluster
cd /apps/svr/redis_cluster
mkdir 6379 6380 6381 6382 6383 6384

3、复制默认的节点配置文件到集群节点中
cp /apps/svr/redis-3.0.5/redis.conf /apps/svr/redis_cluster/6379

4、修改默认配置文件
[root@testdb-5qvnf 6379]# vim /apps/svr/redis_cluster/6379/redis.conf
daemonize yes                              //redis后台运行
pidfile /var/run/redis_6379.pid            //pidfile文件对应6379
port 6379                                  //端口6379
cluster-enabled yes                        //开启集群 把注释#去掉
cluster-config-file nodes-6379.conf        //集群的配置 配置文件首次启动自动生成
cluster-node-timeout 6000                  //请求超时
appendonly yes                             //日志开启,环境测试开启,正式环境建议关闭
bind 10.199.194.14                         //修改监听的地址为本机地址

5、修改完后把配置文件复制到7001上并修改相应的端口
[root@testdb-5qvnf 6379]# cp /apps/svr/redis_cluster/6379/redis.conf /apps/svr/redis_cluster/6380
[root@testdb-5qvnf 6379]# cp /apps/svr/redis_cluster/6379/redis.conf /apps/svr/redis_cluster/6381
[root@testdb-5qvnf 6379]# cp /apps/svr/redis_cluster/6379/redis.conf /apps/svr/redis_cluster/6382
[root@testdb-5qvnf 6379]# cp /apps/svr/redis_cluster/6379/redis.conf /apps/svr/redis_cluster/6383
[root@testdb-5qvnf 6379]# cp /apps/svr/redis_cluster/6379/redis.conf /apps/svr/redis_cluster/6384

6、启动各个节点,并检查是否正常启动

redis-server /apps/svr/redis_cluster/6379/redis.conf &
redis-server /apps/svr/redis_cluster/6380/redis.conf &
redis-server /apps/svr/redis_cluster/6381/redis.conf &
redis-server /apps/svr/redis_cluster/6382/redis.conf &
redis-server /apps/svr/redis_cluster/6383/redis.conf &
redis-server /apps/svr/redis_cluster/6384/redis.conf &


查看启动进程

[root@testdb-5qvnf 6379]# ps -ef|grep redis
root     31862     1  0 16:22 ?        00:00:00 redis-server 10.199.194.14:6379 [cluster]           
root     31881     1  0 16:23 ?        00:00:00 redis-server 10.199.194.14:6380 [cluster]           
root     31882     1  0 16:23 ?        00:00:00 redis-server 10.199.194.14:6381 [cluster]           
root     31883     1  0 16:23 ?        00:00:00 redis-server 10.199.194.14:6382 [cluster]           
root     31884     1  0 16:23 ?        00:00:00 redis-server 10.199.194.14:6383 [cluster]           
root     31894     1  0 16:23 ?        00:00:00 redis-server 10.199.194.14:6384 [cluster]    

8、创建集群
创建集群命令需要以下软件支持
#安装ruby
yum install ruby -y 
#安装相关组件
gem install redis


确认所有的节点都启动后, 执行创建集群命令
/apps/svr/redis-3.0.5/src/redis-trib.rb create --replicas 1 10.199.194.14:6379 10.199.194.14:6380 10.199.194.14:6381 10.199.194.14:6382 10.199.194.14:6383 10.199.194.14:6384

查看redis集群状态
/apps/svr/redis-3.0.5/src/redis-trib.rb check 10.199.194.14:6379


测试redis集群
# redis-cli -c -p 6379 -h 10.199.194.14
10.199.194.14:6379> set hello world
10.199.194.14:6379> get hello

查看进程
[root@testdb-5qvnf /]# ps aux |grep redis          
root      2629  0.0  0.0 103244   864 pts/0    S+   10:17   0:00 grep redis
root     31862  0.0  0.4 137444  9536 ?        Ssl  May26   0:57 redis-server 10.199.194.14:6379 [cluster]           
root     31881  0.0  0.4 137444  9532 ?        Ssl  May26   0:56 redis-server 10.199.194.14:6380 [cluster]           
root     31882  0.0  0.4 137444  9536 ?        Ssl  May26   0:57 redis-server 10.199.194.14:6381 [cluster]           
root     31883  0.0  0.3 137444  7664 ?        Ssl  May26   0:54 redis-server 10.199.194.14:6382 [cluster]           
root     31884  0.0  0.3 137444  7420 ?        Ssl  May26   0:55 redis-server 10.199.194.14:6383 [cluster]           
root     31894  0.0  0.3 137444  7412 ?        Ssl  May26   0:54 redis-server 10.199.194.14:6384 [cluster] 

[root@testdb-5qvnf /]# kill -9 31862   //关闭6379端口,看数据会不会丢失  


查看集群情况,发现变成了3主2从

/apps/svr/redis-3.0.5/src/redis-trib.rb check 10.199.194.14:6380
Connecting to node 10.199.194.14:6380: OK
Connecting to node 10.199.194.14:6384: OK
Connecting to node 10.199.194.14:6383: OK
Connecting to node 10.199.194.14:6382: OK
Connecting to node 10.199.194.14:6381: OK


[root@slave2 redis]# redis-cli -c -p 6380 -h 10.199.194.14
192.168.10.219:6379> get hello  


三 集群管理

  1. 查看集群情况
    redis-trib.rb check 127.0.0.1:7000
  2. 添加主节点,将新节点7006添加到集群
    redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000
  3. 添加子节点,分配给最少从节点的主节点(执行以下命令如果提示Node 10.199.194.14:6380 is not empty,则先登录该节点清空数据(flushdb),再执行以下命令)
    redis-trib.rb add-node --slave 127.0.0.1:7006 127.0.0.1:7000
  4. 添加子节点,指定主节点
    redis-trib.rb add-node --slave --<master-id> 127.0.0.1:7006 127.0.0.1:7000
  5. 重新分配槽
    redis-trib.rb reshard --from <node-id> --to <node-id> --slots <number_of_slots> --yes <host:port>
  6. 数据导入
    redis-trib.rb import --from <host:port> <host:port>
  7. 删除节点(移除主节点,要求主节点为空,即移除前要先将槽移动到其他节点)
    redis-trib.rb del-node 127.0.0.1:7000 <node-id>



参考文档:Redis Cluster搭建
http://blog.51yip.com/nosql/1725.html
https://wuguiyunwei.com/?p=347
http://zhuangdaxin.me/archives/133.html
http://www.10tiao.com/html/345/201701/2651824992/1.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值