gpt4 book ai didi

Redis 集群故障转移 : slave won't become master

转载 作者:IT王子 更新时间:2023-10-29 06:13:15 24 4
gpt4 key购买 nike

我试图在集群故障转移期间测试我的软件行为,因此我想配置一个最简单的集群:一个主节点和两个从节点。我有以下内容的树文件 7000.conf - 7002.conf:

port 7000
cluster-config-file nodes.7000.conf
appendfilename appendonly.7000.aof
dbfilename dump.7000.rdb
pidfile /var/run/redis_7000.pid

include cluster.conf

cluster.conf的内容:

cluster-enabled yes
appendonly yes
maxclients 100
daemonize yes
cluster-node-timeout 2000
cluster-slave-validity-factor 0

然后我配置了 7000 运行从 0 到 16383 的所有槽,7001 和 7002 是 7000 的副本:

XXX 127.0.0.1:7002 slave YYY 0 1511389011347 4 connected
YYY 127.0.0.1:7000 myself,master - 0 0 4 connected 0-16383
ZZZ 127.0.0.1:7001 slave YYY 0 1511389011246 4 connected

然后我尝试通过 shutdown 命令或通过终止进程来摆脱 7000。其中一个奴隶应该将自己提升为主人,但没有人这样做:

ZZZ 127.0.0.1:7001 slave YYY 0 0 3 connected
YYY 127.0.0.1:7000 master,fail? - 1511389104442 1511389103933 4 disconnected 0-16383
XXX 127.0.0.1:7002 myself,slave YYY 0 1511389116543 4 connected

我等了几分钟,我的奴隶不想成为主人。如果我通过 cluster failover takeover 强制一个 slave 成为 master,它会非常乐意这样做(如果我重新启动 master,它就会变成 slave),但不是自动的。

我试过使用 cluster-node-timeout - 没有帮助。

我做错了什么吗? Redis版本为3.2.11。

最佳答案

问题是 redis-cluster 的最小大小为 3 个主节点才能使自动故障转移正常工作。主节点相互监视并检测故障转移,因此在集群中只有一个主节点时,没有正在运行的进程能够检测到您的主节点已关闭。最少三个,是为了确保在任何节点宕机的情况下,整个集群的大多数都需要同意,所以至少你需要 3 个节点,仍然有超过一半的节点达到多数失败时查看。

Redis 集群教程在以下部分提到了这一点:https://redis.io/topics/cluster-tutorial#creating-and-using-a-redis-cluster

"Note that the minimal cluster that works as expected requires to contain at least three master nodes."

关于Redis 集群故障转移 : slave won't become master,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47444797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com