ITPub博客

首页 > 数据库 > NoSQL > Redis Sentinel实现原理

Redis Sentinel实现原理

NoSQL 作者:chenfeng 时间:2020-12-03 13:33:37 0 删除 编辑

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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
交流PostgreSQL,MySQL,MongoDB和Redis技术。

注册时间:2015-12-07

  • 博文量
    764
  • 访问量
    2247105