首页 > 数据库 > NoSQL > Redis Sentinel实现原理
Sentinel集群对自身和Redis主从复制进行监控。当发现Master节点出现故障时,会经过如下步骤:
1)Sentinel之间进行选举,选举出一个leader,由选举出的leader进行failover
2)Sentinel leader选取slave节点中的一个slave作为新的Master节点。对slave选举需要对slave进行选举的方法如下:
a) 与master断开时间
如果与master断开的时间超过down-after-milliseconds(sentinel配置) * 10秒加上从sentinel判定master不可用到sentinel开始执行故障转移之间的时间,就认为该slave不适合提升为master。
b) slave优先级
每个slave都有优先级,保存在redis.conf配置文件里。如果优先级相同,则继续进行。
c) 复制偏移位置
复制偏移纪录着从master复制数据复制到哪里,复制偏移越大表明从master接受的数据越多,如果复制偏移量也一样,继续进行选举
d) Run ID
选举具有最小Run ID的Slave作为新的Master
流程图如下:
3) Sentinel leader会在上一步选举的新master上执行slaveof no one操作,将其提升为master节点
4)Sentinel leader向其它slave发送命令,让剩余的slave成为新的master节点的slave
5)Sentinel leader会让原来的master降级为slave,当恢复正常工作,Sentinel leader会发送命令让其从新的master进行复制
以上failover操作均有sentinel自己独自完成,完全无需人工干预。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2739079/,如需转载,请注明出处,否则将追究法律责任。