5

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

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

4

4 回答 4

2

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

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

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

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

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

于 2015-01-13T00:51:38.713 回答
1

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

如果您愿意,请查看https://github.com/tobilg/docker-elasticsearch-marathon

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

更新

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

于 2015-04-16T09:38:14.557 回答
0

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

于 2015-01-14T13:26:04.417 回答
0

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

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

于 2015-01-21T11:43:55.620 回答