Redis--哨兵

Sentinel 哨兵 —— 高可用 (high availability)

   监视集群,主服务器的选举。

主服务器的下线判断:

  1、在down-after-milliseconds选项设置的时间内,连续向Sentinel返回无效回复。

  2、询问其它监视主服务器的Sentinel也得到主服务器下线的回应。

  注意点:如何正确的判断主服务器是否下线。

领头Sentinel的选举:(当主服务器被判断为下线时,监视该集群的Sentinel就进行领头的选举)

  1、所有在线的Sentinel都有被选举为领头的资格。

  2、每次选举后,Sentinel的配置纪元自增1。(configuration epoch,类似计数器的作用)

  3、同一个批次的配置纪元内,选票唯一,确定后,就不再修改。

  4、首先发现主服务器下线的Sentinel优先设置为领头哨兵。

  5、先到先得规则,如果有两个Sentinel同时要求目标Sentinel将自己设置为领头Sentinel,则哪个消息先到达,执行哪个。抛弃后面到达的消息。

  6、半数规则。领头Sentinel需要得到超过半数以上的投票,公式为 n/2+1 (n/2向下取整,且一般情况下,n为奇数)

  7、在同一个配置纪元下,领头Sentinel选举失败,则循环上述的规则。

  注意点:如何才能确保领头唯一,且选举的时候不进入死循环。上述的规则,就是答案。

主服务器的选举:

  1、从服务器正常。

  2、根据从服务器的优先级进行排序。

  3、根据从服务器的复制偏移量进行排序。

  4、根据从服务器的运行ID进行排序。

  5、根据这三个组合排序,获取第一个从服务器做为主服务器。 

  注意点:选取数据最新的从服务器作为主服务器。

选好主服务器后,进行故障转移:

  1、让从服务器复制新的主服务器。

  2、如果已经下线的主服务器再次上线,则该服务器作为新主服务器的从服务器。

原文地址:https://www.cnblogs.com/chen--biao/p/9899265.html