CLUSTERDOWN The cluster is down in redis

时间:2018-12-03 12:52:37

标签: caching redis

I am running 6 redis nodes ,3 masters and 3 slaves , every master has 1 slave .

Master[0] -> Slots 0 - 5460

Master[1] -> Slots 5461 - 10922

Master[2] -> Slots 10923 - 16383

Adding replica 172.17.0.5:6382 to 172.17.0.2:6379

Adding replica 172.17.0.6:6383 to 172.17.0.3:6380

Adding replica 172.17.0.7:6384 to 172.17.0.4:6381

The clustering is running and I can SET and GET Keys.

I shutdown master1 172.17.0.2:6379 , slave1 (172.17.0.5:6382) has became master ,cluster is still running .

I shutdown slave1 (172.17.0.5:6382) , I tried to SET keys I have got this error

(error) CLUSTERDOWN The cluster is down

What I expected when I shutdown master1 and slave1 , cluster will still running and accepts redis operations but the opposite has happened.

What is the reason behind this ?

Is it applicable to solve this problem without starting master1 or slave1 again ?

1 个答案:

答案 0 :(得分:1)

由于某些插槽存储在master1和slave1中,如果两个插槽均关闭,则群集中的任何节点将不再覆盖这些插槽。发生这种情况时,默认情况下,群集已关闭。您可以通过更改cluster-require-full-coverage选项来修改行为。

引用redis.conf

  

默认情况下,Redis群集节点如果检测到,则停止接受查询   至少发现一个哈希槽(没有可用的节点正在服务   它)。这样,如果群集部分关闭(例如,   不再覆盖哈希槽),所有集群最终成为   不可用。它会在所有   插槽再次被盖住。

     

但是有时您希望集群的一部分工作,   继续接受对键空间部分的查询,即   仍然覆盖。为此,只需设置   将cluster-require-full-coverage选项设置为no。

     

cluster-require-full-coverage是

更新

通常,为了确保覆盖所有插槽,您可以使用N个主服务器和N + 1个从属服务器设置集群。然后为每个主机分配一个从机,即N -> N。额外的从站可以从随机主站复制数据。当您的主机之一发生故障时,相应的从机将成为新的主机。然后,您可以使额外的从属服务器从新的主服务器复制数据。

总之,您必须确保每个主机在任何时候都至少具有一个从机。

相关问题