首页/数据/数据库速查/哨兵部署要点(奇数、跨机、版本一致)
Redis 运维与场景124 条

哨兵部署要点(奇数、跨机、版本一致)

部署规范:哨兵数量为奇数(3/5)、分布在不同物理机/可用区、版本与配置一致、监控告警接入、定期演练切换。

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

哨兵部署的六条纪律

哨兵集群能否真的顶住故障,取决于部署方式而不是配置文件写得多漂亮:数量必须是奇数才能形成多数派、必须分散在不同物理机或可用区、配置要统一模板管理、网络要双向可达、版本要与实例匹配、并且定期做故障转移演练。把这些纪律落到实处,自动切换才不是纸面能力。

基本信息

适用平台Redis 2.8+ 的 Sentinel;建议全环境版本一致
数量要求至少 3 个,容忍 1 个故障;5 个容忍 2 个
分布要求跨物理机或可用区,避免同机同时失效
配置要求统一模板下发,禁止手工修改单台
演练要求季度级故障转移演练并验证客户端切换

部署要点

  • 数量为奇数:3 起,按「剩余多数派仍能选举」规划跨机房布局
  • 配置统一:sentinel.conf 由模板生成,避免单台被手改后行为不一致
  • 网络连通:哨兵之间、哨兵与实例之间双向可达,注意宣告地址与外网映射
  • 版本一致:哨兵与 Redis 实例大版本尽量对齐,避免协议行为差异
  • 演练常态化:定期触发故障转移并验证客户端是否自动重连
  • 监控到位:关注主观下线与客观下线事件、切换次数、老主库残留连接

部署自检

部署自检
# 检查能否形成多数派
redis-cli -p 26379 SENTINEL ckquorum mymaster
# 列出同主库的其他哨兵,确认互相可见
redis-cli -p 26379 SENTINEL sentinels mymaster | grep -c name
# 查看被监控主库的完整信息
redis-cli -p 26379 SENTINEL masters
# 演练时手工触发一次切换(会真实改变主库)
redis-cli -p 26379 SENTINEL failover mymaster

部署检查项

检查项合格标准风险
哨兵数量奇数,至少 3 个数量不足无法选举
部署位置不同物理机或可用区同机部署时一起失效
互相发现每个哨兵都能看到其他哨兵发现不全导致投票不足
配置管理由模板统一生成手工修改造成行为漂移
版本一致性与实例大版本对齐协议差异引发误判
演练记录有定期演练与客户端验证真故障时才发现流程不可用
在两台机器上部署 3 个哨兵(其中一台跑两个)比分散到三台更危险:那台机器一旦故障会同时失去两个投票源,仍然无法形成多数派。
把哨兵与主库部署在同一台机器:机器故障时两者一起消失,故障转移直接失去仲裁能力。

易错点

  • 哨兵与主库同机部署:机器故障时哨兵与主库一起消失,自动切换无从谈起
  • 从不演练:真故障时才发现客户端库没有重连逻辑,切换等于停机
  • 两台机器部署 3 个哨兵:故障域没有真正分开,多数派依然脆弱
  • 只部署哨兵不管配置一致性:单台被手工修改后行为漂移,故障判定结果互相矛盾

数据来源与参考

  • Redis 官方文档: Sentinel 部署建议

相关工具

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