redis健康检查与故障转移

哨兵三个定时监控任务

  1. 每隔10s每隔sentinel节点会向主节点和从节点发送info命令获取最新的拓扑结构
  2. 每隔2S,每个sentinel节点会向redis数据节点的__sentiel__:hellp发送sentinel节点信息,用于了解新节点相关信息,如果是新节点则将其保存下来。并与其建立连接。
  3. 每隔1S,每隔sentinel节点会向主节点和从节点其余的sentinel节点发送平命令作为心跳监测,来确定这些节点是否可达。

总结

  1. 每隔10s发送获取拓扑心跳
  2. 每隔2S获取新节点数据
  3. 每隔1S监测节点和哨兵通信正常

下线规则

  1. 主观下线:涉及down-after-millseconds参数,如果某一个哨兵与某一个redis节点在这个参数时间中没有连接成功,则说明有问题,则下线
  2. 客观下线:如果通过主观下线的是主节点的时候,由于涉及到后面的leader选举,则需要进行客观判断,,通过参数is-master-down-by-addr向所有的哨兵节点询问,如果大部分都认为该节点有问题,则进行下线操作。

sentinel选举

Raft

  1. 发送 is-master-down-by-addr进行要求将自己设置为leader.
  2. 收到命令的sentinel会判断,如果其没有同意过其他的sentinel节点的命令则同意,否则拒绝
  3. 如果该sentinel发现自己的票数大于等于max(quorum,num(sentinels)/2);则将成为领导者
  4. 将进入下一次选举

总结 选举的过程非常快,基本上谁先完成客观下线,则谁就是领导者

故障转移

当sentinel选举完成后,需要对数据进行同步,则会出现选举redis主节点

  1. 过滤(主观下线,断线)的节点
  2. 选择slave-priority优先级搞的节点列表,如果存在则返回,不存在则继续
  3. 选择复制偏移量最大的从节点,如果存在则返回,不存在则继续
  4. 选择runid最小的从节点

总结 过滤无用节点->选择优先级高->选择偏移量大->选择runid最小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值