首页/数据/数据库速查/哨兵启动与运行方式
Redis 运维与场景124 条

哨兵启动与运行方式

哨兵是特殊的 Redis 进程:以 sentinel 模式运行、只有 26379 端口,不存业务数据;systemd/容器化部署要挂对配置文件与目录。

数据库速查数据更新于 2026-10-13

哨兵是独立的 Redis 进程

哨兵以特殊模式运行:它本身是一个 Redis 进程,但不存储业务数据,只负责监控主从、判定故障、选举领头哨兵并执行故障转移。默认监听 26379 端口,配置全部写在 sentinel.conf 中,运行过程中产生的状态变更会被自动改写回该文件,因此配置文件所在目录必须可写。

基本信息

适用平台Redis 2.8+ 的 Sentinel;建议全集群版本一致
默认端口26379(客户端命令端口,与实例端口不同)
启动方式redis-sentinel sentinel.conf 或 redis-server sentinel.conf --sentinel
配置持久化状态变化会自动 rewrite sentinel.conf
运行数据自身不存业务数据,只保存监控与选主状态

典型使用场景

  • 为主从架构加入自动故障转移能力
  • 切换演练时手工触发 FAILOVER 验证流程是否可用
  • 查看当前主库地址:应用侧或中间件需要动态获取
  • 巡检哨兵之间的互相发现是否完整
  • 容器化部署时核对宣告地址与端口映射

启动与验证

启动与验证
redis-sentinel /etc/redis/sentinel.conf
# 或等价写法
redis-server /etc/redis/sentinel.conf --sentinel
# 连通性与状态确认
redis-cli -p 26379 PING              # 期望返回 PONG
redis-cli -p 26379 INFO sentinel     # 关注 sentinel_masters 与 master0 状态
redis-cli -p 26379 SENTINEL masters
redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster
# systemd 场景下查看服务状态
systemctl status redis-sentinel

常用命令速查

命令作用输出要点
PING判断哨兵是否存活返回 PONG
INFO sentinel整体状态概览sentinel_masters 数量与 master0 status
SENTINEL masters列出被监控的主库包含地址、quorum、故障转移统计
SENTINEL sentinels列出同主库的其他哨兵用于确认互相发现是否完整
SENTINEL ckquorum检查能否形成多数派部署后必做自检
SENTINEL failover手工触发一次故障转移演练专用,会真实切换
哨兵与 Redis 实例可以同机部署(端口不同),但生产更建议分散在不同故障域;同机部署时要留意内存与 CPU 争用,尤其是实例做快照 fork 的时刻。
容器化部署时哨兵默认可能以容器内部地址宣告自己:其他哨兵发现不到它,永远凑不齐多数派,需要通过 announce-ip 与端口映射显式声明外部可达地址。
哨兵自身不需要持久化业务数据的机制,但是它的配置文件会被实时改写:纳入版本管理时要清楚这是运行状态而不是静态配置,直接回滚文件可能把已发现的从库与选举信息一起抹掉。

易错点

  • sentinel.conf 所在目录权限不对:哨兵无法回写配置,重启后状态回到旧版本,甚至丢掉已发现的其他哨兵
  • 容器中不配置宣告地址:哨兵互相不可见,故障转移无法达成多数派共识
  • 只启动一个哨兵:数量不足时无法完成选举,等于没有自动切换能力
  • 把哨兵当数据实例使用:向 26379 写入业务键会失败,两者职责完全不同

数据来源与参考

  • Redis 官方文档: 运行 Sentinel
  • Redis 官方文档: INFO sentinel

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌