
新哨兵(Sentinel N)加入集群时,并不需要预先知道其他哨兵的 IP 地址,它只通过配置文件获知 主库(Master) 的地址。
INFO 等命令。__sentinel__:hello。__sentinel__:hello 频道发送一条消息,包含自己的 IP、端口、ID 以及它对主库状态的感知。INFO replication 命令获取所有从库(Slave)的列表。哨兵的下线通常是通过心跳超时被其他节点感知的。
PING 命令。down-after-milliseconds 时间内没有收到 Sentinel B 的有效回复,Sentinel A 会在内部将其标记为下线。这是保证高可用的核心。当主库故障,哨兵集群完成领头选举和故障转移(Failover)后,需要将新主库地址通知给客户端。
客户端在初始化时,不仅会通过哨兵获取主库地址,还会向哨兵订阅特定的频道(Channels)。
+switch-master 频道(主库切换)和 +reboot 等频道。+switch-master <master-name> <old-ip> <old-port> <new-ip> <new-port>new-ip 和 new-port 重建连接池,指向新的主库。get-master-addr-by-name 请求来获取最新地址。动作 | 核心机制 | 关键路径 |
|---|---|---|
哨兵发现 | Pub/Sub | 监听主库的 __sentinel__:hello 频道 |
实例监控 | PING (心跳) | 哨兵与所有节点建立命令连接 |
通知客户端 | Pub/Sub | 客户端监听哨兵的 +switch-master 频道 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。