【问题标题】:Using zookeeper for service discovery of mesos slaves running docker使用 zookeeper 对运行 docker 的 mesos slave 进行服务发现
【发布时间】:2015-02-20 14:36:23
【问题描述】:

我正在尝试使用 mesos/marathon 框架链接 2 个 docker 容器。据我了解,无法在 mesos/martahon 中使用 docker 链接功能。所以前进的方法是使用服务发现。由于已经使用了 zookeeper,我的问题是如何使用 zookeeper 进行服务发现,以便 1 个容器可以与另一个容器通信。

【问题讨论】:

    标签: docker apache-zookeeper mesos mesosphere marathon


    【解决方案1】:

    对于 Mesos/Marathon 上的服务发现,您可以使用代理服务器(请参阅https://mesosphere.github.io/marathon/docs/service-discovery-load-balancing.html)或自动从 Mesos 派生设置的 DNS 服务器(请参阅https://github.com/mesosphere/mesos-dns)。

    【讨论】:

    • 请引用参考链接中答案的基本部分,因为如果链接页面发生变化,答案可能会失效。
    • 感谢您指出 mesos-dns ..但是我遇到了另一个问题。如何使用 mesos-dns 从一个 docker 容器到另一个运行在同一主机上的 docker 容器查找服务的主机名端口。
    • @user1507003 您可以使用主机名<task>.<framework>.mesos(如果您将mesos 定义为mesos-dns 域)访问另一个docker 容器。例如,如果您的 docker 容器在 Marathon 中运行:myapp.marathon.mesos。容器是否在同一主机上运行并不重要。
    【解决方案2】:

    虽然可能我会重新考虑使用 Zookeeper 作为您的配置和服务信息的集中式 KV 存储。您可以尝试实现一个守护程序来询问和保存 Zookeeper 中的数据,以便配置容器的配置文件和实时修补,但这是一个复杂的解决方案(this post from Pinterest 或 Hadoop 的 ZKFailoverController 守护程序中有这种方法的示例)。在我看来,有更合适的解决方案,如 Consul 或 etcd,守护进程的实现为 kelseyhightower/confdconsul-template

    【讨论】:

    • 感谢哈维尔,让我评估一下您的建议。
    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2018-10-19
    • 2020-12-02
    相关资源
    最近更新 更多