每个Sentinel节点会定期对数据节点和其余Sentinel节点进行监控,一套合理的监控机制是Sentinel节点判定节点不可到达的重要保证。
定时任务一
每隔10秒,每个Sentinel节点会向主节点和从节点发送info replication命令获取最新的拓扑结构,节点的故障、加入都可以及时的感知出来。
定时任务二
每隔2秒,每个Sentinel节点会向Redis数据节点的sentinle:hello频道上发送该Sentinel节点对于主节点的判断以及当前Sentinel节点的信息,同时每个Sentinel节点也会订阅该频道,来了解其它Sentinel节点以及它们对主节点的判断。所以这个定时任务可以完成以下两个工作:
- 发现新的Sentinel节点,与新的Sentinel节点创建连接。
- Sentinel节点之间交换主节点的状态,作为客观下线以及领导者选举的依据。
定时任务三
每隔1秒,每个Sentinel节点会向主节点、从节点、其余Sentinel节点发送一条ping命令做一次心跳检测,来确认这些节点是否可达。