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配置文件,修改listenersadvertised.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 2181telnet 192.168.0.120 9092,确认端口可以正常连通。

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

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

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

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

火山引擎 最新活动