0

我有一个运行 DCOS 的小型集群。我能够按照指南成功安装 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 有关。

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

谢谢

阿杰

4

2 回答 2

1

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

谢谢你的帮助

于 2016-09-28T13:30:04.433 回答
1

编辑:对于任何展望未来的人。 这是 /etc/hosts 中由 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)的方法。您需要确保这些代理在公共代理上运行。 有关详细信息,请参见此处

以下是从默认 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
于 2016-09-21T16:29:46.403 回答