Sentinel nodes 哨兵
logfile pidfile dir
哨兵的作用
哨兵一定要配集群,集群中的哨兵数最好是奇数,方便投票
quorum参数:确认master客观下线的最少的哨兵数量
网络是不可靠的,有时候一个sentinel会因为网络堵塞而误以为一个master redis已经死掉了,在sentinel集群环境下需要多个sentinel万互相沟通来确认某个master是否真的死了,quorum这个参数是进行客下线的一个依据,意思是至少有quorum个sentinel认为这个master有故障,才会对这个master进行下线以及故障转移。因为有的时候,某个sentinel节点可能因为自身网络原因,导致无法连接master,而此时master并没有出现故障,所以,这就需要多个sentinel都一致认为该master有问题,才可以进行下一步操作,这就保证了公平性和高可用。
主观下线 (Subjectively Down)
SDOWN(主观不可用)是单个sentinel自己主观上检测到的关于master的状态,从sentinel的角度来看如果发送了PING心跳后,在一定时间内没有收到合法的回复,就达到了SDOWN的条件。
sentinel配置文件中的down-after-milliseconds设置了判断主观下线的时间长度(默认30秒)
客观下线 (Object Down)
quorum这个参数是进行客观下线的一个依据,法定人数/法定票数
意思是至少有quorum个sentinel认为这个master有故障才会对这master进行下线以及故障转移。因为有的时候,某个sentinel节点可能因为自身网络原因导致无法连接master,而此时master并没有出现故障,所以这就需要多个sentinel都一致认为该master有问题,才可以进行下一步操作,这就保证了公平性和高可用。
兵王选举
如果主机达到了客观下线标准,则会在哨兵集群中选择一个领导者哨兵节点,并由这个领导者节点进行failover(故障迁移)
通过Raft算法选举出领导者哨兵
选出新master的过程
新主登基
- 先比较priority的值,最高的则成为master(如果priority分别卫10,25,100,应该选择priority为10的那台从机)
- 如果priority相等,则比较replication offset,哪台从机复制的内容多,则谁成为master
- 如果replication offset都一样,则比较Run Id(字典顺序,ASCII码)
群臣俯首
旧主拜服
将之前已下线的老master设置为新选出的新master的从节点,当老master重新上线后,它会成为新master的从节点
Sentinelleader会让原来的master降级为slave并恢复正常工作
failover(故障迁移)操作均有sentinel自己独立完成,无需人工干预