Redis-sentinel監控


Sentinel 介紹

Redis Sentinel 系統用於管理多個Redis服務器, 該系統執行以下三個任務:

  監控(Monitoring

  提醒(Notification

  自動故障遷移(Automatic failover

  Sentinel 是一個分布式系統,可以在一個架構中運行多個 Sentinel 實例,使用流言協議(gossip protocols)來接收關於主服務器是否下線的信息, 並使用投票協議(agreement protocols)來決定是否執行自動故障遷移, 以及選擇哪個從服務器作為新的主服務器

Sentinel 啟動與配置

啟動Sentinel

通過 redis -sentinel 啟動

  redis-sentinel   /path/to/sentinel.conf

通過 redis -server 啟動

  redis-server   /path/to/sentinel.conf--sentinel

Sentinel配置項

sentinel announce- ip < ip >
sentinel announce-port <port>
sentinel monitor <master-name> < ip > < redis -port> <quorum>
sentinel auth-pass <master-name> <password>
sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel parallel-syncs <master-name> < numslaves >
sentinel failover-timeout <master-name> <milliseconds>
sentinel notification-script <master-name> <script-path>
sentinel client- reconfig -script <master-name> <script-path>
Sentinel 監控流程

1.Sentinel創建命令連接和訂閱連接

  sentinelmasterslave創建命令連接和訂閱連接

  sentinel與其他sentinel只創建命令連接

2.Sentinel發送消息

  sentinel定期向masterslave發送INFO命令

  sentinel定期向masterslavesentinel發送ping命令

  sentinel定期向master發送publish hello命令

  hellosentinel_ip,sentinel_port,sentinel_runid,current_epoch,

       master_name,master_ip,master_port,master_config_epoch

3.Master下線檢測

  (1) sentinel檢測到master超時,標記為主觀下線

  (2) sentinel向其他sentinel詢問master是否下線

  (3) 超過quorum數量的sentinel認為下線,標記master為客觀下線

  (4) sentinel進行投票選舉leader

sentinel 選舉 leader(r aft )
  Sentinel 數據結構關系圖
  Sentinel 故障轉移流程
 
 
  sentinel 故障轉移時序圖
 
  Sentinel 中存在的問題

1.如果兩個sentinel有一個sentinel斷掉,另一個sentinel的選舉leader將永遠失敗

2. sentinel不能識別slave中的127.0.0.1地址

3.修改sentinel模式下的實例角色時,也需要修改sentinel和實例的配置;

4.sentinel監控的slave,使用slaveof命令無效;

5. sentinel無法將slave當做master作為監控對象

6. sentinel故障遷移中,slave重配超時后sentinel向其他slave發送的slaveof命令被丟棄

備注:

       sentinel在執行故障遷移中,當被選中的slave升級為master后,其它slave需要重新配置到新master上,如果slave重配到新master超時,sentinel會向該slave發送slaveof命令將slave再次重新配置到新master上,並將命令放到待發緩沖中等待讀寫事件處理器處理,這時sentinel修改自己保持的實例狀態將舊master實例切換到了新master實例,在切換過程中sentinelslave實例釋放掉(同時也釋放了命令發送連接),導致之前發送的slaveof命令還沒發送已經被清空。該slave只能等待sentinel通過INFO命令發現它的master不是新master時再次向它發送slaveof命令。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM