redis的哨兵机制

redis哨兵

Redis Sentinel,即Redis哨兵。哨兵的核心功能是主节点的自动故障转移。对比主从复制 redis主从复制 来说,哨兵不需要手动修改主从关系以及配置文件端口等信息,一个节点挂掉之后会进行领导者选举和故障转移。

哨兵功能的描述:

监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常。
自动故障转移(Automatic failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。
配置提供者(Configuration provider):客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址。
通知(Notification):哨兵可以将故障转移的结果发送给客户端。
其中,监控和自动故障转移功能,使得哨兵可以及时发现主节点故障并完成转移;而配置提供者和通知功能,则需要在与客户端的交互中才能体现。

哨兵的高可用和架构

如图:
在这里插入图片描述
哨兵做故障转移是基于三个定时任务的执行的:

(1)每隔10s每个sentinel会对master节点和slave节点执行info命令,作用就是发现slave节点,并且确认主从关系

(2)每隔两秒,sentinel都会通过master节点内部的channel来交换信息(每隔2秒发一次 publish/subscribe),作用是通过master节点的频道来交互每个sentinel对master节点的判断信息

(3) 每隔一秒每个sentinel对其他的redis节点(master,slave,sentinel)执行ping操作,对于master来说,若超过30s内没有回复,就对该master进行主观下线并询问其他的Sentinel节点是否可以客观下线

客观下线和主观下线

 主观下线:每个Sentinel节点对Redis节点失败的“偏见”

 客观下线:所有Sentinel节点对Redis节点失败达成共识

领导者选举

进行故障转移之前需要选举leader。

选举:

1、每个做主观 下线的Sentinel节点向其他Sentinel节点发送命令,要求将它设置为领导者。
2、收到命令的Sentinel节 点如果没有同意通过其他Sentinel节点发送的命令,那么将同意该请
求,否则拒绝
3、如果该Sentine|节 点发现自己的票数已经超过Sentinel集合半数且超过quorum ,那么它将
成为领导者。
4、如果此过程有多 个Sentinel节点成为了领导者,那么将等待一段时间重新进行选举。
5、通过sentinel is-master-down-by-addr命令都希望成为领导者

故障转移

1、从slave节点中选出一个合适的节点作为新的master节点
2、对上面的slave节点执行slaveof no one命令让其成为master节点。
3、向剩余的slave节点发送命令,让它们成为新master节点的slave节点,复制规
则和parallel-syncs参数有关。
4、更新对原来master节点配置为slave ,并保持着对其关注,当其恢复后命
令它去复制新的master节点。

合适的节点怎么选择

1、选择slave-priority(slave节点优先级)最高的slave节点,如果存在则返回,不
存在则继续。
2、选择复制偏移量最大的slave节点(复制的最完整) ,如果存在则返回,不存在则
继续。
3、选择runId最小的slave节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值