1. 程式人生 > >Redis高可用方案-哨兵與叢集

Redis高可用方案-哨兵與叢集

       Redis主從複製模式可以將主節點的資料同步給從節點,從而保障當主節點不可達的情況下,從節點可以作為

後備頂上來,並且可以保障資料儘量不丟失(主從複製可以保障最終一致性)。第二,從節點可以擴充套件主節點的讀

能力,一旦主節點不能支援大規模併發量的讀操作,從節點可以在一定程度上分擔主節點的壓力。

 主從複製面臨的問題:

      1.當主節點發生故障的時候,需要手動的將一個從節點晉升為主節點,同時通知應用方修改主節點地址並重啟

應用,同時需要命令其它從節點複製新的主節點,整個過程需要人工干預。

      2.主節點的寫能力受到單機的限制。

      3.主節點的儲存能力受到單機的限制。

. 原始的故障遷移

1.主節點發生故障後,客戶端連線主節點失敗,兩個從節點與主節點連線失敗造成複製中斷。

2.如果主節點無法正常啟動,需要選出一個從節點(slave-1),對其執行slaveof  no one命令使其成為新的主節

       3.原來的從節點(slave-1)成為新的主節點後,更新應用方的主節點資訊,重新啟動應用方。

       4.客戶端命令另一個從節點(slave-2)去複製新的主節點

       5.待原來的主節點恢復後,讓它去複製新的主節點


四.Redis Sentinel的高可用

當主節點出現故障時,Redis Sentinel能自動完成故障發現和故障轉移,並通知應用

方,從而實現真正的高可用。

RedisSentine是一個分散式架構,其中包含若干個Sentinel節點和Redis資料節點,每個Sentinel節點會對資料節點和

其餘Sentinel節點進行監控,當它發現節點不可達時,會對節點做下線標識。如果被標識的是“主節點”,它還會和

其他的Sentinel節點進行“協商”,當大多數Sentinel節點都認為主節點不可達時,它們會選舉一個Sentinel節點來完

成自動故障轉移的工作,同時會將這個變化實時通知給Redis應用方。整個過程是自動的,不需要人工干預,解決了

Redis的高可用問題。

Redis Sentinel包含了若干個Sentinel

節點,這樣做也帶來了兩個好處:

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

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

           然是健壯的。

Redis Sentinel具有以下幾個功能:

      1.監控:Sentinel會定期檢測Redis資料節點、其餘Sentinel節點是否可到達

      2.通知:Sentinel會將故障轉移的結果通知給應用方。

      3.主節點故障轉移:實現從節點晉升為主節點並維護後續正確的主從關係。

      4.配置提供者:在RedisSentinel結構中,客戶端在初始化的時候連線的是Sentinel節點集合,從中獲取主節點資訊。


. Redis Sentinel拓撲結構


. Redis Sentinel節點發現和監控機制