美文网首页
Redis Cluster 故障转移

Redis Cluster 故障转移

作者: hbhey | 来源:发表于2020-05-01 15:00 被阅读0次

    故障发现

    1. 通过ping/pong消息来实现故障发现:不需要sentinel
    2. 主观下线:某个节点认为另一个节点不可用,“偏见” 主观下线.png
    3. 客观下线:当半数以上持有槽的主节点都标记了某节点主观下线 客观下线.png
    • 故障链表可以维护了每个节点对其他节点的"看法",即认为主观下线与否
    • 尝试客观下线流程如下:


      客观下线流程.png

    故障恢复

    1. 资格检查
      检查每个从节点与故障主节点的断线时间。超过cluster-node-timeout * cluster-slave-validity-factor(默认10)则取消资格。
    2. 准备选举时间

      准备选举时间,偏移量更大的从节点拥有延迟更小的选举时间,尽量保证从节点与主节点的数据一致性 选举时间.png
    3. 选举投票 选举投票.png
    4. 替换主节点
    • 当前从节点取消复制变为主节点(slaveof no one)
    • 执行clusterDelSlot撤销故障主节点负责的槽,并执行clusterAddSlot把这些槽分配给新的主节点
    • 向集群广播自己的pong消息,表明已经替换了故障主节点

    参考资料

    [1] https://coding.imooc.com/class/151.html

    相关文章

      网友评论

          本文标题:Redis Cluster 故障转移

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