必须为每个哨兵单独配置独立的sentinel.conf,端口唯一(如26379/26380/26381)、quorum设为2、logfile分离、显式指定绝对路径启动;quorum=2确保三哨兵中任一失联仍可完成客观下线与故障转移。

直接结论:必须为每个哨兵单独准备一份 sentinel.conf,监听同一主节点、使用不同端口、且 quorum 值设为 2(三哨兵中过半即 2),否则故障转移不会触发。
哨兵配置文件要独立,不能共用同一份 sentinel.conf
三个哨兵不是“启动三次同一个配置”,而是三个进程各自加载自己的配置文件。常见错误是复制了三份 sentinel.conf 却忘了改 port 和日志路径,导致启动时端口冲突或日志混写。
-
port必须唯一:比如26379、26380、26381 -
sentinel monitor的主节点地址和端口要一致(如mymaster 192.168.3.39 6379 2),但quorum值必须 ≤ 哨兵总数且 > 总数/2,三哨兵就填2 -
logfile要区分:比如"./sentinel-26379.log"、"./sentinel-26380.log",否则多个哨兵往同一个文件写会乱序 - 不要漏掉
daemonize yes,否则哨兵前台运行,终端断开就退出
启动命令必须显式指定配置文件路径
哨兵不认默认配置,不带参数执行 redis-sentinel 会报错或走内置默认值,完全不生效。
- 正确启动方式(以第一个哨兵为例):
redis-sentinel /path/to/sentinel-26379.conf - 不能写成:
redis-sentinel(无参)、redis-sentinel redis.conf(错配文件)、或redis-server sentinel-26379.conf(该命令只认 Redis 实例,不认哨兵配置) - 建议用绝对路径启动,避免工作目录切换导致配置文件找不到
sentinel monitor 中的 quorum 值决定是否能触发故障转移
这个数字不是“需要几个哨兵在线”,而是“至少几个哨兵达成一致才认为主节点客观下线”。设得太小(如 1)会导致误切;设得太大(如 3)在一台哨兵宕机时就卡住无法切换。
- 三哨兵场景下,
quorum 2是安全底线:允许任意一个哨兵失联,仍能完成选举和切换 - 如果误设为
quorum 3,只要一个哨兵挂掉(哪怕只是网络抖动),整个哨兵集群就无法判定主节点下线,故障转移永远不发生 - 注意:
quorum不影响哨兵之间通信,只影响“客观下线”判定阈值
验证哨兵是否真正组成集群,别只看进程是否存在
ps 查到三个 redis-sentinel 进程 ≠ 哨兵已互联。它们可能互相发现不了,变成三个孤立哨兵。
- 检查日志:每个
sentinel-*.log中应有类似+sentinel master mymaster 192.168.3.39 6379和+sentinel slave ...的记录,表示已识别主从拓扑 - 连任一哨兵执行:
redis-cli -p 26379 sentinel masters,应返回一个 master 条目;再执行redis-cli -p 26379 sentinel sentinels mymaster,应返回另外两个哨兵信息(共 3 个,含自己) - 常见静默失败点:防火墙未放开
26379/26380/26381端口、bind配置为127.0.0.1导致哨兵间无法通信、protected-mode yes且没配bind或密码
最易被忽略的是哨兵间的网络可达性 —— 它们不仅要看主从,还要彼此握手。哪怕主从一切正常,只要两个哨兵 ping 不通,quorum 就永远凑不够,切换逻辑根本不会启动。


















