接着其他Sentinel也陆续发现故障,这个时候其中一个Sentinel就会发起投票。一定数量的哨兵(在配置文件中指定)确认Master被标记为主观下线,此时将Master标记为客观下线。
3.sentinel的leader选举:
要想完成故障切换(将故障master剔除,并将一个slave提升为master)就必须先选举一个leader。最先发现故障的sentinel向其他哨兵发起请求成为leader,其他哨兵在没有同意别的哨兵的leader请求时,就会把票投给该sentinel。当半数以上的sentinel投票通过后就认定该sentinel为leader。接下来的故障切换有该leader完成。
4.master选举:
leader选好后将故障master剔除,从slave中挑选一个成为master。遵照的原则如下:
-
slave的优先级
-
slave从master那同步的数据量,那个slave多就优先。
5.新Master再通过发布订阅模式通知所有sentinel更新监控主机信息。
6.故障的主服务器修复后将成为从服务器继续工作。
故障发生
故障切换
Master重新上线后
哨兵模式配置
本实验在一台机器上完成,创建不同端口的redis实例。
1.创建redis实例
[root@redis ~]# nohup redis-server --port 6380 >> /data/redis/log/6380.log 2>&1 &
[root@redis ~]# nohup redis-server --port 6381 >> /data/redis/log/6381.log 2>&1 &
[root@redis ~]# nohup redis-server --port 6382 >> /data/redis/log/6382.log 2>&1 &
[root@redis ~]# ps -ef |grep redis
root 16421 16314 0 03:01 pts/1 00:00:00 redis-server *:6380
root 16427 16314 0 03:01 pts/1 00:00:00 redis-server *:6381
root 16431 16314 0 03:01 pts/1 00:00:00 redis-server *:6382