首页/数据/Redis 进阶速查/replica-announce-ip/port:对外公告地址
主从与哨兵51 条

replica-announce-ip/port:对外公告地址

NAT 或容器环境中从库实际端口与对外地址不一致时,用 replica-announce-ip/port 公告正确地址,否则主库 INFO 中显示的从库地址不可达。

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

从库的对外公告地址

从库在与主库握手时会报告自己的地址,默认用实际监听的 IP 与端口。在 NAT、端口映射或容器网络里,主库看到的是内网地址,外部根本连不上;replica-announce-ip 与 replica-announce-port 就是用来公告「别人应该用哪个地址来连我」。

基本信息

配置项replica-announce-ip、replica-announce-port
默认值空,即使用实际监听的地址与端口
典型环境NAT、端口映射、容器网络、多网卡云主机
修改方式写入配置文件,或运行期用 CONFIG SET 动态调整

典型使用场景

  • 容器部署:容器内监听 6379,宿主机做了端口映射,需要公告宿主机地址与映射端口
  • 云主机多网卡:从库绑定私网地址,但要公告专线或公网地址供哨兵与客户端连接
  • 端口映射部署:监听端口与对外端口不同,不公告会让主库与哨兵拿到错误端口
  • 迁移窗口:临时把公告地址指向新位置,避免客户端拿着不可达地址反复重试

设置与核对

设置与核对
redis-cli CONFIG SET replica-announce-ip 203.0.113.10   # 公告对外地址
redis-cli CONFIG SET replica-announce-port 6380         # 公告对外端口
redis-cli CONFIG GET replica-announce-*                 # 核对当前生效值
redis-cli -h <主库地址> INFO replication | grep -E 'slave[0-9]'  # 主库看到的从库地址
redis-cli INFO replication | grep -E 'master_host|master_link_status'

到哪里验证生效

观察位置关键字段期望结果
主库 INFO replicationslaveN 的 ip 与 port与公告值一致
从库 INFO replicationmaster_link_statusup,复制链路正常
哨兵视角从库列表中的地址按公告地址可以直连
客户端连接日志连接的目标地址不再出现连接超时
公告地址不能替代网络打通:如果公告出去的地址别人也连不上(例如公网 IP 但安全组未放行),哨兵与客户端会持续连接失败,故障切换时的判断也更难预测。
公告项不改变实际监听,Redis 仍然只绑定配置中的地址与端口;公告值在复制握手时上报,因此链路重建或重连后才按新值生效,改完以主库 INFO 中显示的从库地址为准核对。

易错点

  • 只改公告不改防火墙与安全组,地址可达性一点没变,哨兵照旧连不上
  • 容器里公告容器内网地址,外部永远不可达,故障切换后客户端集体连不上
  • 公告端口与映射端口对不上(漏算或多算一层),主库与哨兵按错误端口连接
  • 把公告项当成 bind 配置来改,监听地址变了而对外地址没变,问题依旧存在

数据来源与参考

  • Redis 官方文档:replica-announce-ip/port 配置说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌