Redis知识梳理之多机数据库篇--Sentinel(哨兵)

Sentinel(哨兵)是Redis高可用性的解决方案:由一个或多个Sentinel示例组成Sentinel系统,监视任意多个主服务器及其从服务器。

Sentinel本质上是一个运行在特殊模式下的Redis服务器。
Sentinel可视作主服务器的一个客户端,每10秒一次向被监视的主服务器发送INFO命令,通过收到的回复来获取主服务器的信息。

1.1 主观下线

Sentinel每秒一次向所有与它建立了命令连接的实例(包括主服务器、从服务器、其他Sentinel)发送PING命令,通过回复来判断是否在线。如果在一定时间返回无效回复,就判断为主观下线。

1.2 客观下线

Sentinel一旦判断某个主服务器为主管下线后,为了确认,会向监视该主服务器的其他Sentinel进行询问,超过一定数量的回复下线就将其判断为客观下线。

1.3 选举领头Sentinel

当一个主服务被判断客观下线时,监测该服务器的各个Sentinel就会进行协商,选举一个领头的Sentinel,由领头Sentinel对下线的主服务器进行故障转移操作

选举方式:Raft算法
每个Sentinel都有被选举的机会,通过投票选举,过半当选。

1.4 故障转移

领头Sentinel执行的故障转移操作有三个步骤:

  1. 从下线的主服务器属下的所有从服务器里面挑选一个,将其转换为主服务器
  2. 其他的从服务器改为复制新的主服务器
  3. 将下线的主服务器设置为新主服务器的从服务器

1.4.1 选举新主服务器

领头Sentinel将所有从服务器保存到一个列表,剔除下线的、5秒内没有回复的、与下线主服务器断开超时的从服务器,保证备选的从服务器都是正常在线并成功通信的,且数据比较新。
最后根据下面规则挑选(存在相同的就看下一个条件):

  1. 优先级最大
  2. 偏移量最大
  3. ID最小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值