【问题标题】:Kafka : How to connect kafka-console-consumer to fetch remote broker topic content?Kafka:如何连接 kafka-console-consumer 以获取远程代理主题内容?
【发布时间】:2016-02-08 14:57:20
【问题描述】:

我已经在 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 块引用

但是当我做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

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

任何帮助将不胜感激!

【问题讨论】:

    标签: amazon-ec2 apache-kafka apache-zookeeper kafka-consumer-api kafka-producer-api


    【解决方案1】:

    我遇到了同样的问题,我正在使用 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)

    【讨论】:

    • 一种更简单的方法是使用 0.0.0.0 而不是像 192.168.150.150 这样的实际 IP 地址
    • 根据(docs)[kafka.apache.org/documentation/…,将0.0.0.0设置为ip地址是无效的
    【解决方案2】:

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

    【讨论】:

    • "advertised.host.name = localhost" 用我的 ip 地址替换了 'localhost'..谢谢
    • 我们可以远程访问日志并获取 Java 或 Python 客户端的信息吗?
    【解决方案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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-01-25
        • 2023-03-09
        • 2019-12-07
        • 2017-06-06
        • 1970-01-01
        • 2020-03-12
        • 2018-09-30
        • 2020-02-12
        • 2021-12-28
        相关资源
        最近更新 更多