订阅哨兵的事件
哨兵在故障切换过程中会通过发布订阅广播事件,订阅 +switch-master 等频道就能让运维系统在主从切换完成时立即感知,进而告警、刷新连接池或记录时间线。事件是即时推送、不做持久化的,断连期间的消息不会补发,因此订阅之外必须保留定期轮询作为兜底。
基本信息
| 适用 | Redis Sentinel 全版本 |
|---|---|
| 默认端口 | 26379 |
| 订阅方式 | PSUBSCRIBE 模式订阅或 SUBSCRIBE 指定频道 |
| 兜底手段 | 定期执行 SENTINEL get-master-addr-by-name 轮询主库地址 |
订阅示例
订阅示例
redis-cli -p 26379 PSUBSCRIBE + # 订阅全部事件,便于先观察再筛选
redis-cli -p 26379 PSUBSCRIBE +switch-master # 只订阅切换完成事件(最常用)
redis-cli -p 26379 PSUBSCRIBE +sdown # 主观下线与恢复下线
redis-cli -p 26379 PSUBSCRIBE +odown # 客观下线需要多数哨兵认同
redis-cli -p 26379 PSUBSCRIBE +promoted-slave # 从库被提升为主库
redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster # 轮询兜底,补齐断连期间的事件
redis-cli -p 26379 SENTINEL sentinels mymaster # 查看其他哨兵节点常见事件与处置
| 事件 | 含义 | 运维动作 |
|---|---|---|
| +switch-master | 主库切换完成 | 刷新连接池、记录时间线、触发通知 |
| +sdown / -sdown | 主观下线与恢复 | 关注是否持续,单点误判会自行恢复 |
| +odown / -odown | 客观下线与恢复 | 多数哨兵认同,通常伴随切换 |
| +promoted-slave | 从库被提升 | 核对新主地址与数据量 |
| +slave-reconf-sent / done | 从库重配完成 | 确认其他从库已指向新主 |
典型使用场景
- 切换后自动刷新应用连接池,减少人工介入
- 把切换事件写入变更时间线,用于事后复盘
- 监控告警:切换频繁说明实例或网络不稳定
- 自动化脚本触发:切换后执行拓扑校验与通知
- 多套环境统一订阅,集中记录所有集群的切换记录
发布订阅通道不持久化、不重放:订阅进程断线期间的事件会全部丢失,必须配合定期轮询主库地址作为兜底。
消息体包含事件名与主库名,切换事件还会带上旧地址与新地址,解析这些字段即可自动更新下游配置。