--先搭建主从模式,1主2从
启动三个redis服务
/home/redis-5.0.7/src/redis-server /home/redis-5.0.7/config/master-6379.conf
/home/redis-5.0.7/src/redis-server /home/redis-5.0.7/config/slave-6380.conf
/home/redis-5.0.7/src/redis-server /home/redis-5.0.7/config/slave-6381.conf
--配置三个sentinel.conf文件
vi sentinel26379.conf
#保护模式
protected-mode no
#端口
port 26379
#守护进程
daemonize yes
#设置pid文件路径
pidfile /var/run/sentinel26379.pid
#工作路径,不用改
dir /tmp
#设置日志文件路径
logfile /home/redis-5.0.7/logs/sentinel26379.log
# 哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown
# (objective down客观down;相对应的存在sdown,subjective down,主观down)状态。
# slaves是自动发现,不用指定slaves。
sentinel monitor mymaster 192.168.3.5 6379 2
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 30000
#选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。
sentinel parallel-syncs mymaster 1
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 180000
#设置master和slaves的密码
sentinel auth-pass mymaster redis123
vi sentinel26380.conf
#保护模式
protected-mode no
#端口
port 26380
#守护进程
daemonize yes
#设置pid文件路径
pidfile /var/run/sentinel26380.pid
#工作路径,不用改
dir /tmp
#设置日志文件路径
logfile /home/redis-5.0.7/logs/sentinel26380.log
# 哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown
# (objective down客观down;相对应的存在sdown,subjective down,主观down)状态。
# slaves是自动发现,不用指定slaves。
sentinel monitor mymaster 192.168.3.5 6379 2
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 30000
#选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。
sentinel parallel-syncs mymaster 1
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 180000
#设置master和slaves的密码
sentinel auth-pass mymaster redis123
vi sentinel26381.conf
#保护模式
protected-mode no
#端口
port 26381
#守护进程
daemonize yes
#设置pid文件路径
pidfile /var/run/sentinel26381.pid
#工作路径,不用改
dir /tmp
#设置日志文件路径
logfile /home/redis-5.0.7/logs/sentinel26381.log
# 哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown
# (objective down客观down;相对应的存在sdown,subjective down,主观down)状态。
# slaves是自动发现,不用指定slaves。
sentinel monitor mymaster 192.168.3.5 6379 2
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 30000
#选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。
sentinel parallel-syncs mymaster 1
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 180000
#设置master和slaves的密码
sentinel auth-pass mymaster redis123
--启动sentinel
redis-sentinel /home/redis-5.0.7/config/sentinel26379.conf
redis-sentinel /home/redis-5.0.7/config/sentinel26380.conf
redis-sentinel /home/redis-5.0.7/config/sentinel26381.conf
--模拟主节点6379 down机
kill -9 44862
--观察6380的日志,发现主节点切换到6380
44975:X 02 Jan 2020 16:04:08.829 # +new-epoch 1
44975:X 02 Jan 2020 16:04:08.830 # +vote-for-leader 761a9eb056794c6d65e3858b1deac9a4ee24903a 1
44975:X 02 Jan 2020 16:04:08.832 # +sdown master mymaster 192.168.3.5 6379
44975:X 02 Jan 2020 16:04:08.909 # +odown master mymaster 192.168.3.5 6379 #quorum 3/2
44975:X 02 Jan 2020 16:04:08.909 # Next failover delay: I will not start a failover before Thu Jan 2 16:10:09 2020
44975:X 02 Jan 2020 16:04:09.128 # +config-update-from sentinel 761a9eb056794c6d65e3858b1deac9a4ee24903a 192.168.3.5 26381 @ mymaster 192.168.3.5 6379
44975:X 02 Jan 2020 16:04:09.128 # +switch-master mymaster 192.168.3.5 6379 192.168.3.5 6380
44975:X 02 Jan 2020 16:04:09.128 * +slave slave 192.168.3.5:6381 192.168.3.5 6381 @ mymaster 192.168.3.5 6380
44975:X 02 Jan 2020 16:04:09.128 * +slave slave 192.168.3.5:6379 192.168.3.5 6379 @ mymaster 192.168.3.5 6380
44975:X 02 Jan 2020 16:04:39.154 # +sdown slave 192.168.3.5:6379 192.168.3.5 6379 @ mymaster 192.168.3.5 6380
--登陆redis验证
# redis-cli -p 6380
127.0.0.1:6380> info
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.3.5,port=6381,state=online,offset=323618,lag=1
master_replid:4619c7a69d5828a94169e4bf5c4037e20c68da94
master_replid2:1add70bc388d5c1626aec411e9f1288a69243334
master_repl_offset:323892
second_repl_offset:284559
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:323892
--重启6379节点后,观察6379节点日志,恢复成6380的slave节点
44955:X 02 Jan 2020 16:09:15.073 # -sdown slave 192.168.3.5:6379 192.168.3.5 6379 @ mymaster 192.168.3.5 6380
44955:X 02 Jan 2020 16:09:25.014 * +convert-to-slave slave 192.168.3.5:6379 192.168.3.5 6379 @ mymaster 192.168.3.5 6380