【问题标题】:Docker and service clustersDocker 和服务集群
【发布时间】:2015-01-12 20:19:09
【问题描述】:

我们正在研究使用 Docker 以及 Mesos/Marathon 或 Kubernetes 来托管集群。但是,我们还没有真正看到任何答案的一个问题是如何允许集群服务正确地相互连接。我见过的所有节点都需要至少了解一个其他节点才能加入集群。有些人需要了解每个节点。但是,在 Kubernetes 和 Mesos 中,无法提前知道这些 IP 地址是什么。

那么,有什么最佳实践吗?如果有帮助,我们正在考虑部署为容器的一些技术是 ElasticSearch、ActiveMQ 和 MongoDB。可能还有其他人。

【问题讨论】:

    标签: docker mesos kubernetes


    【解决方案1】:

    但是,我们还没有真正看到任何答案的一个问题是如何让集群服务正确地相互连接。

    我认为您在这里谈论的是 HA/复制/分片应用程序。

    目前,在 kubernetes 中,您可以通过调用列出服务的所有“端点”的 api 调用来完成此操作;这会告诉你你的同行在哪里运行。

    我们最终希望以更一流的方式支持您描述的用例。

    我提交了https://github.com/GoogleCloudPlatform/kubernetes/issues/3419,也许可以从这里开始做一些更标准化的事情。

    【讨论】:

    • 没错。我只是使用“集群”,因为它们作为机器集群运行。我们实际上做了类似的事情,但看起来有点骇人听闻。此外,还有关于领导力的担忧,如果添加/删除节点会怎样等。希望您的想法有所帮助。
    【解决方案2】:

    我还想使用 Mesos/Marathon 设置 ElasticSearch 集群。由于现有的“解决方案”要么只是没有记录,要么没有工作/过时,我建立了自己的容器。

    如果你喜欢,看看https://github.com/tobilg/docker-elasticsearch-marathon

    如果您正在运行 Marathon 安装(我使用 v0.8.1),那么设置 ElasticSearch 集群应该只需几分钟。

    更新

    容器现在使用 Elasticsearch v1.5.2 并且能够在最新的 Marathon v0.8.2 上运行。

    【讨论】:

      【解决方案3】:

      对于 Kubernetes,currently 确实需要 kube-controllers-manager--machines 参数开头,并给出一个 minion IP 或主机名列表。

      【讨论】:

      • 用 etcd 或 mDNS 支持的发现机制替换它可能不会太难,维护者肯定会欢迎这种增强。
      • Kubernetes 已经存在类似的东西,但是那是在容器启动之后。即使这样,服务本身也必须支持那些特定形式的发现,这可能会发生也可能不会发生,具体取决于项目。
      • 我不认为我们在谈论同一件事......您的问题是关于形成 Kubernetes 集群本身,目前需要您提供所有参与机器的 IP/主机名。原来你问的是在 Kubernetes 上运行的应用程序,对吧?
      • 实际上,这从来都不是我的问题。我的问题是关于在 Kubernetes 或 Mesos 环境中创建服务集群,例如 ElasticSearch 集群。问题是,要让这样的集群工作,节点需要找到彼此,如果在它们启动之前不知道它们的 IP 地址,这将变得非常困难。
      • 对于这个问题,ElasticSearch 将使用它基于多播的Zen discovery。如果您将 Kubernetes 与 Weave 一起使用,就像我在 my blog post 中展示的那样,您将在任何地方获得多播工作。
      【解决方案4】:

      我现在看不到任何简单的方法可以在 Kubernetes 中正确处理这个问题。是的,您可以调用返回端点列表的 API,但您必须注意变化并在端点发生变化时采取行动......

      我更喜欢使用为这种情况做好充分准备的 Mesos/Marathon。您应该为 Mesos 实现自定义框架。 ElasticSearch 框架已经准备好了:http://mesos.apache.org/documentation/latest/mesos-frameworks/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-09
        • 2018-11-08
        • 2017-10-26
        • 2017-11-05
        • 1970-01-01
        • 1970-01-01
        • 2015-04-17
        • 1970-01-01
        相关资源
        最近更新 更多