获取redis master哨兵

Get redis master sentinels

我正在尝试获取当前正在监视 redis master 的所有哨兵的列表。

我知道如果我有一个 sentinel 我可以使用 sentinel sentinels mymaster 但是如果我没有任何一个 Sentinel 的地址我该如何获取它们?

没有从 master/slave 节点获取哨兵列表的直接命令。要获取哨兵列表,您需要订阅任何节点的pub/sub(主从无关)“__sentinel__:hello”频道并等待消息。通过该 hello 通道的消息来自正在侦听该集群的哨兵。如果你解析这些,你就会得到哨兵的地址。消息的格式为:"sentinel_ip,sentinel_port,sentinel_runid,sentinel_current_epoch,master_name,master_ip,master_port,master_config_epoch"(例如 127.0.0.1,26380,07fabf3cbac43bcc955588b1023f95498b58f8f2,16,mymaster,127.0.0.1,6381,16)。参见:https://redis.io/topics/sentinel#sentinels-and-slaves-auto-discovery about sentinel details. If you need more to know about how sentinel works, take a look at https://github.com/antirez/redis/blob/unstable/src/server.c

为了进一步了解此实例,您可能需要尝试以下两个命令:

SENTINEL slaves mymaster
SENTINEL sentinels mymaster

https://redis.io/topics/sentinel#asking-sentinel-about-the-state-of-a-master