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

Amazon ec2 Kafka:如何连接Kafka控制台消费者以获取远程代理主题内容?,amazon-ec2,apache-kafka,apache-zookeeper,kafka-consumer-api,kafka-producer-api,Amazon Ec2,Apache Kafka,Apache Zookeeper,Kafka Consumer Api,Kafka Producer Api,我在ec2上的一台机器上安装了一个kafka zookeeper和3个代理,端口为9092..9094,我正在尝试从另一台机器上使用主题内容。端口2181(zk)、9092、9093和9094(服务器)对用户计算机开放。我甚至可以做一个bin/kafka-topics.sh--description--zookeeper 172.X.X.X:2181--topic-remotetopic,这给了我 主题:remotetopic分区计数:1复制因子:3配置: 主题:remotetopic分区:0前

我在ec2上的一台机器上安装了一个kafka zookeeper和3个代理,端口为9092..9094,我正在尝试从另一台机器上使用主题内容。端口2181(zk)、9092、9093和9094(服务器)对用户计算机开放。我甚至可以做一个
bin/kafka-topics.sh--description--zookeeper 172.X.X.X:2181--topic-remotetopic
,这给了我

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

然而,当我执行
bin/kafka-console-consumer.sh--zookeeper 172.X.X.X:2181--从一开始--topic remotetopic
我得到

警告:从代理[id:0,主机:localhost,端口:9092]获取主题[Set(remotetopic)]的相关id为0的主题元数据失败(kafka.client.ClientUtils$) java.nio.channels.ClosedChannel异常

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


任何帮助都将不胜感激

我以类似(甚至更复杂)的方式设置了Kafka和Zookeeper,Kafka-console-consumer.sh确实像广告中所宣传的那样工作

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


检查卡夫卡配置默认情况下,如果未指定zookeeper实例,则假定为单个本地主机实例。否则“server.1”。。。必须使用2 etc约定来定义zookeeper实例(建议/要求至少三个以获得适当的法定人数)。

也有同样的问题。通过按照kafka配置(config/server.properties)中的注释设置属性“adverted.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
试试看:
我也遇到了同样的问题,我使用的是卡夫卡0.11,我在我的Ubuntu虚拟机中启动了producer和broker,并在Windows 10中启动了consumer

我已经改变(并且没有注释)


从服务器/代理端的文件config/server.properties(即,在我的例子中是Ubuntu VM)

“advised.host.name=localhost”将“localhost”替换为我的ip地址。谢谢。然后我们可以远程访问日志并获取Java或Python客户端上的信息吗?更简单的方法是使用0.0.0.0,而不是像192.168.150.150这样的实际ip地址
advertised.listeners=PLAINTEXT://your.host.name:9092
advertised.listeners=PLAINTEXT://<myActual IP address>:9092
advertised.listeners=PLAINTEXT://192.168.150.150:9092