哨兵机制(sentinel)的原理

📅 发布时间:2026/7/13 7:00:42 👁️ 浏览次数:
哨兵机制(sentinel)的原理
Redis哨兵机制是通过在独立的哨兵节点上运行特定的哨兵进程来实现的。这些哨兵进程监控主从节点的状态并在发现故障时自动完成故障发现和转移并通知应用方实现高可用性。以下是哨兵机制的工作原理1. 哨兵选举在启动时每个哨兵节点会执行选举过程其中一个哨兵节点被选为领导者leader负责协调其他哨兵节点。a. 选举过程每个在线的哨兵节点都可以成为领导者每个哨兵节点会向其它哨兵发is-master-down-by-addr命令征求判断并要求将自己设置为领导者当其它哨兵收到此命令时可以同意或者拒绝它成为领导者如果哨兵发现自己在选举的票数大于等于num(sentinels)/21时将成为领导者如果没有超过继续选举。2. 监控主从节点哨兵节点通过发送命令周期性地检查主从节点的健康状态包括主节点是否在线、从节点是否同步等。如果哨兵节点发现主节点不可用它会触发一次故障转移。3. 故障转移一旦主节点被判定为不可用哨兵节点会执行故障转移操作。它会从当前的从节点中选出一个新的主节点并将其他从节点切换到新的主节点。这样系统可以继续提供服务而无需人工介入。a. 故障转移过程由Sentinel节点定期监控发现主节点是否出现了故障 sentinel会向master发送心跳PING来确认master是否存活如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息那么这个sentinel会主观地(单方面地)认为这个master已经不可用了。确认主节点过滤掉不健康的下线或断线没有回复过哨兵ping响应的从节点选择从节点优先级最高的选择复制偏移量最大此指复制最完整的从节点当主节点出现故障 由领导者负责处理主节点的故障转移。4. 客户端重定向哨兵节点会通知客户端新的主节点的位置使其能够与新的主节点建立连接并发送请求。这确保了客户端可以无缝切换到新的主节点继续进行操作。此外哨兵节点还负责监控从节点的状态。如果从节点出现故障哨兵节点可以将其下线并在从节点恢复正常后重新将其加入集群。