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節點集合,從中獲取主節點資訊。