Kafka:如何连接Kafka控制台消费者以获取远程代理主题内容



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

主题:remotetopic分区计数:1复制因子:3配置:主题:remotetopic分区:0 Leader:2个副本:2,0,1 Isr:2,0,1区块报价

然而,当我做bin/kafka-console-consumer.sh --zookeeper 172.X.X.X:2181 --from-beginning --topic remotetopic时,我会得到

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

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

任何帮助都将不胜感激!

我也遇到了同样的问题,我正在使用kafka 0.11,我在Ubuntu虚拟机中启动了生产者和经纪人,在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)

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

我创建了一个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

我已经以类似(甚至更复杂)的安排设置了Kafka和Zookeeper,Kafka-console-consumer.sh确实可以像广告中所说的那样工作。

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

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

最新更新