Redis哨兵(Sentinel)介绍(用于监控Redis集群并在主节点故障时自动完成故障转移的机制)监控、自动故障转移、通知、服务发现、主观下线SDOWN、客观下线ODOWN、Cluster集群
文章目录
在 Redis 的高可用架构中, 哨兵(Sentinel) 是一种 用于监控 Redis 集群并在主节点故障时自动完成故障转移的机制。简单来说, Redis Sentinel 的作用是让 Redis 实现自动高可用(High Availability)。
下面从 作用、工作机制、架构和基本使用几个方面解释。
一、Redis 哨兵是什么
Redis Sentinel 是 Redis 官方提供的一套 高可用解决方案,主要用于管理 Redis 的 主从复制架构。
它可以完成以下工作:
-
监控(Monitoring)
持续监控 Redis 主节点和从节点是否正常运行。 -
自动故障转移(Failover)
如果主节点宕机,自动选举一个从节点升级为新的主节点。 -
通知(Notification)
当 Redis 状态发生变化时发送通知。 -
服务发现(Configuration Provider)
客户端可以通过 Sentinel 获取当前的主节点地址。
二、为什么需要 Sentinel
在 Redis 主从架构中:
Master
/ \
Slave Slave
问题:
如果 Master 宕机:
- Redis 无法自动恢复
- 应用无法写入数据
- 需要人工切换主节点
引入 Sentinel 后:
Sentinel Sentinel Sentinel
\ | /
Redis集群
Master -> Slave -> Slave
当 Master 宕机时:
- Sentinel 发现故障
- 选举新的 Master
- 修改从节点复制关系
- 通知客户端新的 Master 地址
整个过程 自动完成。
三、Sentinel 的工作机制
Sentinel 使用 投票机制 + 心跳检测 来判断节点状态。
1 心跳检测
Sentinel 会定期发送:
PING
如果 Redis 没有回复:
就认为节点 主观下线(SDOWN)。
2 客观下线
如果 多个 Sentinel 都认为 Master 挂了:
就会形成 客观下线(ODOWN)。
例如:
Sentinel1 -> 认为 Master 挂
Sentinel2 -> 认为 Master 挂
Sentinel3 -> 认为 Master 挂
超过配置的 quorum 数量后:
Master = ODOWN
3 领导者选举
Sentinel 之间会进行 Leader 选举:
选出一个 Sentinel 负责执行 故障转移。
4 故障转移流程
故障转移步骤:
1️⃣ 选举 Sentinel Leader
2️⃣ 选择一个 Slave
3️⃣ 将 Slave 升级为 Master
4️⃣ 其他 Slave 指向新 Master
5️⃣ 通知客户端
最终结构:
Old Master (down)
New Master
|
Slave
|
Slave
四、Sentinel 架构建议
实际生产环境建议:
3 个 Sentinel
示例:
Sentinel1
Sentinel2
Sentinel3
原因:
- 防止单点故障
- 支持投票机制
- 提高稳定性
五、Sentinel 配置示例
Sentinel 配置文件:
sentinel.conf
核心配置:
sentinel monitor mymaster 127.0.0.1 6379 2
解释:
mymaster -> 主节点名称
127.0.0.1 -> 主节点地址
6379 -> 端口
2 -> quorum(至少2个sentinel认为挂了)
启动 Sentinel:
redis-sentinel sentinel.conf
或
redis-server sentinel.conf --sentinel
六、客户端如何连接
应用程序不直接连接 Redis Master,而是连接 Sentinel。
客户端流程:
1 查询 Sentinel
2 获取当前 Master
3 连接 Master
例如 Java 中(使用 Spring Boot):
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=127.0.0.1:26379
七、Sentinel 与 Redis Cluster 的区别
| 特性 | Sentinel | Cluster |
|---|---|---|
| 功能 | 高可用 | 高可用 + 分片 |
| 数据存储 | 单 Master | 多 Master |
| 扩展能力 | 一般 | 强 |
| 适用场景 | 中小系统 | 大规模系统 |
简单理解:
- Sentinel = 主从高可用
- Cluster = 分布式 Redis
八、总结
Redis Sentinel 的核心作用是:
为 Redis 提供自动故障恢复能力。
主要功能:
- 监控 Redis 节点
- 自动故障转移
- 客户端服务发现
- 提高系统高可用
典型架构:
Redis Master
|
Slave
|
Slave
+ 3 Sentinel
更多推荐




所有评论(0)