## 介紹
1. Sentinel不斷與master通信,獲取master的slave信息.
2. 監聽master與slave的狀態
3. 如果某slave失效,直接通知master去除該slave.
4. 如果master失效,,是按照slave優先級(可配置), 選取1個slave做 new master,把其他slave-->new master
疑問: sentinel與master通信,如果某次因為master IO操作頻繁,導致超時,此時,認為master失效,很武斷.
解決: sentnel允許多個實例看守1個master, 當N臺(N可設置)sentinel都認為master失效,才正式失效.
## Sentinel選項配置
port 26379 # 端口
sentinel monitor mymaster 127.0.0.1 6379 2 # 監視主服務器的ip和端口,當2個sentinel實例都認為master失效時,正式失效
sentinel auth-pass mymaster 012_345^678-90 # master是否要密碼
sentinel down-after-milliseconds mymaster 30000 # (mastername millseconds #默認為30秒) master被當前sentinel實例認定為"失效"的間隔時間,多少毫秒后連接不到master認為斷開,注意:如果當前sentinel與master直接的通訊中,在指定時間內沒有響應或者響應錯誤代碼,那么當前sentinel就認為master失效(SDOWN,"主觀"失效)
sentinel can-failover mymaster yes #當前sentinel實例是否允許實施"failover"(故障轉移是否允許sentinel修改slave->master. 如為no,則只能監控,無權修改) no表示當前sentinel為"觀察者"(只參與"投票".不參與實施failover),全局中至少有一個為yes
sentinel parallel-syncs mymaster 1 #一次性修改幾個slave指向新的new master.
sentinel client-reconfig-script mymaster /var/redis/reconfig.sh ,# 在重新配置new master,new slave過程,可以觸發的腳本
## 啟動
設置slave的優先級 slave-priority #從服務器的優先級,當主服掛了,會自動挑slave priority最小的為主服
./redis-server ./sentinel.conf --sentinel