-
萬一主節點打擊,主從模型將會停止工作,為了解決這個問題,Redis提供了一個sentinel(哨兵),以此來實現主從切換的功能,一旦主節點宕機了,sentinel將會在從節點中挑一個作為主節點。與zookeeper類似
編輯/etc/redis-sentinel.conf文件
1: mymaster指定主節點的主機名(可以隨便取一個名),127.0.0.1 6379:指明主節點的IP和端口,2:表示一個節點要成為主節點必須擁有的票數,這里默認是2,因此最好啟動2個以上centinel進程。這個指令可以寫多個,表明sentinel可以監控多個Redis主從架構。這里改為1,啟動centinel進程演示
sentinel
monitor mymaster 192.168.23.10 6379 1
2:指明主節點多少秒聯系不上,認定主服務器宕機,默認30000毫秒
sentinel down-after-milliseconds mymaster 3000
3:從新指定主服務器后,允許幾台從服務器去主服務器同步數據
sentinel parallel-syncs mymaster 1
4:指定故障轉移的超時時長,如果180000毫秒,無法在從服務器選擇主服務器,則故障轉移失敗
sentinel failover-timeout mymaster 18000
5: 指定與master通信的密碼
sentinel auth-pass mymaster 123456
啟動systemctl
systemctl
start redis-sentinel.service
登入Sentinel,查看主從狀態
redis-
cli -p 26379
127.0.0.1:26379> info Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.23.10:6379,slaves=2,sentinels=1
停止Redis的master節點,登入sentinel查看節點信息
(此時的主節點已經是192.168.23.12了)
systemctl stop redis.service
[root
@7 ~]
127.0.0.1:26379> info sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.23.12:6379,slaves=2,sentinels=1
127.0.0.1:26379> sentinel masters