如果集群模式中 其中一个集群对应的master 和slave 都宕机,那么整个集群会进入fail模式,不对外提供服务?其实是由参数cluster-require-full-coverage控制!
1、先关闭7001的slave节点,然后关闭7001实例,这个时候如下所示:
172.16.196.72:7002> cluster nodes
80aaf55a3855d8fe1531189dac52e7be133c23b6 172.16.196.72:7002@17002 myself,master - 0 1670921700000 1 connected 5462-10922
02e1a0b030e84b464e50341f753cafeb77d3e20f 172.16.196.72:7003@17003 master - 0 1670921701000 2 connected 10923-16383
6af9846504361edaf86cdcfd2fd09dc425b7b26d 172.16.196.72:7004@17004 slave 02e1a0b030e84b464e50341f753cafeb77d3e20f 0 1670921701348 3 connected
20bb5db1495e50b830ebe19942b6ff3efd6f49ba 172.16.196.72:7006@17006 slave,fail f6f56d07b57ccbca269d435fc9aeba794d4b8e41 1670921675632 1670921674229 5 disconnected
7e22d642f2361a064be9ea3c9855e71c258aa9b9 172.16.196.72:7005@17005 slave 80aaf55a3855d8fe1531189dac52e7be133c23b6 0 1670921700000 4 connected
f6f56d07b57ccbca269d435fc9aeba794d4b8e41 172.16.196.72:7001@17001 master,fail - 1670921675632 1670921673226 0 disconnected 0-5461
2、尝试写数据:发现报错,此时集群已经不提供服务了!
172.16.196.72:7002> set liuwenhe liu
(error) CLUSTERDOWN The cluster is down
172.16.196.72:7002>
3、其实该特性由参数cluster-require-full-coverage控制;
当该参数为yes时(默认为yes),如果某个master以及它的slave都死了,那么集群就不提供服务了,
但是如果参数设置为 no,那么此时集群剩余的master节点是可以提供服务的,但是当尝试写到已经down机的master节点时候,就会报错,
具体如下所示:
1)该参数默认值为yes
172.16.196.72:7002> config get cluster-require-full-coverage
- "cluster-require-full-coverage"
- "yes"
2)修改参数为no
172.16.196.72:7002> config set cluster-require-full-coverage no
OK
172.16.196.72:7002> config get cluster-require-full-coverage
- "cluster-require-full-coverage"
- "no"
3)再次尝试写入key,发现可以了
172.16.196.72:7002> set liuwenhe liu
OK
4)尝试写到已经down机的master节点时候,就会报错
172.16.196.72:7002> set liuwenhe1 liu
-> Redirected to slot [2299] located at 172.16.196.72:7001
Could not connect to Redis at 172.16.196.72:7001: Connection refused
Could not connect to Redis at 172.16.196.72:7001: Connection refused