You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Spring Cloud Bus配置ZooKeeper主机与端口

解决Spring Cloud Bus Kafka连接远程ZooKeeper的问题

从你的错误日志能明显看出来:虽然你已经把Kafka的bootstrap-servers改成了远程服务器地址,但应用还是在尝试连接本地的ZooKeeper(localhost:2181),这就是连接被拒绝的核心原因。下面是具体的解决步骤:

1. 明确配置远程ZooKeeper地址

在你的application.yml里,需要添加远程ZooKeeper的连接配置,根据你的项目依赖场景选择对应的配置项:

场景一:项目用到Spring Cloud Zookeeper组件

如果你的项目引入了Spring Cloud Zookeeper相关依赖(比如服务发现、分布式配置中心),添加以下配置:

spring:
  cloud:
    zookeeper:
      connect-string: 192.168.0.120:2181  # 替换成你的远程ZooKeeper地址

场景二:Kafka客户端需直接指定ZooKeeper(旧版Kafka或特殊场景)

部分旧版Kafka客户端或Spring Cloud Bus的特殊配置场景下,需要直接指定ZooKeeper地址,添加:

spring:
  kafka:
    zookeeper:
      connect: 192.168.0.120:2181  # 替换成你的远程ZooKeeper地址

2. 检查远程Kafka Broker的配置

别忽略了远程Kafka服务器本身的配置,否则即使你改了客户端配置,还是会连接失败:

  • 打开Kafka的server.properties配置文件,修改listeners和advertised.listeners为外部可访问的地址:
    listeners=PLAINTEXT://192.168.0.120:9092
    advertised.listeners=PLAINTEXT://192.168.0.120:9092
    
    (如果不配置这两项,Kafka会把localhost地址返回给客户端,导致客户端无法正确连接到远程Broker)

3. 确认网络连通性

  • 检查远程服务器的防火墙是否开放了9092(Kafka端口)和2181(ZooKeeper端口),允许你的应用服务器访问。
  • 在应用服务器上执行telnet 192.168.0.120 2181和telnet 192.168.0.120 9092,确认端口可以正常连通。

4. 排查其他依赖的ZooKeeper配置

如果你的项目里还引入了其他需要ZooKeeper的组件(比如Spring Cloud Config Server/Client),一定要确保这些组件的ZooKeeper连接地址也同步改成远程地址,避免出现配置冲突。

完成以上配置后,重新启动Spring Boot应用,应该就能正常连接到远程的Kafka和ZooKeeper了。

内容的提问来源于stack exchange,提问作者madmaux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:00:27