Redis開發與運維之第九章哨兵(二)

Redis Sentinel的高可用性

主節點出現故障時,Redis Sentinel能自動完成故障發現和故障轉移,並通知應用方,從而實現真正的高可用 

      Redis Sentinel是一個分佈式架構,其中包含若干個Sentinel節點和Redis數據節點,每個Sentinel節點會對數據節點和其餘Sentinel節點進行監控,當它發現節點不可達時,會對節點做下線標識。如果被標識的是主節點,它還會和其他Sentinel節點進行“協商”,當大多數Sentinel節點都認爲主節點不可達時,它們會選舉出一個Sentinel節點來完成自動故障轉移的工作,同時會將這個變化實時通知給Redis應用方。

整個過程完全是自動的,不需要人工來介入,所以這套方案很有效地解決了Redis的高可用問題。

 這裏的分佈式是指:Redis數據節點、Sentinel節點集合、客戶端分佈在多個物理節點的架構,不要與第10章介紹的Redis Cluster分佈式混淆。

 Redis Sentinel與Redis主從複製模式只是多了若干Sentinel節點,所以Redis Sentinel並沒有針對Redis節點做了特殊處理

從邏輯架構上看,Sentinel節點集合會定期對所有節點進行監控,特別是對主節點的故障實現自動轉移

整個故障轉移的處理邏輯有下面4個步驟

1.主節點出現故障,此時兩個從節點與主節點失去連接,主從複製失敗。

2. 每個Sentinel節點通過定期監控發現主節點出現了故障。 

3.  多個Sentinel節點對主節點的故障達成一致,選舉出sentinel-3節點作爲領導者負責故障轉移。

4. Sentinel領導者節點執行了故障轉移 

5. 故障轉移後整個Redis Sentinel的拓撲結構圖 

 通過上面介紹的Redis Sentinel邏輯架構以及故障轉移的處理,可以看出Redis Sentinel具有以下幾個功能:

監控:Sentinel節點會定期檢測Redis數據節點、其餘Sentinel節點是否可達。
通知:Sentinel節點會將故障轉移的結果通知給應用方。
主節點故障轉移:實現從節點晉升爲主節點並維護後續正確的主從關係。
配置提供者:在Redis Sentinel結構中,客戶端在初始化的時候連接的是Sentinel節點集合,從中獲取主節點信息。

Redis Sentinel包含了若個Sentinel節點,這樣做也帶來了兩個好處:

1. 對於節點的故障判斷是由多個Sentinel節點共同完成,這樣可以有效地防止誤判;

2. Sentinel節點集合是由若干個Sentinel節點組成的,這樣即使個別Sentinel節點不可用,整個Sentinel節點集合依然是健壯的

但是Sentinel節點本身就是獨立的Redis節點,只不過它們有一些特殊,它們不存儲數據,只支持部分命令。 

 

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