客户端主动去连接Sentinel,在某种程度上讲Sentinel相当于一个代理,Sentinel会返回redis信息哪台机器为现在的主从节点,当主节点出现故障宕机时,多个sentinel会进行投票来确实主节点客观宕机。确认master主节点宕机之后,多个sentinel会选举出一个sentinel来执行故障转移,重新选举出一个从节点来充当主节点并告知其他从节点指向新提升的主节点继续进行主从。然后返回信息告知客户端主从变化,等待老的主节点修复后成为新提升的主节点的slave,全程主从更换是由哨兵自动完成的。
为节约成本,sentinel一般是和主从节点放在同一台机器的。
超过半数的Sentinel认为主机点宕机则认为主节点为客观宕机
Sentinel是一个分布式系统,即需要在多个节点上各自同时运行一个sentinel进程,Sentienl 进程通过流言协议(gossip protocols)来接收关于Master是否下线状态,并使用投票协议(Agreement Protocols)来决定是否执行自动故障转移,并选择合适的Slave作为新的Maste