Docker Kafka 客户端到 Docker Kafka 代理连接被拒绝
Docker Kafka client to Docker Kafka broker connection refused
如标题所述,我在让我的 docker 客户端连接到 docker 代理时遇到问题
错误:
%3|1647161877.851|FAIL|fc24c271e73f#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT, 1 identical error(s) suppressed)
2022-03-13T08:57:57.851241551Z %3|1647161877.851|ERROR|fc24c271e73f#producer-1| [thrd:app]: fc24c271e73f#producer-1: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT, 1 identical error(s) suppressed)
服务器设置:
指南第 1 步中的社区 docker-compose.yml:
https://docs.confluent.io/platform/current/quickstart/ce-docker-quickstart.html
客户端设置:
.NET Confluent.Kafka producer
到目前为止的程序:
我最初认为这将是 docker 容器中的本地主机和使用 docker 选项的问题:
--net=host
也解决了这个问题。然而,这有删除已发布端口的副作用并且不好。
然后我尝试使用
--add-host host.docker.internal:host-gateway
我在另一个 post 中找到的(不记得是哪个)但是这不起作用。
我最初认为它有问题,因为 --net=host 可以工作,但是当我用 SignalR 示例项目尝试它时,它立即工作。
我遇到了多个 post 建议更改
KAFKA_ADVERTISED_LISTENERS
但是我觉得主机转发不起作用很奇怪,对此进行更改会有所不同。
我已经尝试了多种组合,无论是本地主机的代理 ip 到 0.0.0.0 等(我在不同 posts 中发现的东西)但没有成功。
为了更好地了解正在发生的事情,我遇到了这个 post:
https://www.confluent.io/blog/kafka-client-cannot-connect-to-broker-on-aws-on-docker-etc/
这解释了连接到代理所涉及的两步过程。
查看我收到的 /bootstrap 错误,它似乎已经在初始连接上失败了。然而,这应该表明直接问题与 KAFKA_ADVERTISED_LISTENERS 无关,但我的假设可能是错误的。
post 确实有一个 docker 到 docker 的场景,但这是使用自定义网桥完成的,我不想为此使用它。
有人知道我应该做什么吗?也许知道要进行的确切更改以及更改位置。
您的代码似乎正在尝试连接到端口 9092。
PLAINTEXT://broker:29092
是您要连接的侦听器,假设您自己的代码也在容器中。
如果不是,那么您可以在没有主机网络的情况下使用 localhost:9092
,但您需要有这些变量
KAFKA_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
done using custom network bridge
Compose 默认创建自己的网桥,除非您单独定义一个网桥并 link 为它提供所有服务。
not want to have to use for this.
除非您是 运行 Linux 主机上的代码,否则 --net=host
将实际工作,否则您将需要一个桥接器。那么你应该可以使用 localhost:9092
.
不过,如果您了解侦听器的工作原理,则不需要主机网络
has the side effect of removing published ports
不完全是。容器暴露的端口应该自动暴露在主机上
如标题所述,我在让我的 docker 客户端连接到 docker 代理时遇到问题
错误:
%3|1647161877.851|FAIL|fc24c271e73f#producer-1| [thrd:localhost:9092/bootstrap]: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT, 1 identical error(s) suppressed)
2022-03-13T08:57:57.851241551Z %3|1647161877.851|ERROR|fc24c271e73f#producer-1| [thrd:app]: fc24c271e73f#producer-1: localhost:9092/bootstrap: Connect to ipv4#127.0.0.1:9092 failed: Connection refused (after 0ms in state CONNECT, 1 identical error(s) suppressed)
服务器设置: 指南第 1 步中的社区 docker-compose.yml:
https://docs.confluent.io/platform/current/quickstart/ce-docker-quickstart.html
客户端设置:
.NET Confluent.Kafka producer
到目前为止的程序:
我最初认为这将是 docker 容器中的本地主机和使用 docker 选项的问题:
--net=host
也解决了这个问题。然而,这有删除已发布端口的副作用并且不好。
然后我尝试使用
--add-host host.docker.internal:host-gateway
我在另一个 post 中找到的(不记得是哪个)但是这不起作用。 我最初认为它有问题,因为 --net=host 可以工作,但是当我用 SignalR 示例项目尝试它时,它立即工作。
我遇到了多个 post 建议更改
KAFKA_ADVERTISED_LISTENERS
但是我觉得主机转发不起作用很奇怪,对此进行更改会有所不同。 我已经尝试了多种组合,无论是本地主机的代理 ip 到 0.0.0.0 等(我在不同 posts 中发现的东西)但没有成功。
为了更好地了解正在发生的事情,我遇到了这个 post:
https://www.confluent.io/blog/kafka-client-cannot-connect-to-broker-on-aws-on-docker-etc/
这解释了连接到代理所涉及的两步过程。 查看我收到的 /bootstrap 错误,它似乎已经在初始连接上失败了。然而,这应该表明直接问题与 KAFKA_ADVERTISED_LISTENERS 无关,但我的假设可能是错误的。
post 确实有一个 docker 到 docker 的场景,但这是使用自定义网桥完成的,我不想为此使用它。
有人知道我应该做什么吗?也许知道要进行的确切更改以及更改位置。
您的代码似乎正在尝试连接到端口 9092。
PLAINTEXT://broker:29092
是您要连接的侦听器,假设您自己的代码也在容器中。
如果不是,那么您可以在没有主机网络的情况下使用 localhost:9092
,但您需要有这些变量
KAFKA_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
done using custom network bridge
Compose 默认创建自己的网桥,除非您单独定义一个网桥并 link 为它提供所有服务。
not want to have to use for this.
除非您是 运行 Linux 主机上的代码,否则 --net=host
将实际工作,否则您将需要一个桥接器。那么你应该可以使用 localhost:9092
.
不过,如果您了解侦听器的工作原理,则不需要主机网络
has the side effect of removing published ports
不完全是。容器暴露的端口应该自动暴露在主机上