【发布时间】:2015-04-27 07:41:00
【问题描述】:
有没有办法使用 POST/GET 调用动态获取 mesos 主端点?是否有任何 API 可以调用 zookeeper 并返回 mesos 主 URL?
【问题讨论】:
有没有办法使用 POST/GET 调用动态获取 mesos 主端点?是否有任何 API 可以调用 zookeeper 并返回 mesos 主 URL?
【问题讨论】:
您应该能够通过查询您的 zookeeper DNS 端点(例如 zookeeper.example.com)来查询 zookeeper 中的 master:
zookeeper.example.com:2181/mesos.
您也可以在 mesos 中查询您的任何 master,请求将自动转发给领先的 master。
最后,有一个名为 Mesos-DNS 的项目,它为您的任何 mesos 主服务器(使用 master.mesos)提供了一个 DNS 端点。
然而,最重要的一点是您不应该存储这些信息。没有理由假设当前的领先大师(或就此而言的任何大师)不会改变。
【讨论】:
使用 zookeeper 命令行。
https://github.com/apache/zookeeper/blob/trunk/bin/zkCli.sh
./bin/zkCli.sh
help
# see how to connect to other zookeeper
# default is: localhost:2181
ls /
# [mesos, zookeeper]
ls /mesos
# [json.info_0000000001]
get /mesos/json.info_0000000001
# It will return the Mesos Master's hostname & IP
结果是这样的:
{"address":{"hostname":"ced7f7fb79fc","ip":"172.17.0.3","port":5050},"hostname":"ced7f7fb79fc","id":"c8055c4c-3ae0-40e6-a710-5184bcb957a9","ip":50336172,"pid":"master@172.17.0.3:5050","port":5050,"version":"0.26.0"}
【讨论】:
/mesos中只有一个znode。但是,这不能假设,也没有办法从 znode 内容中生成的 json 确定领导者。例如。 [zk: localhost:2181(CONNECTED) 20] ls /mesos ### [json.info_0000000111, json.info_0000000112, json.info_0000000112, log_replicas]
使用mesos-dns,您可以简单地使用leader.mesos 获取当前master。
dig leader.mesos
; <<>> DiG 9.9.5-3ubuntu0.6-Ubuntu <<>> leader.mesos
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8386
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;leader.mesos. IN A
;; ANSWER SECTION:
leader.mesos. 60 IN A 10.100.12.40
;; Query time: 1 msec
;; SERVER: 10.100.14.206#53(10.100.14.206)
;; WHEN: Wed Sep 14 15:31:55 UTC 2016
;; MSG SIZE rcvd: 46
【讨论】: