Redis故障转移流程是什么意思
更新:HHH   时间:2023-1-7


本篇内容介绍了“Redis故障转移流程是什么意思”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Redis-sentinel故障转移流程

  1. sentinel初始化


    • 初始化sentinel状态里的masters属性

    • 创建连向各个master的网络连接(命令连接、订阅连接)

  1. sentinel向配置的masters发送info命令(每10秒):获取master及slave信息


    • 更新master实例结构

    • 更新master实例结构里的slave信息

    • 创建连向各个slave的网络连接(命令连接、订阅连接)

  1. sentinel向slaves发送info命令(每10秒):获取slave信息


    • 更新master实例结构里的slave信息

  1. sentinel向所有的master和slave的__sentinel__:hello频道发布消息(每2秒):

  2. sentinel订阅主从服务器的频道信息:获取其他sentinel信息


    • 更新master实例结构里的sentinels信息

    • 创建连向各个sentinel的网络连接(命令连接)

  1. sentinel向所有已知的master/slave/sentinel发送ping命令(每1秒):心跳检测

  2. 主观下线:节点在down-after-milliseconds均未返回有效回复


    • 更新master实例结构的flags属性:SRI_S_DOWN

    • 不同sentinel设置的主观下线时长可能不同:down-after-milliseconds

    • 向同样监控该master的其他sentinel发送下线询问命令:SENTINEL is-master-down-by-addr <ip> <port> <current_epoch>0 <runid>*

  1. 客观下线:主观下线的sentinel数量达到quorum


    • 不同sentinel设置的quorum可能不同

  1. sentinel选主


    • raft算法

    • 进入客观下线的sentinel,向其他sentinel发送SENTINEL is-master-down-by-addr <ip> <port> <current_epoch> <runid>

    • 当runid不是*而是源sentinel的运行ID时,表明源sentinel要求目标sentinel将自己设为局部leader

    • 设置局部leader的规则是先到先得

    • 票数大于半数,则成为leader

  1. sentinel leader做故障转移:连接断开时间、优先级、offset、run_id

  2. sentinel leader向选举出来的slave发送slaveof no one命令,变成leader

  3. sentinel leader向其他slave发送命令,使其转为新leader的slave

  4. sentinel leader对旧master做心跳检测,当其恢复后使其转为新leader的slave

Redis-cluster故障转移流程

  1. node加入集群后,使用gossip算法完成集群中信息同步

  2. node与集群中所有主节点互相做心跳检测

  3. 疑似下线

  4. 已下线(半数主节点)

  5. 广播node fail的消息

  6. 故障转移


    • 故障node的从节点选主,投票人是集群中的主节点

    • 新的节点升级为主节点

    • 撤销已下线主节点的槽指派,并全部指派给自己

    • 广播PONG消息,通知集群新的主节点,及槽指派

  1. 旧的主节点恢复后,成为新的主节点的slave

“Redis故障转移流程是什么意思”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注天达云网站,小编将为大家输出更多高质量的实用文章!

返回大数据教程...