0

我们有一个包含许多 redis (2.8) 服务器(比如说 4 个)和尽可能多的 redis 哨兵的设置。在每台机器启动时,我们通过命令行将预选机器设置为主机,其余机器设置为从机。哨兵都监视着这些机器。客户端首先连接到本地哨兵并检索主服务器的 IP 地址,然后在那里连接。

这种设置大部分时间都没有问题,但有时哨兵与服务器不同步。如果我将机器命名为 A、B、C 和 D - 哨兵会认为 B 是主服务器,而 redis 服务器都连接到 A 作为主服务器。关闭 B 上的 redis 服务器也无济于事。我不得不将其关闭并在 A 上手动“Sentinel 故障转移”来解决问题。问题是 1. 是什么原因导致这种情况发生,解决这个问题的最简单和最快的方法是什么?2. 什么是最好的配置——还有比这更好的吗?

4

1 回答 1

1

您唯一应该设置大师的时间是第一次。一旦哨兵接管了复制的管理,你应该让它去做。这包括重新启动。不要使用命令行来设置复制。让 sentinel 和 redis 管理它。这就是你遇到问题的原因——你告诉 sentinel 它是权威的,但是你告诉 Redis 服务器忽略 sentinel。

Sentinel 将状态存储在其配置文件中,因此当它重新启动时,它可以恢复上一次配置。所以即使在重新启动时,让哨兵完成它的工作。

此外,如果您有 4 台服务器(具体而言,不是“假设”),您应该在 sentinel 的监控语句中运行 3 台法定人数。法定人数为两个,您可以与两个主人结束

于 2015-03-28T00:34:06.800 回答