redis哨兵模式
哨兵模式
-
概述
哨兵模式主要是基於前面用到的主從模式進行改造的,由於主從模式的缺陷,所以哨兵模式彌補了這以缺陷
-
優點
- 監控主數據庫和從數據庫是否正常運行
- 主數據庫出現故障時,可以自動將從數據庫轉換爲主數據庫,實現自動切換
- 如果redis服務出現問題,會發送通知
-
缺點
- 主數據庫出現故障時,選舉切換的時候容易出現瞬間斷線現象
-
判斷在線情況
默認情況下,每個
Sentinel
節點會以 每秒一次 的頻率對Redis
節點和 其它 的Sentinel
節點發送PING
命令,並通過節點的 回覆 來判斷節點是否在線。 -
架構圖
-
下線/down
- 主觀下線
- 主觀下線 適用於所有 主節點 和 從節點。如果在
down-after-milliseconds
毫秒內,Sentinel
沒有收到 目標節點 的有效回覆,則會判定 該節點 爲 主觀下線 - 只有半數個哨兵節點都主觀判定主節點down掉,此時多個哨兵節點交換主觀判定結果,纔會判定主節點客觀下線。
- 主觀下線 適用於所有 主節點 和 從節點。如果在
- 客觀下線
- 客觀下線 只適用於 主節點。如果 主節點 出現故障,
Sentinel
節點會通過sentinel is-master-down-by-addr
命令,向其它Sentinel
節點詢問對該節點的 狀態判斷。如果超過<quorum>
個數的節點判定 主節點 不可達,則該Sentinel
節點會判斷 主節點 爲 客觀下線。 - 基本上哪個哨兵節點最先判斷出這個主節點客觀下線,就會在各個哨兵節點中發起投票機制,每個哨兵都投自己爲領導者。最終被投爲領導者的哨兵節點完成主從自動化切換的過程。當判斷爲主觀下線時,不會進行主從切換過程。
- 客觀下線 只適用於 主節點。如果 主節點 出現故障,
- 主觀下線
-
選舉
每個發現主服務器進入客觀下線的sentinel都可以要求其他sentinel選自己爲領頭sentinel,選舉是先到先得。同時每個sentinel每次選舉都會自增配置紀元,每個紀元中只會選擇一個領頭sentinel。如果所有超過一半的sentinel選舉某sentinel領頭sentinel。之後該sentinel進行故障轉移操作。
-
環境搭建
參考 redis哨兵部署
et/zbw18297786698/article/details/52891695)
參考文章:https://juejin.im/post/5b7d226a6fb9a01a1e01ff64