我正在尝试设置redis-sentinel配置以获得故障转移支持。这是我的配置,

machine1 : IP : 10.0.0.1 6379 with redis-sentinel port 26379
machine2 : IP : 10.0.0.2 6379 with redis-sentinel port 26379
machine3 : IP : 10.0.0.3 6379 with redis-sentinel port 26379

Redis哨兵配置

机器1:
sentinel monitor mymaster 10.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

机器2:
sentinel monitor mymaster 10.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

机器3:
sentinel monitor mymaster 10.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

将机器2和机器3添加为机器1的从设备。复制工作正常,但是当机器1关闭时,其他机器就不会发生主控切换。他们仍然充当奴隶。我的设置是否存在任何配置问题?

最佳答案

在我可以给出更好的答案之前,一些问题:

  • redis实例上是否运行身份验证?
  • 哨兵是否真的检测到了 pods 的拓 flutter ?

  • 如果以上哨兵配置完成,则哨兵实际上尚未连接到主机。 Sentinel重写配置文件以存储发现的拓 flutter ,因此最初配置它时会附带发现的拓 flutter 。特别是,我们还将看到从属条目。

    另一种可能性是,没有足够的前哨达到法定人数,没有成功连接到主服务器。如果Redis配置为需要身份验证,则还需要使用sentinel set命令告诉哨兵身份验证 token 。

    如果您可以发布完整的配置,以及在关闭主服务器时发布的前哨日志,我们可以提供更具体的操作。

    与此相关的是,在生产中,我建议不要使用这种设置。有了它,您就可以解决所谓的裂脑问题。如果主机所在的计算机与其他主机隔离,但仍在运行,则另外两个将选举一个新的主机,此时您将拥有两个主机。如果客户端仍然能够连接到主模块,则现有连接将保留在原始连接上,但是使用哨兵获取主服务器的新连接将连接到第二个主服务器。

    通过在不同的计算机上运行标记,可以降低这种风险。如果您的客户端计算机数量有限并且可以在其中运行哨兵,则几乎可以完全消除这种可能性。

    10-02 08:34