Redis集群方案一 Redis cluster

------------------------------------------------------------------------


                                              ####环境配置####
yum install ruby
yum install rubygems
gem install redis


-------------------------------------------------------------------------
                                            
             ####集群创建####
自制集群nodes启动脚本
bash /home/yangshengzhi/redis_cluster/kill_restart_redisnode.sh


集群创建    ./redis-trib.rb create --replicas 1 10.3.254.79:6391 10.3.254.79:6392 10.3.254.79:6393 10.3.254.79:6394 10.3.254.79:6395 10.3.254.79:6396
注:redis_cluster集群至少需要3个节点,三个都是主,但最好再另加三个从,使集群高可用


-------------------------------------------------------------------------


                                           ####集群nodes客户端####
redis-cli -c -p 6391


命令
redis-cli -c -p 6391 cluster nodes      : 显示当前所有节点信息(node ID, ip:port, role, master, status, slot...)
./redis-trib.rb check 127.0.0.1:7000    : 检查集群是否运行顺利
CLUSTER FAILOVER                        : 手动failover,但必须在想要failover的主的从客户端进行


-------------------------------------------------------------------------


                                             #####添加新节点#####


添加主节点到集群:
./redis-trib.rb add-node 127.0.0.1:7006[新节点] 127.0.0.1:7000[集群中任意一个节点]


添加从节点到集群中的某个主(其从的数量相对较少)
./redis-trib.rb add-node --slave 127.0.0.1:7006[新节点] 127.0.0.1:7000[集群中任意一个节点]


添加从到某个指定的主
./redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 127.0.0.1:7006 127.0.0.1:7000 


在空主(还没有分配slot)客户端中,利用客户端命令将新添加的空主添加到指定的主上变成从
或者将任意从,重新添加到其他的主上
cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e


                                              #####删除节点#####


删除从节点或者空主
./redis-trib del-node 127.0.0.1:7000(集群中任意一个节点) `<node-id>`(欲删除的节点的node ID)   


删除有数据的主
1、先failover,再删除变成从的主
2、先reshared,将数据转移到其他主上,再删除该主


-------------------------------------------------------------------------


                                            ####需要注意的地方####


1、配置项cluster-slave-validity-factor 如果设置为0,无论cluster-node-timeout设置的失联超时时间是多少,从总会尝试对主进行failover。如果设置为正数,最大失联时间为cluster-slave-validity-factor * cluster-node-timeout,如果节点为从,当与主失联时间超过该值时就不再进行failover。
注意:当主挂掉后如果没有从对其进行故障转移,整个集群都会瘫痪,这种情况下,只有挂掉的主重新启动加入集群,集群才会恢复可用。


2、cluster-migration-barrier 用于保障当主挂掉后,又没有自己的从进行故障转移,集群会自动从其他主的从上摘一个下来,但前提是其他主的从剩余个数至少为cluster-migration-barrier,或者当某个主的从挂了,集群也会自动进行从转移。


3、cluster-require-full-coverage  如果设置为yes,当一定比例的slot没有节点覆盖时,集群就不再接受写。
   如果设置为no, 集群不去管slot是否被全部覆盖。


4、手动进行failover比master真正挂掉后再进行failover更加安全


-------------------------------------------------------------------------


                                            ####Redis集群优缺点#####


优点:
1、利用分槽实现多个主写,分散读写负载压力,提高了响应速度。
2、因为数据分散,从的数据持久化速度更快。
3、集群支持运行时分槽(可以用脚本实现,更智能),提高了分布式数据库服务器集群的伸缩性和负载能力。
4、支持自动replica migration(从转移),提高了集群的高可用性。


缺点:
1、当前没有C或C++的client库,需要自己写客户端。
2、节点较多,至少需要部署3个集群节点,其中3个都是主。但官网建议,最好再加3个从,共6个节点。
3、当有一个主挂掉又没有从进行故障转移时,集群就瘫痪了。可以设置cluster-require-full-coverage 为no,使集群能够继续处理其他节点覆盖的slot
4、不支持跨槽的多key操作,事物处理;当手工分槽时,同一个node中的多key操作会不可用。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值