哨兵也需要凭据
被监控的 Redis 实例一旦启用密码或 ACL 认证,哨兵同样必须持有凭据,否则它连不上实例,健康检查会直接失败,进而把健康的主库判定为下线。配置落在哨兵侧,按 master 名称指定:sentinel auth-pass 设置密码,6.0 起可以用 sentinel auth-user 指定 ACL 用户名。凭据与 master 名绑定,对这套主从的所有实例生效,因此密码轮换时必须同步更新全部哨兵。
基本信息
| 密码配置 | sentinel auth-pass <master-name> <password> |
|---|---|
| ACL 用户 | sentinel auth-user <master-name> <username>(6.0 及以上) |
| 生效方式 | 写入 sentinel.conf 后重启,或运行时 SENTINEL SET |
| 对照项 | 从库侧的 masterauth 必须与之一致 |
| 敏感度 | 在 sentinel.conf 中为明文存储 |
典型使用场景
- 主库启用密码后为所有哨兵补齐认证配置,恢复监控能力
- ACL 体系下为哨兵创建权限受限的专用用户
- 密码轮换:数据实例、从库、哨兵三处同步更新并逐项核对
- 排查「哨兵报无法连接实例」时,先确认凭据是否一致
- 把认证配置纳入部署检查清单,尤其是用模板批量生成的场景
配置与核对
配置与核对
sentinel auth-user mymaster appuser # 6.0 起支持 ACL 用户名
sentinel auth-pass mymaster app-password # 与数据实例的密码保持一致
redis-cli -p 26379 SENTINEL MASTER mymaster | grep -E 'flags'
redis-cli -p 26379 SENTINEL SET mymaster auth-pass 'new-password' # 运行时更新
redis-cli -p 26379 SENTINEL FLUSHCONFIG # 运行时改动记得落盘
redis-cli -p 26379 SENTINEL SENTINELS mymaster # 核对各哨兵是否配置一致排查路径
| 现象 | 可能原因 | 核对项 |
|---|---|---|
| 哨兵认为主库不可达 | 认证失败被拒绝 | auth-pass 与实例密码是否一致 |
| 部分命令报权限错误 | ACL 用户权限不足 | 哨兵用户是否具备所需命令权限 |
| 只有部分哨兵报错 | 各哨兵配置不一致 | 逐台核对凭据与 master 名 |
| 切换后新主连不上 | 实例间凭据不同 | 确认整套实例使用同一账号 |
auth-pass 在配置文件里是明文,文件权限要收紧到仅运行用户可读。用配置管理工具批量分发时,避免把密码提交进公开仓库;轮换时先更新从库与哨兵、最后更新主库,可以减少链路完全中断的窗口。