Redis 哨兵

1. 基本概念

1.1 主从复制问题

(1)一旦主节点出现问题,需要手动将一个从节点晋升为主节点。同时,需要修改应用法主节点地址。
(2)主节点写能力受到单机限制。
(3)主节点存储能力受到单机限制。

1.3 Redis Sentinel 高可用性

(1)Redis Sentinel 是一个分布式框架,包含若干Sentinel节点Redis 数据节点。每个Sentinel节点会对数据节点和其他Sentinel节点进行监控,发现其他节点不可达时,会对节点进行下线标识。如果被标识的是主节点,还会和其他Sentinel节点“商量”,当大多数节点都认为主节点不可达到时,选举出一个Sentinel节点来完成自动故障转移工作,同时将变化通知给其他Redis应用方。
(2)故障转移的过程:
a. 主节点出现故障,此时两个从节点与主节点失去连接,主从复制失败。
b, 每个Sentinel 节点通过定期监控发现主节点出现故障。
c. 多个Sentinel节点对主节点的故障达成一致,选取出sentinel-3节点作为领导者负责故障。
d. sentinel3执行故障转移:

  • 选举出一个从节点,执行 slaveof no one, 把他变成新的主节点,更新应用方的主节点信息,重启应用方。
  • 执行命令,原来的从节点去复制新的主节点。
  • 等到原来主节点回复后,让他去复制新的主节点。

1.5 实现原理

1.5.1 三个定时监控任务

(1)每隔10秒,每个Sentinel 节点会向主节点和从节点发送info命令获取最新的拓扑结构

(2)每隔2秒,每隔Sentinel节点会向Redis数据节点的*sentinel:hello频道发送当前Sentinel节点对主节点的判断。

(3)每隔1秒,每隔Sentinel节点会向主节点,从节点,其余Sentinel节点发送一条ping命令,做一次心跳检测,来确认这些节点是否可达到。

1.5.2 主观下线和客观下线

(1)主观下线:sentinel做心跳检测,当这些节点超过down-after-milliseconds没有回复,Sentinel就会对该节点做失败判断,这个叫主观下线。

(2)客观下线:当Sentinel主观下线的节点是主节点时,该Sentinel节点会向其他节点询问他们对主节点的判断,根据大部分Sentinel节点都对主节点的下线做了同意的判定,那么这个判定是客观的

1.5.3 领导者Sentinel 节点的选举

(1)Redis 使用Raft 算法实现领导者的选举。
(2)每个Sentinel都有资格成为领导者,向其他sentinel节点发送命令。收到命令的节点,如果没收到其他节点的命令,就会接受这个命令。
(3)当Sentinel节点发现自己的票数>一半的sentinel数,那么他将成为领导者。
(4)没有,将进入下一轮选举。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值