redis哨兵至少需部署3个节点,少于3个无法实现容错:3节点可容忍1个宕机并依靠多数派(quorum=2)完成客观下线与故障转移;2节点易因网络抖动僵局,1节点无法判别真实故障。

为什么不能只用 2 个哨兵节点
2 个哨兵在故障判定时天然无法形成多数派——quorum 设为 1 容易误切(单点网络抖动就触发 failover),设为 2 又要求双方一致,一旦任一哨兵短暂失联(比如 GC 暂停、防火墙策略变更、protected-mode 阻断),整个集群就瘫痪:+sdown 日志刷屏,但永远不出现 +odown 或 +switch-master。
- 哨兵之间通过
SENTINEL ckquorum命令互相验证法定人数,2 节点平票即僵局 - 很多线上事故回溯发现,问题不在 Redis 主从,而在哨兵配置里写了
sentinel monitor mymaster 127.0.0.1 6379 2,结果哨兵连不到主节点,却还傻等另一票 - 容器化部署时尤其危险:两个哨兵跑在同一宿主机的两个 Pod 里,宿主机一崩,哨兵全灭
3 个哨兵也未必真安全:部署位置比数量更关键
3 个哨兵如果全挤在一台物理机、一个云主机、甚至同一个 Docker Compose 网络里,那这台机器一宕,哨兵集群瞬间归零——你只是把单点故障从 Redis 进程换成了操作系统实例。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 必须跨机器/跨可用区部署,哪怕只是三台低配虚拟机或独立容器(启用
host网络且隔离 PID namespace) - 允许哨兵和 Redis 数据节点混部(如每台机器跑 1 主 + 1 哨兵),但禁止所有角色共用同一 OS 进程或同一 systemd unit
- 上线后立刻检查
redis-cli -p 26379 sentinel masters输出里的sentinels字段是否稳定为 3,而不是忽高忽低
quorum 值必须和哨兵总数严格匹配
quorum 不是固定写 2,它得按公式算:⌊N/2⌋ + 1。3 个哨兵对应 quorum 2,5 个对应 quorum 3。写错直接导致哨兵“装死”。
- 配置行
sentinel monitor mymaster 192.168.2.20 6379 2最后的2必须是无引号、无小数点的整数,否则redis-sentinel --test-conf会报Invalid argument 'quorum' - 改完配置别急着重启,先用
redis-sentinel /path/to/sentinel.conf --test-conf验证语法 - 运行中的哨兵不会自动 reload
quorum,必须手动执行SENTINEL SET mymaster quorum 2 - quorum 生效的前提是哨兵彼此能通信,且都能连上主节点——用
redis-cli -p 26379 ping和redis-cli -p 26379 sentinel get-master-addr-by-name mymaster分别验证










