一 介绍
在原来主从复制的基础上,让每个节点都成为sentinel节点。
二 故障转移
这个其实手动也能完成,就是sentinel帮我们自动监控,自动完成这一功能
三 配置
port 26379
dir /tmp
daemonize yes
logfile "26379.log"
//监控的集群名称 mymaster 兼容的ip+端口 后面这2表示,如果有2个以上sentinel发现宕机了,
//开启哨兵机制
sentinel monitor mymaster 127.0.0.1 6379 2
//30秒ping不同,代表这个redis挂掉了
sentinel down-after-milliseconds mymaster 30000
//故障转移间隔3分钟(指定时间间隔进行一次故障转移)
sentinel failover-timeout mymaster 180000
下面我启动了三个redis server
- 7000 主节点
- 7001 从节点
7002 从节点
又启动了三个sentinel
列表内容
- 26379 哨兵1
- 26380 哨兵2
- 26381 哨兵3
下面我故意把7000关闭掉,看看发生什么变化
//日志信息
//发现7000挂掉了
+sdown master mymaster 127.0.0.1 7000
+new-epoch 6
//内部选一个哨兵领导
+vote-for-leader a888710d739b8ae27bb2c3141c09e62b75241813 6
//3个哨兵,其中2个已经发现7000挂掉了
+odown master mymaster 127.0.0.1 7000 #quorum 3/2
//从哨兵领导中更新配置文件
+config-update-from sentinel a888710d739b8ae27bb2c3141c09e62b75241813 127.0.0.1 26379 @ mymaster 127.0.0.1 7000
//将7002当成主节点
+switch-master mymaster 127.0.0.1 7000 127.0.0.1 7002
//将7001作为7002的从节点
+slave slave 127.0.0.1:7001 127.0.0.1 7001 @ mymaster 127.0.0.1 7002
//将7000作为7002的从节点
+slave slave 127.0.0.1:7000 127.0.0.1 7000 @ mymaster 127.0.0.1 7002