redis系列5——Sentinel模式

RedisSentinel是Redis的高可用解决方案,当主节点故障时,Sentinel节点能自动完成故障发现、转移,以及通知应用方。Sentinel节点通过监控和投票机制确定主节点故障,并选举新的主节点,确保系统的持续运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、Redis Sentinel架构

二、Redis Sentinel故障转移过程

三、Sentinel主要功能介绍


        Redis在主从复制模式下,如果主节点出现故障,需要人工将从节点晋升为主节点,还需要通知从节点更新新的主节点信息。从Redis的2.8版本开始引入Redis Sentinel(哨兵),Sentinel模式当主节点出现故障时,Redis Sentinel能自动完成故障发现和故障转移并通知应用方,实现了高可用。

一、Redis Sentinel架构

        Redis Sentinel包含了多个Sentinel节点(多个是为了防止误判)和Redis数据节点,主节点写数据同步到从节点,从节点可当作备份也可以提供读(分担读压力)。每个Sentinel节点会对数据节点和其余Sentinel节点进行监控,当它发现节点不可达时,会对节点做下线标识。如果被标识的是主节点,它还会和其他Sentinel节点进行“协商”,大多数Sentinel节点都认为主节点不可达时,它们会选举出一个Sentinel节点来完成自动故障转移的工作,同时会将这个变化实时通知给Redis应用方。自动完成故障发现和故障转移。Redis Sentinel中的Sentinel节点个数应该为大于等于3且最好为奇数(便于选举)。

二、Redis Sentinel故障转移过程

1.主节点出现故障,从节点与主节点失去联系,导致主从复制失败。

2.每个Sentinel节点通过定期监控发现了主节点出现故障。

3.多个Sentinel节点都认为主节点故障,选举出sentinel-1节点作为负责故障转移的领导者。

4.sentinel-1节点执行故障转移。

故障转移步骤:

  1. 执行命令slaveof no one关闭复制,从节点变更为主节点。
  2. 其余从节点slaveof new master变更成新的master的从节点。
  3. notice client:故障转移后sentinel结点会将结果通知给客户端(应用方)。
  4. 原主节点恢复后变成从节点去复制新的主节点信息。

从节点变为主节点的选取规则

  • 过滤掉断线或者主观下线、5秒内没回复过Sentinel节点ping响应、与主节点失联超过down-after-milliseconds*10秒。
  • 选择从节点优先级最高的从节点列表,如果存在则返回不存在则继续。
  • 选择复制偏移量最大的从节点(复制的最完整),如果存在则返回不存在则继续。
  • 选择runid最小的从节点。

5.故障转移后的结构

三、Sentinel主要功能介绍

1.监控:Redis Sentinel通过三个定时监控任务完成对各个节点发现和监控:

  • 每隔10秒每个Sentinel节点会向主、从节点发送info命令获取最新的结构。
  • 每隔1秒每个Sentinel节点会向主、从节点、其余Sentinel节点发送一条ping命令做一次心跳检测,来确认这些节点当前是否可达。
  • 每隔2秒每个Sentinel节点会向Redis数据节点的__sentinel__:hello频道上发送该Sentinel节点对于主节点的判断以及当前Sentinel节点的信息。Sentinel节点之间交换主节点的状态,作为后面客观下线以及领导者选举的依据。

2.通知:Sentinel会把故障转移的结果通知给应用方。

3.主节点故障转移:从节点自动晋升为主节点并维护后续正确的关系。

4.配置提供者:客户端在初始化的时候链接的是Sentinel节点集合,从Sentinel节点集合中获取主节点信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值