Redis-Sentinel主從自動切換
entinel哨兵:
在其中一臺redis上或者隨便找一臺伺服器安裝,如果只安裝一個sentinel並要安裝在redis伺服器上,建議在從上搭建sentinel,這樣保證了主宕機之後不會影響主從切換,從宕機不會影響主的執行
# vim /etc/redis/sentinel.conf
port 26379
daemonize yes
sentinel monitor mymaster 192.168.1.44 6379 1
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 900000
logfile "/var/log/sentinel.log"
註釋:
第一行:指定sentinel埠號
第二行:指定sentinel為後臺啟動
第三行:指定sentinel去監視一個名為mymaster的Master,Master的IP地址為118.144.155.44,
埠為6379,最後的1表示當有1個Sentinel檢測到Master異常時會判定其失效,如果為2,即只有當2個Sentinel都判定Master失效了才會自動遷移,如果Sentinel的數量不達標,則不會執行自動故障遷移。
第四行:指定Sentinel判定Master斷線的時間。(單位為毫秒,判定為主觀下線SDOWN)
第五行:指定在執行故障轉移時,最多可以有多少個Slave同時對新的Master進行同步。這個數字設定為1,雖然完成故障轉移所需的時間會變長,但是可以保證每次只有1個Slave處於不能處理命令請求的狀態。
第六行:如果在該時間(ms)內未能完成failover(即故障時master/slave自動切換
)操作,則認為該failover失敗。
第七行:指定Sentinel日誌檔案。
啟動
# redis-sentinel /etc/redis/sentinel.conf
Bonus:
在阿里雲的裝置上,無法正常啟動Sentinel程序,檢視Sentinel的Log發現,有如下資訊:
Creating Server TCP listening socket *:26379: unable to bind socket
原因:ECS Linux系統預設關閉了Ipv6的功能,所以 redis-sentinel 嘗試在 ipv6 的網路介面上監聽時,提示出錯。可以在 sentinel.conf 裡配置檔案設定僅監聽ipv4的網路介面,修改配置檔案 sentinel.conf 在 定義監聽埠一行前新增監聽IP引數,如 bind 0.0.0.0
[基礎常識]在CentOS 6 執行 redis-sentinel 程式