美文网首页
(1)redis cluster选主(5)

(1)redis cluster选主(5)

作者: hedgehog1112 | 来源:发表于2020-11-09 10:31 被阅读0次

    一、redis 选主过程

     slave发现自己的master为FAIL,便尝试Failover,成新master。但挂掉master可能有多个slave。Failover经过类似Raft在集群内一致:

        1)slave发现自己的master变为FAIL

        2)将自己记录集群currentEpoch加1,广播Failover Request信息

        3)其他节点收到只有master响应判断请求者合法性,并发送FAILOVER_AUTH_ACK,对每一个epoch只发一次ack

        4)尝试failover的slave收集FAILOVER_AUTH_ACK超半数成新Master,广播Pong通知其他集群节点

    ps:epoch纪元:用类似 Raft 算法 term(任期)称为 ,给事件增加版本号。currentEpoch (选举) 和 configEpoch(指节点所负责槽位信息)

    打开主服务器的持久化,不丢数据

    二、选主代码分析

    1、slave定期发送ping检测master存活性,master未响应,记为疑似下线。

    clusterHandleSlaveFailover执行重新选主核心逻辑

    2、clusterHandleSlaveFailover内部通过clusterRequestFailoverAuth方法向集群所有节点发送CLUSTERMSG_TYPE_FAILOVER_AUTH_REQUEST报文,通知slave准备执行failover

    超过n/2+1个master的response升为主

    3、clusterProcessPacket内部主要处理,选举过程中报文相关解析逻辑CLUSTERMSG_TYPE_FAILOVER_AUTH_REQUEST和CLUSTERMSG_TYPE_FAILOVER_AUTH_ACK报文。

        request报文的处理逻辑:如果master就发回ack响应

        ack报文的处理逻辑:增加支持投票数failover_auth_count++

    https://www.jianshu.com/p/03d87fa84fc4

    https://blog.csdn.net/chen_kkw/article/details/82724330

    相关文章

      网友评论

          本文标题:(1)redis cluster选主(5)

          本文链接:https://www.haomeiwen.com/subject/apdfbktx.html