1. 故障發現
1.1 主觀下線,redis集群通過gossip的ping,pong訊息來互相通訊,比如a節點向b節點傳送ping,如果在 cluster-node-timeout時間內一直失敗,則節點a會認為b是主觀下線,同時將此狀態資訊在集群內廣播
1.2 客觀下線,當半數以上的持有槽的主節點都標記b是主觀下線時,觸發客觀下線流程。
1.2.1 通知集群內所有節點,標記b為客觀下線並立刻生效
1.2.2 通知故障節點的從節點觸發故障轉移
2. 故障恢復
客觀下線後,如果故障節點是持有槽的主節點,需要從它的從節點中選乙個替換它,保證集群高可用。當從節點通過內部的定時任務發現主節點客觀下線,將會觸發故障恢復流程。
2.1 資格檢查,從節點檢查最後與主節點斷線時間,如果超過一定時間(配置引數),則不具備資格。
2.2 準備選舉時間,會讓延遲最小的從節點優先發起選舉。
2.3 發起選舉
2.3.1 更新配置紀元(clusternode.configepoch),每個主節點維護乙個配置紀元,主節點的配置紀元都不相同,從節點複製主節點的配置紀元,整個集群有維護以全域性配置紀元用於記錄所有的最大版本。從節點每次投票都會自增全域性的配置紀元並單獨儲存,用於標示自己發起選舉的版本
2.3.2 曏集**送訊息,保證該從節點在乙個配置紀元只傳送一次訊息
2.4 選舉投票
只有持有槽的主節點才會處理故障選舉,投票過程是領導者選舉過程,每個配置紀元內每個節點只有一張選票,因此只能有乙個從節點獲得n/2+1的選票,當超過一定時間沒有從節點擊出會選舉作廢開始下一輪選舉。
2.5 替換主節點
當從節點獲取足夠的票後,觸發替換主節點,將當前節點變為主節點,講主節點負責的槽委派給自己,然後廣播自己的pong訊息,通知所有節點自己變為主節點
Redis Cluster集群原理
一 redis cluster 官方推薦的 redis 集群解決方案,優點在於去中心化,去中介軟體,也就是說,集群中的每個節點都是平等的關係,都是對等的,每個節點都儲存各自的資料和整個集群的狀態。每個節點都和其他所有節點連線,而且這些連線保持活躍,這樣就保證了我們只需要連線集群中的任意乙個節點,就可...
redis cluster 集群重啟關閉
找遍了redis cluster官方文件,沒發現有關集群重啟和關閉的方法。為啥會沒有呢,猜測redis cluster至少要三個節點才能執行,三颱同時掛掉的可能性比較小,只要不同時掛掉,掛掉的機器修復後在加入集群,集群都能良好的運作,萬一同時掛掉,資料又沒有備份的話,就有 煩了。redis clus...
Redis Cluster集群快速搭建
想在3分鐘以內搭建乙個redis cluster集群嗎?說3分鐘可能有點久,實際上好像不到一分鐘就完成了redis cluster集群的搭建。redis cluster是官方提供的一種集群方案,redis cluster採用無中心結構,每個節點儲存資料和整個集群狀態,每個節點都和其他所有節點連線。結...