使用在mesos DCOS上运行的kafka发布消息时出现问题

时间:2016-09-18 19:03:08

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

我有一个运行DCOS的小集群。我可以在this指南后成功安装kafka。正在运行

trait TypeClass[-C, -D, E] {
  def show(c: C, d: D, e:E): String
}

// cutting out putting it all together to save space

scala> val s1 = show("some show", Atom, new Xml {})
s1: show[Atom.type,Xml] = show(some show,Atom,$anon$1@76a4d6c)

scala> Service.print(s1, s1.tp, s1.en)
res1: String = some show

给出

$ dcos kafka connection

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

{
  "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"
  ]
}

但是当我尝试发布时

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

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

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

由于

AJ

2 个答案:

答案 0 :(得分:1)

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

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

此外,它看起来像是在早于1.8的DC / OS版本上运行。如果使用1.8,无论动态分配的IP地址如何,您都可以使用更简单的代理端点。您可以使用命名的VIP C:/Program Files (x86)/Common Files/Merge Modules ,但这只能从群集中的计算机进行寻址。

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

以下是从默认Kafka安装中安装,生成和使用的示例:

broker.kafka.l4lb.thisdcos.directory:9092

答案 1 :(得分:1)

更新 - 这似乎是由/ etc / hosts中缺少条目引起的。我已经更新了我的terraform脚本以在设置过程中编写这些脚本,上面的示例现在可以正常工作了。

感谢您的帮助