哨兵機制存在的意義: 為了實現redis故障轉移的自動化。自動發現,自動轉移。不需要人工參與。 用戶管理多個Redis伺服器,該系統執行三個任務: 監控:哨兵會不間斷的檢查Master和Slave是否正常運行 提醒:當被監控的某個Redis出現問題,哨兵通過API向管理員或者應用程式發送通知 自動故 ...
哨兵機制存在的意義:
為了實現redis故障轉移的自動化。自動發現,自動轉移。不需要人工參與。
用戶管理多個Redis伺服器,該系統執行三個任務:
- 監控:哨兵會不間斷的檢查Master和Slave是否正常運行
- 提醒:當被監控的某個Redis出現問題,哨兵通過API向管理員或者應用程式發送通知
- 自動故障遷移:當一個Master不能正常工作,哨兵會開始一次故障遷移,然後將失效的Master的其中一個Slave升級為新的Master,並讓失效的Master的其他Slave改為複製新的Master;當客戶端嘗試鏈接失效的Master時,集群會向客戶端返回新的Master的地址,使集群可以使用Master代替失效的Master。
哨兵是一個分散式系統,可以在一個架構中運行多個哨兵進程,這些進程使用流言協議接收關於Master是否下線的信息,並使用投票協議決定是否執行自動故障遷移,以及選擇哪個Slave作為新的Master
-
每個哨兵會向其它哨兵、master、slave定時發送信息,確認對方是否活著, 如果對方在指定時間內未回應,則暫時認為對方已掛。
-
若哨兵(sentinel)群多數sentinel認為某一master麽響應,系統才認為該master死亡(down機),通過一定的vote演算法,從剩下的slave節點,選一臺提升為master,然後自動修改相關配置。