我有两个服务器,让我们将它们命名为server1和server2。
在server1上,我有一个运行Kafka的docker容器。Kafka代理端口和动物园管理员被映射到主机。
在server2上,我想安装Filebeat,它向server1上的Kafka发送一些日志消息。它似乎可以建立起与经纪人的联系.
[publisher_pipeline_output] pipeline/output.go:143 Connecting to kafka(server1:9092)
[publisher_pipeline_output] pipeline/output.go:151 Connection to kafka(server1:9092) established...but实际发送错误消息失败:
[kafka] kafka/client.go:317 Kafka (topic=sample-topic): kafka: client has run out of available brokers to talk to (Is your cluster reachable?)我也尝试过从我的server2中运行server2(也是在一个码头中),这实际上是有效的!唯一的区别是我的Filebeat不是在docker容器中运行,而是直接在server2上运行。
那我忘了什么?知道如何进一步调试这个问题吗?
作为ADVERTISED_HOST,在运行容器时,我确实使用了server1主机名。
用于澄清:--我正在使用spotify/kafka的KAfka (https://hub.docker.com/r/spotify/kafka),并像这样运行它:
docker run -p 2181:2181 -p 9092:9092 --name kafka --env ADVERTISED_HOST=server1 --env ADVERTISED_PORT=9092 spotify/kafka我的Filebeat配置如下所示:
output.kafka:
hosts: ["server1:9092"]
topic: 'sample-topic'
partition.round_robin:
reachable_only: false
required_acks: 1
compression: gzip
max_message_bytes: 1000000发布于 2021-03-08 14:06:00
卡夫卡端口代理和动物园管理员被映射到主机
对于Kafka,您需要的不仅仅是端口映射。还需要将公告的侦听器地址(已公布的主机是不推荐的属性)设置为运行容器的服务器的外部主机名/ip,以便从另一台计算机访问它。您还需要侦听器地址为0.0.0.0
文件不在码头容器中运行,而是直接在server2上运行。
应该不重要
如果控制台生产者在另一台机器上工作,那么您将期望任何其他Kafka客户端也能工作。
https://stackoverflow.com/questions/66531114
复制相似问题