13

我在 ec2 上的一台机器上设置了一个 kafka zookeeper 和 3 个代理,端口为 9092..9094,并试图从另一台机器上使用主题内容。端口 2181 (zk)、9092、9093 和 9094(服务器)对消费者机器开放。我什至可以做一个bin/kafka-topics.sh --describe --zookeeper 172.X.X.X:2181 --topic remotetopic给我的

主题:remotetopic PartitionCount:1 ReplicationFactor:3 配置:主题:remotetopic 分区:0 领导者:2 副本:2,0,1 Isr:2,0,1 Blockquote

但是,当我这样做bin/kafka-console-consumer.sh --zookeeper 172.X.X.X:2181 --from-beginning --topic remotetopic

WARN 从代理 [id:0,host: localhost ,port:9092]获取主题 [Set(remotetopic)] 的相关 id 为 0 的主题元数据失败 (kafka.client.ClientUtils$) java.nio.channels.ClosedChannelException

为什么消费者试图从本地主机读取?是否有任何选项或命令行或默认文件从中读取;我可以改变它吗?

任何帮助,将不胜感激!

4

4 回答 4

11

我遇到了同样的问题,我使用的是kafka 0.11,我在我的 Ubuntu VM 中启动了生产者和代理,在 Windows 10 中启动了消费者。

我已经改变(并且未注释)

advertised.listeners=PLAINTEXT://your.host.name:9092

advertised.listeners=PLAINTEXT://<myActual IP address>:9092

例子:

advertised.listeners=PLAINTEXT://192.168.150.150:9092

来自服务器/代理端的文件config/server.properties(即在我的情况下它是 Ubuntu VM)

于 2017-07-29T07:41:06.120 回答
9

有同样的问题。通过按照 kafka 配置 (config/server.properties) 中的注释设置属性“advertised.host.name”并重新启动 kafka 服务器来修复它。

于 2016-02-11T16:17:52.060 回答
3

我创建了一个 python 脚本,它允许您通过 ssh 隧道访问 kafka/zookeeper 以使用和生成来自本地计算机的消息。

兼容 Linux 和 Mac

Usage: kafkatunnel.py [OPTIONS] COMMAND [ARGS]...

  Access kafka/zookeeper via ssh tunnel to consume and produce messages from
  your local machine

Commands:
  aws     retrieve kafka/zookeeper ip's from AWS...
  manual  provide the IP's of your zookeeper/kafka

试试看: https ://github.com/simple-machines/kafka-tunnel

于 2016-10-27T07:18:44.317 回答
0

我已经以类似(甚至更复杂)的方式设置了 Kafka 和 Zookeeper,并且 kafka-console-consumer.sh 确实像宣传的那样工作。

这很可能是一个错误配置的 Kafka 实例(它在服务器配置中指定了它的 zookeeper 节点)。

检查 Kafka 配置。默认情况下,如果未指定 zookeeper 实例,则假定为单个 localhost 实例。否则,必须使用 "server.1" ... 2 等约定来定义 zookeeper 实例(建议/要求至少三个以获得适当的仲裁)。

于 2015-12-01T20:46:48.397 回答