我有一个运行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
答案 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脚本以在设置过程中编写这些脚本,上面的示例现在可以正常工作了。
感谢您的帮助