在上一篇文章redis主从实现的情况下实现哨兵 故障 master自动切换
redis服务器配置:
master 192.168.51.65
slave 192.168.51.67
1、master创建sentinel.conf配置文件
port 26379
protected-mode no
daemonize yes
logfile "/home/zmoon/redis-5.0.12/sentinel.log"
sentinel deny-scripts-reconfig yes
#哨兵监控的master,主从配置一样,在进行主从切换时6379会变成当前的master端口,
sentinel monitor mymaster 192.168.51.65 6379 2
# 切换master间隔时间
sentinel down-after-milliseconds mymaster 3000
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 18000
sentinel parallel-syncs mymaster 1
#设置master和slaves验证密码
sentinel auth-pass mymaster Xunmeizongmu_2019
2.slave创建sentinel.conf配置文件(一样)
port 26379
protected-mode no
daemonize yes
logfile "/home/zmoon/redis-5.0.12/sentinel.log"
sentinel deny-scripts-reconfig yes
#哨兵监控的master,主从配置一样,在进行主从切换时6379会变成当前的master端口,
sentinel monitor mymaster 192.168.51.65 6379 2
# 切换master间隔时间
sentinel down-after-milliseconds mymaster 3000
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 18000
sentinel parallel-syncs mymaster 1
#设置master和slaves验证密码
sentinel auth-pass mymaster Xunmeizongmu_2019
3.启动哨兵
SUSE65:/home/zmoon/redis-5.0.12/bin # ./redis-sentinel ../sentinel.conf SUSE65:/home/zmoon/redis-5.0.12/bin #
测试:
关闭master redis 查看日志 master正常切换到slave去了
SUSE65:/home/zmoon/redis-5.0.12 # tail -f -n100 sentinel.log 11790:X 28 Apr 2022 17:10:54.561 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 11790:X 28 Apr 2022 17:10:54.561 # Redis version=5.0.12, bits=64, commit=00000000, modified=0, pid=11790, just started 11790:X 28 Apr 2022 17:10:54.562 # Configuration loaded 11791:X 28 Apr 2022 17:10:54.565 * Running mode=sentinel, port=26379. 11791:X 28 Apr 2022 17:10:54.565 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 11791:X 28 Apr 2022 17:10:54.774 # Sentinel ID is ef2d4b006899967bde76f4e3ff664ff192862bb0 11791:X 28 Apr 2022 17:10:54.774 # +monitor master mymaster 192.168.51.65 6379 quorum 2 11791:X 28 Apr 2022 17:10:54.776 * +slave slave 192.168.51.67:6380 192.168.51.67 6380 @ mymaster 192.168.51.65 6379 11791:X 28 Apr 2022 17:15:17.898 # +sdown master mymaster 192.168.51.65 6379 11791:X 28 Apr 2022 17:15:56.391 * +reboot master mymaster 192.168.51.65 6379 11791:X 28 Apr 2022 17:15:56.457 # -sdown master mymaster 192.168.51.65 6379 11791:X 28 Apr 2022 17:18:46.041 # +sdown master mymaster 192.168.51.65 6379 11791:X 28 Apr 2022 17:23:02.530 * +reboot master mymaster 192.168.51.65 6379 11791:X 28 Apr 2022 17:23:02.584 # -sdown master mymaster 192.168.51.65 6379 11791:X 28 Apr 2022 17:23:04.073 * +sentinel sentinel 9a923b1dac5c1ae11fb765b06edb09d32b1b1243 192.168.51.67 26379 @ mymaster 192.168.51.65 6379 11791:X 28 Apr 2022 17:24:25.580 # +sdown master mymaster 192.168.51.65 6379 11791:X 28 Apr 2022 17:24:25.788 # +new-epoch 1 11791:X 28 Apr 2022 17:24:25.843 # +vote-for-leader 9a923b1dac5c1ae11fb765b06edb09d32b1b1243 1 11791:X 28 Apr 2022 17:24:26.460 # +config-update-from sentinel 9a923b1dac5c1ae11fb765b06edb09d32b1b1243 192.168.51.67 26379 @ mymaster 192.168.51.65 6379 11791:X 28 Apr 2022 17:24:26.460 # +switch-master mymaster 192.168.51.65 6379 192.168.51.67 6380 11791:X 28 Apr 2022 17:24:26.460 * +slave slave 192.168.51.65:6379 192.168.51.65 6379 @ mymaster 192.168.51.67 6380 11791:X 28 Apr 2022 17:24:56.525 # +sdown slave 192.168.51.65:6379 192.168.51.65 6379 @ mymaster 192.168.51.67 6380 11791:X 28 Apr 2022 17:50:46.753 # -sdown slave 192.168.51.65:6379 192.168.51.65 6379 @ mymaster 192.168.51.67 6380
通过对slave redis进行写测试
SUSE67:/home/zmoon/redis-5.0.12/bin # ./redis-cli -p 6380 -a Xunmeizongmu_2019 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 127.0.0.1:6380> SET key "value" (error) READONLY You can't write against a read only replica. 127.0.0.1:6380> SET key "value" OK 127.0.0.1:6380> SET key "value" OK 127.0.0.1:6380>
可以看到 当关闭master redis后 slave写入成功
至此 哨兵搭建完成
备注(必看):
以上搭建了两个哨兵 和两个redis服务的主从,但是想要哨兵的选举机制生效 必须至少 三个哨兵
所以按照上述步骤 需要再加一个redis服务 和 哨兵 并配置加入之前的集群。
参考文档:https://blog.csdn.net/weixin_30769833/article/details/112226862