這篇文章帶大家了解Redis中的哨兵模式(Sentine),介紹一下Sentinel工作機制、Sentinel模式怎麼搭建,希望對大家有幫助!
Redis Sentinel哨兵模式是一個分散式系統, 你可以在一個架構中運行多個Sentinel 進程(progress), 這些進程使用流言協定(gossip protocols)來接收關於主伺服器是否下線的信息, 並使用投票協議(agreement protocols)來決定是否執行自動故障遷移, 以及選擇哪一個從伺服器作為新的主伺服器。 【相關推薦:Redis 影片教學】
Redis 的Sentinel 系統用於管理多個Redis 伺服器(instance),系統執行以下三個任務:
每個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的主觀下線狀態就會被移除
#環境
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中文網其他相關文章!