本篇内容介绍了“Redis故障转移流程是什么意思”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
sentinel初始化
初始化sentinel状态里的masters属性
创建连向各个master的网络连接(命令连接、订阅连接)
sentinel向配置的masters发送info命令(每10秒):获取master及slave信息
更新master实例结构
更新master实例结构里的slave信息
创建连向各个slave的网络连接(命令连接、订阅连接)
sentinel向slaves发送info命令(每10秒):获取slave信息
更新master实例结构里的slave信息
sentinel向所有的master和slave的__sentinel__:hello频道发布消息(每2秒):
sentinel订阅主从服务器的频道信息:获取其他sentinel信息
更新master实例结构里的sentinels信息
创建连向各个sentinel的网络连接(命令连接)
sentinel向所有已知的master/slave/sentinel发送ping命令(每1秒):心跳检测
主观下线:节点在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>*
客观下线:主观下线的sentinel数量达到quorum
不同sentinel设置的quorum可能不同
sentinel选主
raft算法
进入客观下线的sentinel,向其他sentinel发送SENTINEL is-master-down-by-addr <ip> <port> <current_epoch> <runid>
当runid不是*而是源sentinel的运行ID时,表明源sentinel要求目标sentinel将自己设为局部leader
设置局部leader的规则是先到先得
票数大于半数,则成为leader
sentinel leader做故障转移:连接断开时间、优先级、offset、run_id
sentinel leader向选举出来的slave发送slaveof no one命令,变成leader
sentinel leader向其他slave发送命令,使其转为新leader的slave
sentinel leader对旧master做心跳检测,当其恢复后使其转为新leader的slave
node加入集群后,使用gossip算法完成集群中信息同步
node与集群中所有主节点互相做心跳检测
疑似下线
已下线(半数主节点)
广播node fail的消息
故障转移
故障node的从节点选主,投票人是集群中的主节点
新的节点升级为主节点
撤销已下线主节点的槽指派,并全部指派给自己
广播PONG消息,通知集群新的主节点,及槽指派
旧的主节点恢复后,成为新的主节点的slave
“Redis故障转移流程是什么意思”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。