docker - Kafka - 消费者无法启动:连接被拒绝 - 127.0.0.1:9092 的连接(2)
问题描述
我正在尝试在 docker 网络中本地启动并运行我的一项服务,但不断收到“Consumer failed to start: Connection denied - connect(2) for 127.0.0.1:9092”异常。
zookeeper:
image: wurstmeister/zookeeper:3.4.6
restart: always
expose:
- "2181"
kafka:
depends_on:
- zookeeper
environment:
KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9093,OUTSIDE://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_LISTENERS: INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
hostname: kafka
image: wurstmeister/kafka:2.11-2.0.0
restart: always
ports:
- "9092:9092"
expose:
- "9093"
links:
- zookeeper:zookeeper
这就是我在服务的 docker-compose 中为消费者设置的内容:
consumers:
environment:
- BROKER_URL=host.docker.internal:9092
那是错误信息:
..`block in execute'","/usr/local/bundle/gems/rake-12.3.2/lib/rake/task.rb:273:in `each'"],
"message":"Consumer failed to start: Connection refused - connect(2) for 127.0.0.1:9092"},
"message":"Consumer failed to start: Connection refused - connect(2) for 127.0.0.1:9092",
"@timestamp":"2020-05-24T18:08:09.434+00:00","@version":"1",
"severity":"ERROR","host":"87c5265c6a39"}
更新:检查 Kafkacat 时:
kafkacat -L -b 127.0.0.1:9092
Metadata for all topics (from broker 0: 127.0.0.1:9092/0):
1 brokers:
broker 0 at 127.0.0.1:9092 (controller)
7 topics: ...
检查 Zookeeper CLI 时(在 Docker 中):
[zk: localhost:2181(CONNECTED) 2] ls /brokers/ids
[1001]
我已经尝试了几乎所有我能找到的东西,但仍然无法理解我错过了什么。
任何帮助将不胜感激,谢谢!
解决方案
您正在连接到错误的侦听器。当您连接到 9092 时,代理会返回localhost
以供您的客户端随后连接。连接到 9093,它将使用kafka
Docker 网络中的消费者应该能够解决的问题。
推荐阅读
- jquery - 如何将返回的结果数组转换为 jQuery 对象数组?
- oracle - 我不明白我的商店程序有什么问题
- javascript - 使用 Vue 的谷歌地图 API 不会显示来自数据库值的标记
- python - 如何在此代码中正确使用 key=lambda
- curl - Google Drive API 无法处理大型 App Script 项目上传
- r - R 的 bigrquery 的身份验证问题
- terraform - 如何在 Terraform 中为 `aws_apigatewayv2_route` 添加对 `aws_apigatewayv2_stage` 的依赖?
- python - ModuleNotFoundError:没有名为“buildozer”的模块
- c++ - 变量声明中的“:”符号是什么意思?
- vim - 如何使用 Wayland 从 Vim 复制到系统剪贴板,而无需编译 vim `+clipboard` 功能标志