Redis哨兵相關

Redis主從複製有一個很大的缺點就是沒有辦法對 master 進行動態選舉(當 master 掛掉後,會經過必定的機制,從 slave 中選舉出一個新的 master),須要使用 Sentinel 機制完成動態選舉。服務器

Sentinel哨兵主要解決如下問題:cdn

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

哨兵配置以下:blog

img

哨兵工做原理:進程

  1. 每一個 Sentinel(哨兵)進程以每秒鐘一次的頻率向整個集羣中的 Master 主服務器,Slave 從服務器以及其餘 Sentinel(哨兵)進程發送一個 PING 命令。(此處咱們尚未講到集羣,下一章節就會講到,這一點並不影響咱們模擬哨兵機制)
  2. 若是一個實例(instance)距離最後一次有效回覆 PING 命令的時間超過 down-after-milliseconds 選項所指定的值, 則這個實例會被 Sentinel(哨兵)進程標記爲主觀下線SDOWN)。
  3. 若是一個 Master 主服務器被標記爲主觀下線(SDOWN),則正在監視這個 Master 主服務器的全部 Sentinel(哨兵) 進程要以每秒一次的頻率 確認 Master 主服務器的確進入了主觀下線狀態
  4. 有足夠數量的 Sentinel(哨兵) 進程(大於等於配置文件指定的值)在指定的時間範圍內確認 Master 主服務器進入了主觀下線狀態(SDOWN), 則 Master 主服務器會被標記爲 客觀下線(ODOWN)
  5. 在通常狀況下, 每一個 Sentinel(哨兵)進程會以每 10 秒一次的頻率向集羣中的全部Master 主服務器、Slave 從服務器發送 INFO 命令。
  6. 當 Master 主服務器被 Sentinel(哨兵)進程標記爲 客觀下線(ODOWN) 時,Sentinel(哨兵)進程向下線的 Master 主服務器的全部 Slave 從服務器發送 INFO 命令的頻率會從 10 秒一次改成每秒一次。
  7. 若沒有足夠數量的 Sentinel(哨兵)進程贊成 Master 主服務器下線, Master 主服務器的客觀下線狀態就會被移除。若 Master 主服務器從新向 Sentinel(哨兵)進程發送 PING 命令返回有效回覆,Master 主服務器的主觀下線狀態就會被移除。
相關文章
相關標籤/搜索