如何修复Kafka Docker容器抛出0.0.0.0/0.0.0.0:2181:连接被拒绝?
我正在尝试为Kafka更改数据捕获设置Docker compose文件环境,但遇到以下错误: 正在打开到服务器0.0.0.0/0.0.0.0:2181的套接字连接。不会尝试使用SASL进行身份验证(未知错误) 发生套接字错误:0.0.0.0/0.0.0.0:2181:连接被拒绝 我一直在学习本教程,但它直接使用link选项运行docker命令,而不是使用docker-compose.yml文件 我试图转换这些:如何修复Kafka Docker容器抛出0.0.0.0/0.0.0.0:2181:连接被拒绝?,docker,docker-compose,Docker,Docker Compose,我正在尝试为Kafka更改数据捕获设置Docker compose文件环境,但遇到以下错误: 正在打开到服务器0.0.0.0/0.0.0.0:2181的套接字连接。不会尝试使用SASL进行身份验证(未知错误) 发生套接字错误:0.0.0.0/0.0.0.0:2181:连接被拒绝 我一直在学习本教程,但它直接使用link选项运行docker命令,而不是使用docker-compose.yml文件 我试图转换这些: docker run -it --name kafka -p 9092:9092 -
docker run -it --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka
到下面的docker-compose.yml文件。但是,它似乎完全忽略了KAFKA_ZOOKEEPER_CONNECT环境变量,因为我在日志中看到:
使用ZOOKEEPER_CONNECT=0.0.0.0:2181
尽管如此,文档表明它应该可以工作
当我按照教程使用docker run而不是创建docker compose文件时,它完全可以正常工作。它显示本地计算机的IP地址,端口为2181,而不是0.0.0.0:2181
docker-compose.yml:
version: "3.7"
services:
postgres:
image: debezium/postgres:10
container_name: postgres
ports:
- "5000:5432"
environment:
POSTGRES_HOST_AUTH_METHOD: trust
# POSTGRES_USER: db_user
# POSTGRES_PASSWORD: db_password
zookeeper:
image: debezium/zookeeper:1.5
container_name: zookeeper
ports:
- "2181:2181"
- "2888:2888"
- "3888:3888"
kafka:
image: debezium/kafka:1.5
container_name: kafka
ports:
- "9092:9092"
depends_on:
- zookeeper
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
connect:
image: debezium/connect:1.5
container_name: connect
ports:
- "8083:8083"
environment:
GROUP_ID: 1
CONFIG_STORAGE_TOPIC: my-connect-configs
OFFSET_STORAGE_TOPIC: my-connect-offsets
depends_on:
- postgres
- kafka
- zookeeper
networks:
default:
name: kafkaCDC
Zookeeper容器上的zoo.cfg:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/data
dataLogDir=/zookeeper/txns
clientPort=2181
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
这个问题已经研究了好几年了;然而,我完全迷路了。特别是,因为这么多的例子都在使用链接
这是GitHub的帖子,它让我想到使用KAFKA_ZOOKEEPER_CONNECT。
除了我之外,我觉得忽略环境变量是有问题的,但可能只是我不理解某些东西,并且有一个conf错误。我能够通过将zookeeper连接地址设置为docker容器IP地址来修复它 要获取IP地址,请运行
docker inspect <container-name> --format='{{ .NetworkSettings.IPAddress }}'
docker-inspect--format='{{.NetworkSettings.IPAddress}'
然后开始卡夫卡,如下所示
docker run --name some-kafka -p 9092:9092 -e KAFKA_ZOOKEEPER_CONNECT=<zookeeper-ip>:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://:9092 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 confluentinc/cp-kafka
docker run--命名一些卡夫卡-p 9092:9092-e kafka_ZOOKEEPER_CONNECT=:2181-e kafka_advised_LISTENERS=纯文本://:9092-e kafka_offset_TOPIC_REPLICATION_FACTOR=1 confluentinc/cp kafka
github comment帮助我找到了我缺少的内容对于
debezium/kafka:1.5
图像,要在docker compose中工作,您可以尝试传递以下环境变量:
ZOOKEEPER\u连接:“ZOOKEEPER:2181”
它解决了我的问题,docker compose yaml示例如下:
版本:“3.9”
服务:
动物园管理员:
图片:debezium/zookeeper:1.5
端口:
- "2181:2181"
- "2888:2888"
卡夫卡:
图片:debezium/kafka:1.5
端口:
- "9092:9092"
环境:
ZOOKEEPER_CONNECT:“ZOOKEEPER:2181”
取决于:
-动物园管理员
请分享你的zoo.cfgfile@Ashok添加了zoo.cfg文件尝试增加客户端连接的最大数量仅从文件中添加未注释的maxClientCnxns=60。因此,它现在设置为60,即使重新启动,仍然不起作用。我不认为这是动物园管理员的问题,因为卡夫卡容器甚至不能与动物园管理员容器交谈。我认为0.0.0.0.0:2181是个问题,我只是不知道如何把它改成zookeeper:2181。另外,当我通过docker run运行它时,它会与maxClientCnxns一起运行。您运行过这个运行%ZOOKEEPER\u HOME%\bin\zkserver.cmd吗