在分享哨兵之前,先来张导图,可以很清晰地看到他的结构
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/45c4cb8b3ea98207ccc0ca7d9cc0e597.png)
原理
定时监控任务
三个定时任务分别是:
1.每10秒,每个Sentinel节点会向主节点和从节点发送info命令获取最新的拓扑结构
2 每2秒,每个Sentinel节点会向Redis数据节点的 sentinel_hello频道发送Sentinel节点对于主节点的判断以及当前Sentinel节点的信息
3每隔1秒,每隔Sentinel节点会向主节点,从节点,其余Sentinel节点发送一条ping命令做一次心跳检测,来确认这些接待当前是否可达。
主观下线和客观下线
主观下线
每隔1秒,每隔Sentinel节点会向主节点,从节点,其余Sentinel节点发送一条ping命令做一次心跳检测,当某节点超过down-after-milliseconds没有进行有效回复,Sentinel就对该节点做失败判定。
客观下线
当Sentinel主观下线的节点是主节点时,就会通过sentinel is-master-down-by-addr命令向其他Sentinel节点询问对该节点的判断,当查过个时,Sentinel节点就会做出客观下线的决定。
故障转移
故障转移的时候,会在Sentinel节点之间做一个领导选举的工作,选出一个Sentinel领导,(选举规则是每个Sentinel节点会向其他的Sentinel节点发送命令,要求将自己设为领导者,收到命令的Sentinel节点如果没有同意过其他的节点,将同意该请求,如果票数过半,则该节点就会成为领导。)选出的Sentinel节点来负责故障节点的转移处理。会选择从节点优先级最高,复制偏移量最大,runid最小的节点作为主节点,并向剩余的从节点发送命令,让他们成为新节点的从节点。
配置
感谢您的阅读~