在 Redis 的高可用架构中, 哨兵(Sentinel) 是一种 用于监控 Redis 集群并在主节点故障时自动完成故障转移的机制。简单来说, Redis Sentinel 的作用是让 Redis 实现自动高可用(High Availability)

下面从 作用、工作机制、架构和基本使用几个方面解释。


一、Redis 哨兵是什么

Redis Sentinel 是 Redis 官方提供的一套 高可用解决方案,主要用于管理 Redis 的 主从复制架构

它可以完成以下工作:

  1. 监控(Monitoring)
    持续监控 Redis 主节点和从节点是否正常运行。

  2. 自动故障转移(Failover)
    如果主节点宕机,自动选举一个从节点升级为新的主节点。

  3. 通知(Notification)
    当 Redis 状态发生变化时发送通知。

  4. 服务发现(Configuration Provider)
    客户端可以通过 Sentinel 获取当前的主节点地址。


二、为什么需要 Sentinel

在 Redis 主从架构中:

        Master
        /   \
     Slave  Slave

问题:

如果 Master 宕机

  • Redis 无法自动恢复
  • 应用无法写入数据
  • 需要人工切换主节点

引入 Sentinel 后:

     Sentinel Sentinel Sentinel
          \      |      /
             Redis集群
        Master -> Slave -> Slave

Master 宕机时

  1. Sentinel 发现故障
  2. 选举新的 Master
  3. 修改从节点复制关系
  4. 通知客户端新的 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
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐