Redis哨兵启动失败主因是未指定有效配置文件,且sentinel.conf必须含sentinel monitor指令;主节点名、IP、端口须准确;protected-mode、密码、防火墙及quorum配置均需对齐。

redis-sentinel 启动失败:找不到配置文件或报错 No such file or directory
哨兵进程必须显式指定一个有效的配置文件,不能只执行 redis-sentinel 命令就完事。它不会自动查找 sentinel.conf,也不会读取 Redis 主配置里的哨兵相关设置。
- 启动前务必确认配置文件存在且路径正确,比如
/etc/redis/sentinel.conf或当前目录下的sentinel.conf - 如果用相对路径启动(如
redis-sentinel sentinel.conf),确保终端当前工作目录就是配置文件所在目录 - 常见错误是把
redis.conf当成哨兵配置直接传给redis-sentinel,会立即报错Invalid argument—— 哨兵配置必须包含sentinel monitor指令,且不能有bind、port等 Redis 服务端专属配置
sentinel monitor 配置写错:主节点名字、IP 或端口不一致导致无法发现主从
哨兵靠 sentinel monitor <master-name><ip><port><quorum></quorum></port></ip></master-name> 这一行识别主库,后续所有自动故障转移都基于这个“名字+地址”对。一旦写错,哨兵连主库都连不上,自然不会监听从库、也不会触发 failover。
-
<master-name></master-name>是自定义标识符(如myredis),所有哨兵和客户端必须统一使用这个名字,不能大小写混用或加空格 -
<ip></ip>必须是主库实际可被哨兵访问的 IP(不是127.0.0.1,除非哨兵和 Redis 在同一台机器且绑定的是本地地址) -
<port></port>是 Redis 主实例监听的端口(如6379),不是哨兵自己的端口(默认26379) - 配置后务必用
redis-cli -p 26379 sentinel masters检查是否识别到主节点;如果返回空数组,说明monitor行没生效或网络不通
哨兵启动后不监控从库:忘记开启 protected-mode 或 bind 配置冲突
哨兵需要主动连接主库和所有从库获取信息(比如 INFO replication),如果主/从 Redis 实例启用了 protected-mode yes 且未配置 bind 或 requirepass,哨兵将无法建立连接,表现为只有主节点显示在 sentinel masters 中,但从节点列表为空。
- 要么在 Redis 主/从配置中设
protected-mode no(仅限内网可信环境) - 要么明确配置
bind到具体内网 IP(如bind 192.168.1.10),并确保哨兵机器能直连该 IP - 如果 Redis 启用了密码,必须在哨兵配置里加上
sentinel auth-pass <master-name><password></password></master-name>,否则认证失败,连接被拒 - 检查哨兵日志中是否有
Connection refused或NOAUTH字样,这是最直接的线索
多个哨兵实例之间无法通信:端口未放开或 quorum 设置不合理
哨兵靠 TCP 端口(默认 26379)互相交换主从状态、投票等信息。如果防火墙拦了这个端口,或者 quorum 值设得比实际在线哨兵数还大,failover 就永远卡住。
- 确认所有哨兵机器的
26379端口在防火墙中放行(入站 + 出站),可用telnet other-sentinel-ip 26379测试连通性 -
quorum是触发故障转移所需的最小哨兵同意数,建议设为哨兵总数的半数向上取整(如 3 台哨兵,quorum设为 2) - 不要把
quorum设为 1 —— 虽然单点能发起 failover,但极易因网络抖动误判主库下线;也不要设为总数(如 3 台设 3),只要一台哨兵宕机,整个高可用就失效 - 用
redis-cli -p 26379 sentinel sentinels <master-name></master-name>查看其他哨兵是否被当前哨兵识别,返回空说明发现机制没跑起来

















