首頁  >  文章  >  資料庫  >  聊聊Redis中的哨兵模式(Sentine)

聊聊Redis中的哨兵模式(Sentine)

青灯夜游
青灯夜游轉載
2021-11-29 19:18:332280瀏覽

這篇文章帶大家了解Redis中的哨兵模式(Sentine),介紹一下Sentinel工作機制、Sentinel模式怎麼搭建,希望對大家有幫助!

聊聊Redis中的哨兵模式(Sentine)

Redis Sentinel哨兵模式是一個分散式系統, 你可以在一個架構中運行多個Sentinel 進程(progress), 這些進程使用流言協定(gossip protocols)來接收關於主伺服器是否下線的信息, 並使用投票協議(agreement protocols)來決定是否執行自動故障遷移, 以及選擇哪一個從伺服器作為新的主伺服器。 【相關推薦:Redis 影片教學

Redis 的Sentinel 系統用於管理多個Redis 伺服器(instance),系統執行以下三個任務:

  • #監控(Monitoring): Sentinel 會不斷檢查你的主伺服器和從伺服器是否運作正常。
  • 提醒(Notification): 當被監控的某個 Redis 伺服器出現問題時, Sentinel 可以透過 API 向管理員或其他應用程式發送通知。
  • 自動故障遷移(Automatic failover): 當一個主伺服器無法正常運作時, Sentinel 會開始一次自動故障遷移操作, 它會將失效主伺服器的其中一個從伺服器升級為新的主伺服器, 並讓失效主伺服器的其他從伺服器改為複製新的主伺服器; 當客戶端試圖連接失效的主伺服器時, 叢集也會向客戶端傳回新主伺服器的位址, 使得叢集可以使用新主伺服器代替失效伺服器。

Sentinel工作機制

  • 每個sentinel以每秒鐘一次的頻率向它所知的master,slave以及其他sentinel實例發送一個PING 命令

  • 如果一個實例距離最後一次有效回覆PING 指令的時間超過down-after-milliseconds 選項所指定的值, 則這個實例會被sentinel標記為主觀下線。

  • 如果一個master被標記為主觀下線,則正在監視這個master的所有sentinel要以每秒一次的頻率確認master的確進入了主觀下線狀態

  • 當有足夠數量的sentinel(大於等於設定檔指定的值)在指定的時間範圍內確認master的確進入了主觀下線狀態, 則master會被標記為客觀下線

  • 在一般情況下, 每個sentinel會以每10 秒一次的頻率向它已知的所有master,slave發送INFO 命令

  • 當master被sentinel標記為客觀下線時,sentinel向下線的master的所有slave發送INFO 指令的頻率會從10 秒一次改為1 秒一次

  • 若沒有足夠數量的sentinel同意master已經下線,master的客觀下線狀態就會移除; 若master重新向sentinel的PING 指令返回有效回复,master的主觀下線狀態就會被移除

#Sentinel模式搭建

#環境

master:127.0.0.1:6379 【初始化master】

slave:127.0.0.1:6380  127.0.0.1:6381

sentinel:127.0.0.1:26379  127.0.0.1:26380  127.0.0.1:26381
  • 修改設定:

這裡省略安裝了redis,直接修改sentinel設定檔。對應資料夾Redis6379-Redis6381

# 监控节点,且超过2个sentinel 任务故障,方可执行故障转移
sentinel monitor mymaster 127.0.0.1 6379 2
# 如果节点在 30000毫秒内未回应,就认为故障
sentinel down-after-milliseconds mymaster 30000
# 如果故障转移后,同时进行主从复制数为 1
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

啟動指令

./src/redis-sentinel ./config/redis-sentinel-6379.conf(同样启动6380 6381)

更多程式相關知識,請造訪:程式設計入門! !

以上是聊聊Redis中的哨兵模式(Sentine)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除