上一节,我们用三台redis组成了cluster,现在我们停掉一台试试:
比较奇怪的是,在停掉其中一台服务器之前建立的链接仍然可以正常执行命令,当我们断开重连时,命令就都被拒绝了:
什么时候整个集群不可用(cluster_state:fail
)?
如果集群任意master
挂掉,且当前master
没有slave
.集群进入fail
状态,也可以理解成集群的slot
映射[0-16383
]不完整时进入fail状态.
redis-3.0.0.rc1
加入cluster-require-full-coverage
参数,默认关闭,打开集群兼容部分失败.
如果集群超过半数以上master
挂掉,无论是否有slave
,集群进入fail
状态.
为了验证这个说法我们给每个实例配一个slave。
7004 是7000的slave 7005是7001的slave 7003是7002的slave
我们停掉7000,观察7004的日志:
除此之外可以从各个实例上看到类似的日志
观察到
Cluster state chage有一个从fail到ok的过程。
通过客户端重连可以验证集群当前是可用的状态
info查看下当前集群的情况
./redis-cli --cluster info 127.0.0.1:7004
用check好想能看到更详细的主从信息:
我们重启7000会不会重新rebalance呢:
7000重新加入了cluster 并且成为了7004的slave 又点厉害
试试挂掉一对主从:
不可用了,应该是验证了:“如果集群任意master
挂掉,且当前master
没有slave
.集群进入fail
状态,也可以理解成集群的slot
映射[0-16383
]不完整时进入fail状态. ”:
恢复之前的master 现在我们直接挂掉2台master 试试:
崩掉了 看来剩下的2台slave并没有切换成master,难道是互为sentinel吗。
cluster info 可以查看集群信息
看一下生产某个集群:
8个master 每个一个从节点16个实例
手机扫一扫
移动阅读更方便
你可能感兴趣的文章