本文例子基於:5.0.4redis
Redis Sentinel做爲Redis高可用方案,具備監聽,通知,自動故障轉移等功能.這一切都是依賴主備同步的大前提(參考上一節:Redis從入門到放棄系列(八) 主備同步).服務器
在互聯網應用中,程序若是隻是單臺部署的話,都會存在單點問題,那麼做爲Redis高可用方案的Sentinel是如何解決這一問題呢?微信
歡迎關注微信公衆號黑搜丶D(black-search)spa
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
複製代碼
以上配置爲Sentinel最少配置。日誌
sentinel monitor <master-group-name> <ip> <port> <quorm>
監聽127.0.0.1地址的6379端口,爲其命名爲mymaster,當集羣有2個Sentinel節點認爲mymaster節點down了才客觀的下線。sentinel <option_name> <master_name> <option_value>
複製代碼
sentinel程序會對redis節點發送PING命令,若是redis節點沒有正確回覆sentinel的請求的話 or 指定時間內沒有回覆,那麼sentinel程序會認爲該redis主觀下線.code
有效回覆:orm
客觀下線條件只適用於master節點,對於其餘的replica節點,sentinel在將他們判斷爲主觀下線的話即下線. 只有參與了判斷客觀下線的sentinel程序纔有可能參與故障轉移操做.cdn
咱們在設置sentinel集羣程序的時候,不須要在對應的配置文件中設置不一樣節點的sentinel的配置信息,那麼sentinel是如何知道彼此且發送消息的呢?server
sentinel經過發佈/訂閱功能來發現其餘的sentinel程序,這一功能是經過向頻道__sentinel__:hello
發送信息來實現的。 發現replica節點是經過詢問master節點來獲取全部從服務器的信息.進程
__sentinel__:hello
頻道發送一條包含sentinel的信息的消息.首先要確保已經搭建了master-replica主備
1.copy一份sentinel.conf配置文件,分別修改成sentinel_26379.conf sentinel_26380.conf sentinel_26381.conf.修改以下內容:
//指定端口
port 26379
//設置後臺啓動
daemonize yes
//設置pidfile
pidfile "/var/run/redis-sentinel_26379.pid"
//設置日誌存放地點,方便查看問題
logfile "/var/log/redis-sentinel_26379.log"
//設置監聽的master節點
sentinel monitor mymaster 127.0.0.1 6379 2
複製代碼
2.分別執行 redis-sentinel sentinel_26379.conf
配置文件啓動。 啓動sentinel以前須要先準備好redis master-replica主備已經啓動~