首页/数据/Redis 进阶速查/quorum 与 majority 的区别
主从与哨兵51 条

quorum 与 majority 的区别

quorum 是判定「客观下线」所需的哨兵票数;而执行切换还需要哨兵领导者选举获得多数派(majority)同意,两个门槛可能不同。

Redis 进阶速查数据更新于 2026-10-13

quorum 与 majority 的区别

哨兵切换要闯两道投票关,很多人把它们混为一谈。第一道是 quorum:判定主库「客观下线」需要多少个哨兵认同,写在 monitor 行的最后一个参数里。第二道是 majority:客观下线之后,愿意执行切换的哨兵要选出领导者,得票必须超过哨兵总数的半数。quorum 只决定「能不能认定它挂了」,majority 才决定「能不能真的动手切换」。

基本信息

quorum 位置sentinel monitor <name> <ip> <port> <quorum> 的最后一个参数
quorum 作用凑够票数即认定客观下线(ODOWN)
majority 计算哨兵总数的一半加一,与 quorum 无关
常见配置3 个哨兵配 quorum=2:任一哨兵怀疑、两台确认
检查命令SENTINEL CKQUORUM <name> 判断当前票数是否够判定

典型使用场景

  • 三哨兵集群的标准配置:quorum 设为 2,避免单台哨兵误判就触发下线
  • 五哨兵集群的取舍:quorum 可设 3,majority 为 3,容错能力更强但节点成本更高
  • 切换失败排查:确认是「无法判定下线」还是「无法选举领导者」,两类问题方向完全不同
  • 扩容哨兵前的评估:新增节点会改变 majority 门槛,需要重新确认切换在部分节点失联时仍可完成
  • 演练验证:主动停掉主库与部分哨兵,观察在剩余节点数量下切换能否成功

检查票数状态

检查票数状态
redis-cli -p 26379 SENTINEL CKQUORUM mymaster   # 票数是否够判定下线
redis-cli -p 26379 SENTINEL MASTER mymaster      # 看 flags 中的 s_down / o_down
redis-cli -p 26379 SENTINEL SENTINELS mymaster   # 已知的哨兵成员列表
redis-cli -p 26379 INFO sentinel                 # 哨兵自身的汇总信息
# 演练:停掉主库后观察日志里的投票与选举过程
tail -f /var/log/redis/sentinel.log

两道门槛对照

门槛配置位置达不到的后果
quorummonitor 行参数无法认定客观下线,永不进入切换流程
majority哨兵总数的半数加一无法选出领导者,切换停滞
两者关系quorum 决定判定,majority 决定执行quorum 小于半数时仍可能因多数派不足而卡住
典型值3 哨兵用 quorum=2只剩 1 台哨兵时既不判定也无法选举
CKQUORUM 的语义细节:它检查的是「当前在线哨兵能否凑够 quorum 票数」,因此在已经处于客观下线状态时返回错误是符合预期的,并不代表配置有误。判断配置是否合理应看正常状态下 CKQUORUM 是否返回成功。
把 quorum 设成哨兵总数等于要求全员在线才能判定下线:任意一台哨兵维护或网络抖动,主库真的挂了也无法进入切换流程。高可用的前提是允许部分节点失效,quorum 必须留出容错余量。

易错点

  • 把 quorum 与 majority 当成同一个概念,配好 quorum 就以为切换一定成功,实际在只剩少数哨兵时仍然卡在选举环节
  • quorum 设得过高(等于或接近哨兵总数),任一节点失联即无法形成客观下线判定,可用性不升反降
  • 只部署两个哨兵,多数派需要两台同时在线,等于任何时候都不能容忍一台故障,哨兵部署数量应至少为三
  • 调整哨兵数量后未重新评估 majority 门槛,扩容或缩容让切换成功率悄悄变化,需要在变更后做一次演练验证

数据来源与参考

  • Redis 官方文档:Sentinel quorum 与多数派说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌