Redis:高可用——哨兵模式

Redis:高可用——哨兵模式

Redis Sentinel

  Redis Sentinel(哨兵模式)是Redis的高可用實現方案,在實際的生成環境中,對提高整個系統的高可用性是非常有幫助的。

主從複製的問題

  Redis的主從複製模式可以將主節點的數據改變同步到從節點。

    

  這樣從節點就可以起到兩個作用

  • 作爲主節點的一個備份,一旦主節點出現故障,從節點可以作爲後備“頂”上來,並且保證數據儘量不丟失。(主從複製是最終一致性)
  • 從節點可以擴展主節點的讀能力,當主節點面臨大規模的讀操作時,從節點可以分擔壓力

  但是主從複製也帶來一些問題,比如當主節點出現故障,我們需要手動選擇一個從節點代替它,此時不僅要修改應用方的主節點地址,還要命令其他從節點複製新的主節點,整個過程都需要人工干預。其次,主節點的讀寫能力、存儲能力都受制於單機。

聊一聊高可用

   聊到高可用,我們先來了解一下這個概念是什麼意思:

“高可用性”(High Availability)通常來描述一個系統經過專門的設計,從而減少停工時間,而保持其服務的高度可用性。

  通俗理解就是說很少發生故障,即使發生故障也能在最短時間內恢復的系統稱之爲高可用性

  那顯然主從複製模式是無法滿足高可用性的,因爲一旦主節點宕機,需要人工干預進行故障轉移,並且應用方很難第一時間發現問題,肯定會造成數據的讀寫錯誤,甚至造成應用法宕機。

   既然我們提到哨兵模式,必然是優於主從複製模式的。那他到底是個什麼樣的架構呢?我們來揭開他的神祕面紗!

哨兵模式  

   其實啊,哨兵模式只是比主從模式多了若干個Sentinel節點。從下圖的邏輯架構上看,Sentinel節點集合會定期對所有節點進行監控,特別是對主節點的故障實現自動轉移

  

  我們來模擬一下故障轉移的四個步驟:

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

  

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

  

 

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

  

  4)Sentinel領導者節點執行了故障轉移,整個過程自動完成,不需要人工干預!

  

  5)故障轉移後,整個拓撲結構如下。

  

 

梳理一下哨兵的功能

  哨兵名字起得很通俗,放哨的,在Redis Sentinel架構中,它盡職盡責!

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

  同時哨兵有多個,這樣有好處,一個睡着了,其他的接着放哨

 

參考資料

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