首页/数据/Redis 进阶速查/cluster-announce-ip/port:地址公告

cluster-announce-ip/port:地址公告

NAT 或容器环境中,节点实际地址与对其他节点可见的地址不同:用 cluster-announce-ip/port/bus-port 公告可达地址,否则节点间互相连接失败。

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

公告地址解决什么问题

节点自己记住的是 bind 与 port 推导出的本地地址,但其他节点和客户端需要的是「真正能连上的地址」。在 NAT、端口映射、容器编排这类环境里两者并不相同,于是要用 cluster-announce-ip、cluster-announce-port、cluster-announce-bus-port 显式公告对外地址。公告值会写进节点保存的拓扑记录并通过 gossip 传播,也决定 MOVED 重定向返回给客户端的地址。

基本信息

配置项cluster-announce-ip / cluster-announce-port / cluster-announce-bus-port
适用环境NAT 网关、端口映射、容器编排、多网卡主机
默认行为未设置时按 bind 与 port 推导实际地址
核对方式CLUSTER NODES 中显示的地址是否为外部可达
影响范围节点间通信、客户端重定向目标地址

典型使用场景

  • 容器编排环境用 NodePort 或主机端口映射暴露实例,集群内外部地址不一致
  • 云主机位于 NAT 网关后面,对外呈现地址与网卡地址不同
  • 同一主机多网卡,需要明确指定业务网段而避免走管理网卡
  • 机房搬迁或网络改造后对外地址变化,需要同步更新公告
  • 排查 MOVED 返回的地址客户端连不上,定位到公告地址配置错误

配置与核对

配置与核对
cluster-announce-ip 203.0.113.30        # 对外可达地址
cluster-announce-port 7000              # 业务端口映射后对外呈现的端口
cluster-announce-bus-port 17000         # 总线端口映射后对外呈现的端口

验证命令

验证命令
redis-cli -p 7000 CLUSTER NODES | head -3    # 检查每行地址是否外部可达
redis-cli -p 7000 CLUSTER INFO | grep cluster_state   # 公告错误会影响状态
redis-cli -h <公告地址> -p 7000 PING         # 从客户端侧验证可达性

配置项与配错表现

配置项含义配错的表现
cluster-announce-ip对外可见的主机地址其他节点连接超时,节点被反复判为不可达
cluster-announce-port对外可见的业务端口客户端按 MOVED 重定向后连不上
cluster-announce-bus-port对外可见的总线端口gossip 不通,拓扑长期不收敛
三项留空按本地地址推导内网直连环境正常,经映射即失效
公告地址同时被客户端用于路由,改错不只是节点之间连不上,业务侧会收到指向不可达地址的重定向。
修改公告配置需要重启节点才生效,滚动进行并逐个确认拓扑收敛,避免一次性重启引发误判。

易错点

  • 业务地址公告对了但总线端口按本地值公示,握手看似成功而拓扑迟迟不收敛
  • 只改了一部分节点的公告配置,混用两种地址导致部分链路不通,故障表现为间歇性
  • 公告地址用了仅本机可达的回环或内网地址,本地测试通过但跨主机部署立即失败
  • 网络改造后忘记同步公告值,MOVED 返回旧地址,客户端持续连接失败

数据来源与参考

  • Redis 官方文档:集群地址公告配置
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌