文章目录
Sentinel
Sentinel本质是一个运行在特殊模式
下的Redis服务器
,它可以实现主从库自动切换,并且在挂掉的主库恢复之后,让其自动成为新主库的从库。防止系统中同时存在两个主库的脑裂现象。
哨兵主要负责的就是三个任务:监控、选主、通知
。
主库真的挂了吗?——监控
该选择哪个从库作为主库?——选主
怎么把新主库的相关信息通知给从库和客户端呢?——通知
-
监控
Sentinel以每秒一次
的频率向实例(包括主服务器、从服务器、其他Sentinel)发送PING
命令,并根据实例对PING命令的回复来判断实例是否在线,当Sentinel将某个实例判断为主观下线
后。 它会向同样监视这个主服务器的其他Sentinel进行询问,看它们是否同意这个主服务器进入主观下线状态。当Sentinel收集到足够多的主观下线投票之后,它会将主服务器判断为客观下线
,并发起一次针对主服务器的故障转移操作。即选主
-
选主
主库挂了以后,哨兵就需要从很多个从库里,按照一定的规则选择一个从库实例,把它作为新的主库。具体步骤如下:
第一步:选举领头Sentinel
第二步: 挑选出一个状态良好、 数据完整的从服务器换为主服务器。
第三步:修改从服务器的复制目标
第四步:将已下线的主服务器设置为新的主服务器的从服务器 -
通知
在执行通知任务时,哨兵会把新主库
的连接信息通知
给其他从库,让它们和新主库建立连接,并进行数据复制。 当所有从服务器都开始复制新的主服务器时,故障转移
操作执行完毕。
同时,哨兵会把新主库的连接信息通知
给客户端,让它们把写请求
发到新主库上。
另外, Sentinel 还会继续监视已下线的旧主库
,并在它重新上线时, 将它设置为新的主服务器的从服务器
。防止脑裂