繁体   English   中英

在Windows docker工具箱上运行融合平台时,kafka connect datagen出现问题

[英]Issues with kafka connect datagen while running confluent platform on windows docker toolbox

我正在尝试使用此处给出的示例在docker for windows(toolbox)上运行一个最低限度的最小融合社区示例:

https://docs.confluent.io/current/quickstart/cos-docker-quickstart.html

但是似乎所有组件都已启动,只有ksql-datagen发生故障,它们不起作用,

$ docker-compose.exe ps
The system cannot find the path specified.
     Name                    Command               State                         Ports
------------------------------------------------------------------------------------------------------------
broker            /etc/confluent/docker/run        Up       0.0.0.0:29092->29092/tcp, 0.0.0.0:9092->9092/tcp
connect           bash -c if [ ! -d /usr/sha ...   Up       0.0.0.0:8083->8083/tcp, 9092/tcp
control-center    /etc/confluent/docker/run        Up       0.0.0.0:9021->9021/tcp
ksql-cli          /bin/sh                          Up
ksql-datagen      bash -c echo Waiting for K ...   Exit 1
ksql-server       /etc/confluent/docker/run        Up       0.0.0.0:8088->8088/tcp
rest-proxy        /etc/confluent/docker/run        Up       0.0.0.0:8082->8082/tcp
schema-registry   /etc/confluent/docker/run        Up       0.0.0.0:8081->8081/tcp
zookeeper         /etc/confluent/docker/run        Up       0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp

我尝试查看日志

$ docker日志ksql-datagen

并出现此异常,似乎它正在尝试使用一个不同于当前使用的IP地址

[kafka-admin-client-thread | adminclient-1] WARN org.apache.kafka.clients.NetworkClient - [AdminClient clientId=adminclient-1] Connection to node -1 (broker/172.18.0.3:29092) could not be established. Broker may not be available.

我怀疑如果我们使用Windows工具箱,则该URL应该是192.168.99.100,并且它应该在Windows主机网络中运行。

希望获得帮助以了解为什么默认设置不起作用的原因,我们是否需要对docker-compose.yaml文件进行任何更改。

TL; DR-您的问题似乎是ksql-datagen无法找到您的kafka经纪人。 你可能需要到代理的advertised.listeners属性设置为HTTP://经纪人:9092这里(或KAFKA_ADVERTISED_LISTENERS与码头工人卡夫卡属性)(见advertised.listeners - https://docs.confluent.io/current/installation/configuration /broker-configs.html

长答案-每个经纪人(也许还有其他模块)在该属性中公开其“地址”-这样客户就可以找到它们。 他们可以公开一个本地docker地址-由运行在同一docker网络上的客户端访问(例如,在地址kafka0:9092上,其中kafka0是内部docker别名),一个localhost-由运行在同一主机但外部的客户端访问网络(例如localhost:9092),或者它们可以公开主机的真实IP(供外部客户端访问,例如blabla.com:9092)。

对于完整而详尽的解释,我会推荐由开发人员@ confluent撰写的这篇很棒的文章-https: //rmoff.net/2018/08/02/kafka-listeners-explained/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM