redis cluster集羣架構詳解(十八)-高可用性與主備切換原理

5.10. 高可用性與主備切換原理

​ redis cluster的高可用的原理,跟redis replication sentinel類似,過程如下:

在這裏插入圖片描述

1、判斷節點宕機

​ 如果一個節點認爲另外一個節點宕機,那麼就是pfail,主觀宕機。如果多個節點都認爲另外一個節點宕機了,那麼就是fail,客觀宕機,跟哨兵的原理幾乎一樣,pfail對應sdown,fail對應odown 。

​ 在cluster-node-timeout內,某個節點一直沒有返回pong,那麼就被認爲pfail,如果一個節點認爲某個節點pfail了,那麼會在gossip ping消息中,ping給其他節點,如果超過半數的節點都認爲pfail了,那麼就會變成fail。

2、從節點過濾

​ 對宕機的master node,在其所有的slave node中,選擇一個切換成master node,檢查每個slave node與master node斷開連接的時間,如果超過了cluster-node-timeout * cluster-slave-validity-factor,那麼就沒有資格切換成master,這個也是跟哨兵是一樣的,從節點超時過濾的步驟。

3、從節點選舉

對slave進行排序,排序方法如下:
  • slave priority:選擇優先級slave-priority最大的從節點作爲主節點,如不存在則繼續。 按照slave優先級進行排序,slave priority越低,優先級就越高。
  • replica offset:選擇複製偏移量(數據寫入量的字節,記錄寫了多少數據。主服務器會把偏移量同步給從服務器,當主從的偏移量一致,則數據是完全同步)最大的從節點作爲主節點,如不存在則繼續。如果slave priority相同,那麼看replica offset,哪個slave複製了越多的數據,offset越靠後,優先級就越高。
  • run id:如果上面兩個條件都相同,那麼選擇一個run id比較小的那個slave。(redis每次啓動的時候生成隨機的runid作爲redis的標識)

​ 所有的master node開始slave選舉投票,給要進行選舉的slave進行投票,如果大部分master node(N/2 + 1)都投票給了某個從節點,那麼選舉通過,那個從節點可以切換成master。從節點執行主備切換,成爲主節點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章