Filebeat 和 Kafka:客户有 运行 个可用的经纪人可以与之交谈
Filebeat and Kafka: Client has run out of available brokers to talk to
我有两台服务器,我们将它们命名为 server1
和 server2
。
在 server1
我有一个 docker
容器 Kafka
运行ning。 Kafka
Broker 和 Zookeeper 的端口映射到主机。
在 server2
我想安装 Filebeat
,它将一些日志消息发送到 server1
的 Kafka
。好像可以和broker建立连接...
[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
...但实际发送消息失败并显示错误消息:
[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
中的 kafka-producer-console
(也在 docker 中)并且确实有效!唯一的区别是我的 Filebeat
不是 运行 在 docker
容器中而是直接在 server2
.
上
所以我忘记了什么?知道如何进一步调试问题吗?
作为 ADVERTISED_HOST
当 运行 连接容器时我确实使用了 server1
主机名。
澄清一下:
我正在使用 spotify/kafka
(https://hub.docker.com/r/spotify/kafka) 和 运行 中的 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
Port of Kafka Broker and Zookeeper are mapped to the host
对于Kafka,你需要的不仅仅是端口映射。您还需要将广告侦听器地址(广告 host 已弃用 属性)设置为容器所在服务器的外部 hostname/ip 运行 以便从另一台机器访问它。您还需要将侦听器地址设为 0.0.0.0
Filebeat does not run in a docker container but directly on server2
应该没关系
如果控制台生产者在另一台机器上工作,那么您希望任何其他 Kafka 客户端也能工作
我有两台服务器,我们将它们命名为 server1
和 server2
。
在 server1
我有一个 docker
容器 Kafka
运行ning。 Kafka
Broker 和 Zookeeper 的端口映射到主机。
在 server2
我想安装 Filebeat
,它将一些日志消息发送到 server1
的 Kafka
。好像可以和broker建立连接...
[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
...但实际发送消息失败并显示错误消息:
[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
中的 kafka-producer-console
(也在 docker 中)并且确实有效!唯一的区别是我的 Filebeat
不是 运行 在 docker
容器中而是直接在 server2
.
所以我忘记了什么?知道如何进一步调试问题吗?
作为 ADVERTISED_HOST
当 运行 连接容器时我确实使用了 server1
主机名。
澄清一下:
我正在使用 spotify/kafka
(https://hub.docker.com/r/spotify/kafka) 和 运行 中的 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
Port of Kafka Broker and Zookeeper are mapped to the host
对于Kafka,你需要的不仅仅是端口映射。您还需要将广告侦听器地址(广告 host 已弃用 属性)设置为容器所在服务器的外部 hostname/ip 运行 以便从另一台机器访问它。您还需要将侦听器地址设为 0.0.0.0
Filebeat does not run in a docker container but directly on server2
应该没关系
如果控制台生产者在另一台机器上工作,那么您希望任何其他 Kafka 客户端也能工作