6

我有以下哨兵部署 - 不同服务器上的 3 个 redis 实例,每台服务器上的 3 个哨兵。

现在,我意识到当前的master没有太多内存,所以我在这个特定的服务器上停止了sentinel和redis实例。并在新机器上做了同样的设置。所以,我仍然有相同的部署,3 个 redis 实例和 3 个哨兵。

问题是,现在哨兵说,主服务器已关闭,因为他们认为主服务器是我删除的服务器。我应该怎么做才能告诉哨兵它不需要在循环中包含该服务器。

4

1 回答 1

8

从有关 Redis Sentinel 的文档中,在添加或删除 Sentinel章节下:

删除哨兵有点复杂:哨兵永远不会忘记已经见过的哨兵,即使它们很长一段时间都无法访问,因为我们不想动态更改授权故障转移和创建新配置所需的多数数字。因此,为了删除 Sentinel,应在没有网络分区的情况下执行以下步骤:

  1. 停止要删除的 Sentinel 的 Sentinel 进程。
  2. 向所有其他 Sentinel 实例发送SENTINEL RESET *命令(如果您只想重置单个主实例,则可以使用确切的主实例名称代替 *)。一个接一个,实例之间至少等待 30 秒。
  3. 通过检查每个 Sentinel 的输出,检查所有 Sentinel 是否同意当前活动的 Sentinel 数量SENTINEL MASTER mastername

更远:

删除旧的 master 或无法访问的 slave。

哨兵永远不会忘记给定主人的奴隶,即使他们很长一段时间都无法到达。这很有用,因为 Sentinel 应该能够在网络分区或故障事件后正确重新配置返回的从站。

此外,在故障转移之后,故障转移的主节点实际上被添加为新主节点的从节点,这样一旦它再次可用,它将被重新配置为与新主节点进行复制。

但是,有时您想从 Sentinel 监控的从属列表中永久删除一个从属(可能是旧的主控)。

为此,您需要向SENTINEL RESET mastername所有 Sentinel 发送命令:它们将在接下来的 10 秒内刷新从属列表,仅添加列出为从当前主INFO输出正确复制的那些。

于 2016-02-29T12:26:26.457 回答