您好,登錄后才能下訂單哦!
本篇內容介紹了“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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。