Redis Cluster 故障發現和恢復總結

一、故障發現node

  • 經過ping/pong消息實現故障發現:不須要Sentinel
  • 跟Sentinel同樣,有主觀下線和客觀下線

二、主觀下線日誌

定義:某個節點認爲另外一個節點不可用,「偏見」it

主觀下線流程:集羣

三、客觀下線im

定義:當半數以上持有槽的主節點都標記某節點主觀下線客戶端

客觀下線流程:img

四、嘗試客觀下線di

  • 通知集羣內全部節點標記故障節點爲客觀下線
  • 經過故障節點的從節點觸發故障轉移流程

 

五、故障恢復時間

(1)資格檢查ping

  • 每一個從節點檢查與故障主節點的斷線時間
  • 超過 cluster-node-timeout * cluster-slave-validity-factor 取消資格。
  • cluster-slave-validity-factor : 默認是10

(2)準備選舉時間

(3)選舉投票

(4)替換主節點

  • 當前從節點取消複製變爲主節點(slaveof no one)
  • 執行clusterDelSlot撤銷故障主節點負責的槽,並執行clusterAddSlot把這些槽分配給本身。
  • 向集羣廣播本身的pong消息,代表已經替換了故障從節點

六、故障演練

七、具體步驟

  • 執行kill -9 節點模擬拖機
  • 觀察客戶端故障恢復時間
  • 觀察各個節點的日誌
相關文章
相關標籤/搜索