为了本地调试方便需要把测试服务器的kafka开放外网连接, 本以为很简单的事情卡了好几个小时,主要还是对kafka不了解导致的,特此记录.
核心就是两个配置:listeners
和advertised.listeners
按照我的理解:
listeners
是Kafka Broker 真正监听客户端连接请求的地址和端口。它指定了Kafka Broker 应该监听的地址和端口,以便能够接受来自客户端的连接请求。
advertised.listeners
是Kafka Broker 向客户端报告的连接地址。它指定了客户端应该使用的连接地址,以便能够正确连接到 Kafka Broker。这个地址可以是公共的、外部可访问的地址,即对外开放的地址,以便从不同的网络环境中访问 Kafka Broker。
开始尝试配置:
listeners=PLAINTEXT://内网ip:9092
advertised.listeners=PLAINTEXT://外网ip:9092
但是一直没办法正常连接,启动报错无法Broker不可用, 我用netstat
命令查了一下只有内网ip监听了9092端口,外网肯定访问不了啊, 所以只要将listeners
的ip改为0.0.0.0
就可以了
最后成功的配置:
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://外网ip:9092
PS: 如果是ECS, 别忘了在控制台开放端口