【Redis】簡單介紹redis哨兵機制

爲了解決redis主從複製模式致命缺點,當主節點宕機,影響整個系統運行,引入哨兵機制Sentinel。

Sentinel哨兵主要解決以下問題:

  • 監控,監控每個節點以及哨兵
  • 運行狀態報警,當發現某個節點或哨兵出現問題,通知其他哨兵
  • 自動故障轉化,當主節點宕機時,哨兵從原主節點下的所有可用從節點中選舉出一個作爲主節點,原主節點降爲從節點,並將其他從節點的主節點配置改爲指定新主節點
  • 配置中心,客戶端初始化連接的是哨兵節點集合

哨兵配置如下:

在這裏插入圖片描述
哨兵工作原理:

  1. 哨兵是一個特殊的redis服務器,不同的是命令以及不會持久化,啓動時,根據配置文件中master主節點ip和端口,創建兩個連接,一爲命令連接,獲取服務器的運行狀態(包括主節點、從節點的基本信息);二爲訂閱連接,訂閱服務器的_sentinel_:hello頻道(獲取哨兵集羣的其他哨兵節點,配置中只需配置主節點信息)
  2. 哨兵默認每隔十秒向節點發送info,獲取主從服務器的信息,及時更新哨兵下的服務器實例;每隔一秒向節點發送ping命令,根據有效時間內(down-after-milliseconds參數配置)返回內容判斷服務器是否在線,有效回覆內容包括PONG、LOADING、MASTERDOWN,其他均爲無效回覆,將服務器設定爲主觀下線(在有效時間內未回覆有效內容,將被哨兵主觀下線)
  3. 當主節點出現主觀下線, 哨兵將詢問其他哨兵主節點狀態,當確認主節點狀態爲主觀下線的哨兵數量達到配置數目(sentinel monitor mymaster 127.0.0.1 6379 2,2則表示數目)時,主節點被修改爲客觀下線
  4. 當主節點被客觀下線時,哨兵將選舉出一位臨時主哨兵(哨兵可以讓其他哨兵選舉自己,先到先得,選票高者當選),主哨兵根據原則(在線、slave-priority可設置從節點當選主節點服務器優先級,越小優先級越高)從節點中選出主節點,原主節點降爲從節點並客觀下線狀態,並將其他從節點指向新主節點進行數據複製
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章