【问题标题】:Redis sentinel doesn't auto-discover other sentinelsRedis 哨兵不会自动发现其他哨兵
【发布时间】:2016-06-25 23:39:45
【问题描述】:

我已将 redis 配置为具有两个从属设备的主设备,每个从设备位于一个单独的盒子上。我还在每个盒子上运行了一个哨兵进程。这是此处文档中描述的设置:

http://redis.io/topics/sentinel#example-2-basic-setup-with-three-boxes

每个哨兵都可以连接到我的主人,并且可以看到奴隶。他们能够独立检测主设备或从设备是否出现故障。问题是哨兵无法检测到对方。

我已验证每个哨兵都按预期向__sentinel__:hello 频道发布消息,但似乎他们都没有真正收到来自其他人的消息。

如何让哨兵互相看到?

【问题讨论】:

    标签: redis redis-sentinel


    【解决方案1】:

    在配置哨兵时,我配置了一次哨兵,然后将该配置文件复制到所有其他人。

    在复制配置之前,我必须启动 sentinel 并使用如下 id 重新编写配置文件:

    sentinel myid c766a0df56e72eda48cea984
    

    当我将文件复制到其他哨兵时,它会导致它们中的每一个都具有相同的 id,这反过来又会导致它们忽略来自具有相同 id 的自动发现的任何消息。从每个配置文件中删除 myid 行并重新启动每个哨兵进程解决了这个问题。

    【讨论】:

    • 得到同样的问题,删除myid后修复
    • 出于某种原因,我认为所有哨兵都应该具有相同的 id。我有同样的问题,删除这条线后它工作了! :)
    【解决方案2】:

    在所有 redis-sentinel.conf 文件中使用相同的 myid 是一个问题,但即使我的 id 不同,我也遇到了问题(runid 在前哨主控 mymaster 结果中显示“”)

    我的问题源于我的哨兵方式绑定到本地主机(127.0.0.1)和私有(或公共)IP

    我相信发现的 IP 是 127.0.0.1(因为它是配置中的第一个),因此对于接收消息的其他哨兵来说,这意味着其他哨兵与自己相同(即使它有不同的myid)

    文档说:

    在向主节点添加新哨兵之前,哨兵始终检查是否已经存在具有相同 runid相同地址(ip 和端口对)的哨兵。在这种情况下,所有匹配的哨兵都会被删除,并添加新的。

    设置 sentinel announce-ip <ip> 或删除绑定命令到 127.0.0.1 修复了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 2021-02-27
      相关资源
      最近更新 更多