【问题标题】:Problems publishing messages with kafka running on mesos DCOS使用在 mesos DCOS 上运行的 kafka 发布消息时出现问题
【发布时间】:2016-09-18 19:03:07
【问题描述】:

我有一个运行 DCOS 的小型集群。我能够按照this 指南成功安装kafka。运行

$ dcos kafka connection

给予

{
  "address": [
    "10.131.17.126:9475",
    "10.131.24.6:9655",
    "10.131.14.192:9181"
  ],
  "zookeeper": "master.mesos:2181/dcos-service-kafka",
  "dns": [
    "broker-0.kafka.mesos:9475",
    "broker-1.kafka.mesos:9655",
    "broker-2.kafka.mesos:9181"
  ]
}

我可以创建主题,我已经用 cli 工具检查了 zookeeper,状态似乎很好

get /dcos-service-kafka/brokers/ids/0
{"jmx_port":-1,"timestamp":"1474206074029","endpoints":["PLAINTEXT://10.131.17.126:9475"],"host":"10.131.17.126","version":3,"port":9475}
get /dcos-service-kafka/brokers/ids/1
{"jmx_port":-1,"timestamp":"1474206120002","endpoints":["PLAINTEXT://10.131.24.6:9655"],"host":"10.131.24.6","version":3,"port":9655}
get /dcos-service-kafka/brokers/ids/2
{"jmx_port":-1,"timestamp":"1474206122985","endpoints":["PLAINTEXT://10.131.14.192:9181"],"host":"10.131.14.192","version":3,"port":9181}

但是当我尝试发布时

echo "Hello, World." | ./kafka-console-producer.sh --broker-list 10.131.17.126:9475, 10.131.24.6:9655, 10.131.14.192:9181 --topic topic1

我明白了

[2016-09-18 18:49:32,909] ERROR Error when sending message to topic topic1 with key: null, value: 13 bytes with error: Failed to update metadata after 60000 ms. (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)

我怀疑这可能与私有 IP 地址与公共 IP 地址有关,也可能与 server.properties 中的 host.name 有关。

谁能就我如何调试(并希望解决!)问题提供一些建议,以便我可以成功发布消息?

谢谢

AJ

【问题讨论】:

    标签: apache-kafka mesos mesosphere apache-zookeeper dcos


    【解决方案1】:

    更新 - 这似乎是由于 /etc/hosts 中缺少条目造成的。我已经更新了我的 terraform 脚本以在安装过程中编写这些脚本,您上面的示例现在可以按预期工作。

    感谢您的帮助

    【讨论】:

    • 太棒了!很高兴您找到了解决方案。抱歉,我无法提供更多帮助。
    【解决方案2】:

    编辑:对于任何展望未来的人。 This was a problem in /etc/hosts caused by a terraform script.

    你的怀疑是正确的。这些是无法从集群外部寻址的私有 IP 地址。为了与 Kafka 通信,您必须设置 VPN 以使这些 IP 地址可以访问,或者在集群中的计算机上运行您的发布命令。

    此外,您似乎在运行早于 1.8 的 DC/OS 版本。如果您使用 1.8,您将获得一个更容易使用的代理端点,而不管动态分配的 IP 地址如何。您可以使用命名的 VIP broker.kafka.l4lb.thisdcos.directory:9092,但这只能从集群中的机器上寻址。

    设置 haproxy 或 nginx 以指向指定的 VIP 也是一种轻松外部访问 DC/OS 集群上运行的服务(在本例中为 Kafka)的方法。您需要确保这些代理在公共代理上运行。 See here for more details.

    以下是从默认 Kafka 安装安装、生产和使用的示例:

    ~ $ dcos package install kafka
    Installing Marathon app for package [kafka] version [1.1.11-0.10.0.0]
    Installing CLI subcommand for package [kafka] version [1.1.11-0.10.0.0]
    New command available: dcos kafka
    DC/OS Kafka Service is being installed.
    
            Documentation: https://docs.mesosphere.com/usage/services/kafka/
            Issues: https://docs.mesosphere.com/support/
    ~ $ dcos kafka connection
    {
      "address": [
        "10.0.3.64:9951",
        "10.0.3.68:9795",
        "10.0.3.66:9531"
      ],
      "zookeeper": "master.mesos:2181/dcos-service-kafka",
      "dns": [
        "broker-0.kafka.mesos:9951",
        "broker-1.kafka.mesos:9795",
        "broker-2.kafka.mesos:9531"
      ],
      "vip": "broker.kafka.l4lb.thisdcos.directory:9092"
    }
    ~ $ dcos kafka topic create topic0
    {
      "message": "Output: Created topic \"topic0\".\n"
    }
    ~ $ dcos node ssh --master-proxy --leader
    core@ip-10-0-7-56 ~ $ wget http://download.nextag.com/apache/kafka/0.10.0.1/kafka_2.11-0.10.0.1.tgz
    core@ip-10-0-7-56 ~ $ tar xf kafka_2.11-0.10.0.1.tgz
    core@ip-10-0-7-56 ~ $ cd kafka_2.11-0.10.0.1
    core@ip-10-0-7-56 ~/kafka_2.11-0.10.0.1 $ bin/kafka-console-producer.sh --broker-list broker.kafka.l4lb.thisdcos.directory:9092 --topic topic0
    This is a message
    This is another message
    ^Ccore@ip-10-0-7-56 ~/kafka_2.11-0.10.0.1 $ bin/kafka-console-consumer.sh --zookeeper master.mesos:2181/dcos-service-kafka --topic topic0 --from-beginning
    This is a message
    This is another message
    ^CProcessed a total of 2 messages
    $ bin/kafka-console-producer.sh --broker-list 10.0.3.64:9951,10.0.3.68:9795,10.0.3.66:9531 --topic topic0
    foo
    bar
    baz
    ^Ccore@ip-10-0-7-56 ~/kafka_2.11-0.10.0.1 $ bin/kafka-console-consumer.sh --zookeeper master.mesos:2181/dcos-service-kafka --topic topic0 --from-beginning
    This is a message
    This is another message
    foo
    bar
    baz
    ^CProcessed a total of 5 messages
    

    【讨论】:

    • 我现在已经更新到 1.8,谢谢。根据用户指南dcos node ssh --master-proxy --leader,我正在通过 ssh 连接到一个代理节点。我可以从那里和 docker 容器内 ping 所有内部端口
    • 应该添加它仍然无法正常工作。不确定使用 VPN 是否能解决此问题,如果我错了,请纠正我。
    • 感谢您的帮助。不幸的是,这仍然对我不起作用。如果我按照上述相同的步骤操作,我会得到:
    猜你喜欢
    • 2016-07-11
    • 2017-11-09
    • 2021-08-10
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2016-09-14
    相关资源
    最近更新 更多