繁体   English   中英

CLUSTERDOWN 集群宕机 redis

[英]CLUSTERDOWN The cluster is down in redis

我正在运行 6 个 redis 节点,3 个主节点和 3 个从节点,每个主节点有 1 个从节点。

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

集群正在运行,我可以设置和获取密钥。

我关闭master1 172.17.0.2:6379,slave1(172.17.0.5:6382)已经成为master,集群还在运行。

我关闭了 slave1 (172.17.0.5:6382),我试图设置键我有这个错误

(error) CLUSTERDOWN 集群宕机

当我关闭 master1 和 slave1 时,我所期望的是,集群仍将运行并接受 redis 操作,但相反的情况发生了。

这背后的原因是什么?

不重新启动master1或slave1是否适用于解决这个问题?

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

引用redis.conf

默认情况下,如果Redis Cluster节点检测到至少发现一个哈希槽(没有可用的节点正在为其提供服务),它们将停止接受查询。 这样,如果集群部分关闭(例如,不再覆盖哈希槽的范围),则所有集群最终将变得不可用。 再次覆盖所有插槽后,它将自动返回可用状态。

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

集群要求完整覆盖是

更新

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

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

我去了 redis-cluster configs,在每个 redis.conf 中,我将 cluster-enabled 更改为 no 而不是 yes。 这对我行得通。

例子:

port 7005
cluster-enabled no
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
logfile "redis.log"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM