ITPub博客

首页 > 数据库 > NoSQL > redis cluster集群死一个master剩下的master节点还能提供服务吗

redis cluster集群死一个master剩下的master节点还能提供服务吗

原创 NoSQL 作者:贺子_DBA时代 时间:2022-12-18 19:29:39 0 删除 编辑
如果集群模式中 其中一个集群对应的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
  1. "cluster-require-full-coverage"
  2. "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
  1. "cluster-require-full-coverage"
  2. "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

但是注意: redis cluster切换的过程中,也会存在短暂的时间内(参数 cluster-node-timeout设置),集群master节点部分不可用 ,这段时间内还会提供读写服务吗?

切换的过程中cluster是可以部分提供服务,也就是例如三主三从,其中一个master1死了,集群需要等待cluster-node-timeout时间,才会选择新的master1,那么这段时间内,不管你设置的是 cluster-require-full-coverage是yes或者no,集群的剩余master2和master3是可以继续提供服务的,但是当你尝试写入故障的master1节点的时候,就会报错!



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29654823/viewspace-2928500/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
10年数据库管理员从业经历,熟悉Oracle、mysql、tidb、oceanbase、redis、 mongodb 、python等技术栈,持有11g ocm 、mysql 5.7 ocp 、tidb 5.0 ptcp、tidb 6.0 ptca、oceanbase obcp等

注册时间:2014-05-12

  • 博文量
    327
  • 访问量
    2148945