无法通过docker连接到外部服务器上的zookeeper

ewm0tg9j  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(707)

我目前对所有这些工具都还不熟悉,请您耐心对待我。
我正在尝试创建一个数据管道,将mysql数据库的更改推送到kafka代理。我大致上是按照教程来做的。如果所有docker容器(直接从debezium repos下载)都位于本地机器内,那么我就能够让系统运行。
但是,如果我将mysql、kafka和zookeeper dockers放在本地网络上的另一台机器上并尝试连接,则会出现以下错误:

docker: Error response from daemon: could not get container for zookeeper: No such container: zookeeper.

下面是我用来实现这一点的命令:

sudo docker run -it --rm --name connect \
    -p 8083:8083 \
    -e GROUP_ID=1 \
    -e CONFIG_STORAGE_TOPIC=my_connect_configs \
    -e OFFSET_STORAGE_TOPIC=my_connect_offsets \
    -e ADVERTISED_HOST_NAME=192.168.31.214 \
    -e ADVERTISED_PORT=2181 \
    --link zookeeper:zookeeper \
    --link kafka:kafka \
    --link mysql:mysql \
    debezium/connect:0.8

这两台机器可以通过涉及的所有端口相互通信(zookeeper为2181,kafka为9092,mysql为3306)。
我还尝试提供属性名称

-e ADVERTISED_PORT=2181

并将主机属性修改为

-e ADVERTISED_HOST_NAME=192.168.31.214:2181

两个都没用。
据我所知,有一些属性绑定个别链接到机器上的端口,但我找不到上述属性。请告诉我这件事哪里不对。

6rqinv9w

6rqinv9w1#

我不认为 -e ADVERTISED_PORT=2181 对debezium容器来说是有意义的。这是一个zookeeper端口,它在别处运行,而不是在debezium内部。类似地,对于公布的主机名,这是一个kafka服务器属性,不是由debezium容器加载的(它也不应该使用端口2181)
如果zookeeper和其他人在另一台机器上,那么——链接将不起作用。那个教程假设所有的东西都在一台机器上运行
如果你使用docker swarm,你需要设置并使用“覆盖网络”。
否则,您需要将debezium配置指向另一台机器的外部ip地址。但是,这并不是解决问题的“docker方法”,因为您不必知道您的容器运行在哪些主机上。

相关问题