我在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
为什么消费者试图从localhost读取?是否有任何选项或命令行或默认文件从中读取;我可以改变它吗?
任何帮助,将不胜感激!
4 回答
我有同样的问题,我正在使用 kafka 0.11 ,我在我的Ubuntu VM和Windows 10中的消费者中启动了 生产环境 者和代理 .
我改变了(并且没有注释)
至
例:
从文件 config/server.properties 在服务器/代理端(即在我的情况下它是Ubuntu VM)
我已经将Kafka和Zookeeper设置为类似(甚至更复杂)的安排,kafka-console-consumer.sh确实像宣传的那样工作 .
这很可能是一个配置错误的Kafka实例(在服务器配置中指定了它的zookeeper节点) .
检查Kafka配置 . By default if the zookeeper instances are NOT specified, it presumes a singular localhost instance. 否则必须使用"server.1" ... 2等惯例来定义zookeeper实例(建议/需要至少三个以获得正确的仲裁) .
我创建了一个python脚本,允许您通过ssh隧道访问kafka / zookeeper来使用和生成本地计算机的消息 .
兼容Linux和Mac
试试吧:https://github.com/simple-machines/kafka-tunnel
有同样的问题 . 通过按照kafka配置(config / server.properties)中的注释指示设置属性'advertised.host.name'并重新启动kafka服务器来修复它 .