redis哨兵选举条件
edis哨兵模式是redis的高可用架构的一种方式,它的出现是为了解决主从模式下主节点挂了不能自动故障转移的问题,下面是比较简单的哨兵的架构
实际上手搭建过哨兵的同学应该知道,一个哨兵里有个配置sentinel monitor mymaster 35.236.172.131 6379 1,但是也没配置从的ip和其他哨兵的ip,其实他们都是通过主这台机器来进行的关联,主是多么的重要啊
工作流程
1。哨兵 去每隔 1秒钟就像架构中所有的机器去ping一下,如果一台机器距离最后一次ping命令的时间超过
down-after-miliseconds配置的值就会被该哨兵标记为主观下线(SDOWN)
2。如果哨兵标记了主服务器为主观下线,接下来他就会去问问其他的哨兵,喂 我说,主好像挂了,你们怎么 看,其他哨兵:什么!? 我们去看看
3。当有足够多的哨兵(过半)都认识主挂了,就把主改为客观下线(ODOWN)
4。哨兵们坐在一起开始商量:丫挂了 我们应该选一个代理人出来当主啊,不然我们就是失职了,会被裁掉 的,这样的我选择我去做这件事吧。你们同意吗?(哨兵选出leader)
5。哨兵leader来再存活的从里找一个出来成为主,并且进行故障转移
问题(重点)来了,哨兵leader是怎么来选择从成为主呢?
1. 过滤故障节点
2. 根据优先级进行选择,配置文件slave-priority 配置的信息,默认100 ,值最低成为主
3. 选择复制偏移量最大的从为主,这个是在主从复制时,主从都会维护一个自身的偏移量,可以简单理解为 消息id
4. 选择runid最小的从成为主
runid可以通过info命令查看,redis每次重启runid都会变动,值越小说明 重启的时间越靠前
附一张流程图
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.