【Redis学习】Sentinel集群选举机制

概要

当redis集群的主节点故障时,Sentinel集群将从剩余的从节点中选举一个新的主节点,有以下步骤:

  • 故障节点主观下线
  • 故障节点客观下线
  • Sentinel集群选举领导者
  • Sentinel领导者决定新主节点

一、三个定时任务

1.每隔10秒

每隔10秒,每个Sentinel节点会向主节点和从节点发送info命令,用以获取最新的拓扑结构图。
在这里插入图片描述
该定时任务的作用主要体现在三个方面:

  • 通过向主节点执行info命令,获取从节点信息(这也是为啥Sentinel节点不需要显示配置监控从节点);
  • 当有新的从节点加入时,都可以立刻感知;
  • 节点不可达或者故障转移后,可以通过Info命令实时更新节点拓扑结构。

2.每隔2秒

在这里插入图片描述

每隔2秒,每个Sentinel节点会向Redis数据节点的_sentinel_:hello频道上发送该Sentinel节点对于主节点的判断,以及当前Sentinel节点的信息,同时每个Sentinel节点也会订阅该频道,来了解其他Sentinel节点以及他们对主节点的判断。因此,这个定时任务主要作用是:

  • 发现新的Sentinel节点
  • Sentinel节点之间交换主节点的状态,可作为后面客观下线以及领导者选举的依据

3.每隔1秒

每隔1秒,每个Sentinel节点会向主节点、从节点其余Sentinel节点发送一条ping命令做一次心跳检测,来确认这些节点当前是否可达。
这个定时任务是节点失败判定的重要依据。
在这里插入图片描述

二、主观下线

上节中的第三个定时任务,每个Sentinel节点会每隔1秒对主节点、从节点、其他Sentinel节点发送ping命令做心跳检测,当这些节点超过down-after-milliseconds没有进行有效回复,Sentinel节点会对该节点做失败判定,这个行为就叫做主观下线.
在这里插入图片描述
如果主观下线的redis节点是从节点或者是Sentinel节点,就没有后续的故障转移操作。

三、客观下线

当Sentinel主观下线的节点为主节点时,该Sentinel节点可以通过命令sentinel is_master_down_by_addr来获得其他Sentinel节点对于该主节点的判断,当超过quorum个数,Sentinel节点任务该主节点确实有问题,这时该Sentinel节点会做出客观下线的决定,也就是大部分Sentinel节点对主节点的下线做出来同意的判定,那么这个判定就是客观的。
在这里插入图片描述

四、Sentinel领导者选举

当Sentinel节点对于主节点已经做了客观下线,并不是马上就可以开始故障转移,而是先从Sentinel节点中选举出一个领导者,让领导者去完成故障转移的工作。Redis使用Raft算法实现领导者选举:
(1) 每个Sentinel节点都有资格成为领导者,当它确认主节点主观下线时,会向其他Sentinel节点发送sentinel is-master-down-by-addr命令,要求将自己设置为领导者;
(2) 收到命令的Sentinel节点,如果没有同意过其他Sentinel节点的sentinel is-master-down-by-addr命令,将同意该请求,否则拒绝;
(3) 如果该Sentinel节点发现自己的票数已经大于等于max(quorum, num(sentinels)/2+1),那么它将成为领导者;
(4) 如果此过程没有选举出领导者,将进入下一次选举。
在这里插入图片描述

五、故障转移

Sentinel领导者负责故障转移,具体步骤:

  1. 从节点中选出一个节点作为新的主节点。选择方法如下:
    在这里插入图片描述

  2. Sentinel领导者对1中选举出来的从节点执行slaveof no one命令,让其成为主节点。

  3. Sentinel领导者向剩余的从节点发送命令,让它们成为新主节点的从节点。

  4. Sentinel节点集合会将原来的主节点更新为从节点,并保持对其关注,当其恢复后命令它去复制新的主节点。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值