哨兵工作原理
在主从模式下,master节点负责写请求,然后异步同步给slave节点,从节点负责处理读请求。如果master宕机了,需要手动将从节点晋升为主节点,并且还要切换客户端的连接数据源。这就无法达到高可用,而通过哨兵模式就可以解决这一问题。
哨兵模式是Redis的高可用方式,哨兵节点是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点挂掉时,哨兵会第一时间感知到,并且在slave节点中重新选出来一个新的master,然后将新的master信息通知给client端,从而实现高可用。这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息。
1、定时任务
sentinel内部有3个定时任务,分别是:
每1秒每个sentinel对其它sentinel和redis节点执行ping操作
每2秒每个sentinel通过master节点的channel交换信息(publish/subscribe)
每10秒每个sentinel会对master和slave执行info命令
2、主观下线
所谓主观下线(subjectively Down 简称SDOWN)指的是单个sentinel实例对服务器做出的下线判断,即单个sentinel认为某个服务下线(有可能是接收不到订阅,之间的网络不通等等原因)
3、客观下线(objectively Down 简称ODOWN)指的是多个sentinel实列在对同一个服务器做出SDOWN判断,并且通过命令互相交流之后,得出的服务器下线判断,然后开启failover
4、仲裁
仲裁是指配置文件 中的quorum选项
quorum的值一般设置为sentinel个数的二分之一加一,例3个sentinel就设置为2
5、哨兵模式工作原理
(1)每秒ping
(2)有效回复ping命令的时间超过配置文件 down-after-milliseconds 选项所指定的值,被认定为主观下线
(3)确认主观下线状态
(4)满足条件,客观下线
(5)投票选举主节点,从节点复制数据
(6)当主节点标记为客观下线时,INFO命令触发由10s一次改为1s一次,若master重新向sentinel的ping命令返回有效回复,master的主观下线状态就会被移除。
如果本文对你有帮助的话,欢迎点赞&在看&转发,这对我继续分享&创作优质文章非常重要。感谢🙏🏻




