【问题标题】:Why when the master node of redis sentinel setup go down one of the slave doesn't become master?为什么当redis sentinel setup的主节点宕机时,其中一个slave没有成为master?
【发布时间】:2020-12-31 17:27:31
【问题描述】:

当主节点宕机时,其他节点仍然是从节点,我无法写入。我正在使用 HAProxy 连接到 redis 节点,

我认为 slves 中的一个节点将成为主节点,hte web 应用程序将能够对其进行写入,但从属节点仍然是从属节点,我无法向它们写入

【问题讨论】:

    标签: redis redis-sentinel


    【解决方案1】:

    只有在可以达到哨兵之间的仲裁时,才会发生故障转移。在这种情况下,quorum 是在发生故障转移之前必须同意主节点已关闭(或无法访问)的哨兵数量。

    达到法定人数后,将选择法定人数的其中一个哨兵来启动故障转移过程。该哨兵向所有连接的哨兵请求授权以执行故障转移。大多数哨兵必须授权故障转移才能发生。

    启动故障转移所需的法定人数是可配置的。当你注册一个哨兵来监控一个master时,你必须给它quorum值:sentinel monitor <master-group-name> <ip> <port> <quorum>。这条线在你的每个哨兵中应该是相同的。您可以通过在每个哨兵上运行此命令在运行时更改仲裁:SENTINEL SET objects-cache-master quorum new_quorum_num

    要检查当前的法定人数,请登录您的哨兵之一并运行 ckquorum 命令。您将需要哨兵监控的主名称。您可以使用以下命令检索受监控的主服务器列表:

    sentinel masters
    

    并在结果中寻找您需要的主人的“姓名”字段。获得主名称后,您可以检查法定人数:

    sentinel ckquorum master_name
    

    如果可以达到法定人数,结果将类似于 OK 3 usable Sentinels. Quorum and failover authorization can be reached。` 如果您收到无法达到法定人数的消息,则无法启动故障转移。

    您用于仲裁的值很重要,文档中有一些关于如何设置它的指南:

    来自算法和内部部分 (https://redis.io/topics/sentinel#quorum):

    1. 如果 quorum 设置为小于我们部署的大多数 Sentinel 的值,我们基本上会让 Sentinel 对主节点故障更加敏感,即使只有少数 Sentinel 不再能够说话,也会触发故障转移和主人一起。
    2. 如果 quorum 设置为大于大多数 Sentinel 的值,我们使 Sentinel 仅在有大量(大于大多数)连接良好的 Sentinel 同意主节点关闭时才能进行故障转移。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 2012-08-11
      • 2016-04-30
      • 2020-10-08
      • 2016-01-21
      • 2016-04-15
      • 2016-09-28
      • 2020-08-30
      相关资源
      最近更新 更多