redis选举领头Sentinel

1.所有监视同一个主服务器的多个在线Sentinel中的任意一个都有可能成为领头Sentinel
2.每次进行领头Sentinel选举之后,无论选举是否成功,所有Sentinel的配置纪元(configuration epoch)的值都会加1。配置纪元实际上就是一个计数器,并没有什么特别的。
3.在一个配置纪元里面,所有的Sentinel都有一次将某个Sentinel设置为局部领头Sentinel的机会,并且局部领头一旦设置,在这个配置纪元里面就不能再更改。
4.每个发现主服务器进入客观下线的Sentinel都会要求其他Sentinel将自己设置为局部领头Sentinel。
5.当一个源Sentinel向目标Sentinel发送SENTINEL is-master-down-by-addr命令,并且命令中的runid参数不是*符号而是源Sentinel的运行ID,这表示源Sentinel要求目标Sentinel将源Sentinel设置为目标Sentinel的局部领头Sentinel。
6.Sentinel设置局部领头Sentinel的规则是先到先得:最先向目标Sentinel发送设置要求的源Sentinel将成为目标Sentinel的局部领头Sentinel,而之后接收到的所有设置要求都会被目标Sentinel拒绝。
7.目标Sentinel在接收到is-master-down-by-addr命令后,将向源Sentinel返回一条命令,包含了目标Sentinel的局部领头Sentinel的运行ID(leader_runid)和配置纪元。
8.源Sentinel接收到目标Sentinel返回的命令回复后,会检查返回的配置纪元是否与自己的相同,如果相同,再检查leader_runid是否和自己的runid一致,如果一致那么久表示目标将源Sentinel设置成了局部领头Sentinel
9.如果有某个Sentinel被半数以上的Sentinel设置成了局部领头Sentinel且达到了配置的quonum,那么这个Sentinel就成为了领头Sentinel
10.因为领头Sentinel的产生需要半数以上的Sentinel支持,并且每个Sentinel再每个配置纪元只能设置一次局部领头Sentinel,所以在一个配置纪元里面,只会出现一个领头Sentinel
11.如果在给定时限内,没有一个Sentinel被选举为领头Sentinel,那么各个Sentinel将在一段时间之后再次进行选举,直到选出领头Sentinel为止。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值