Docker和服务集群

我们正在考虑使用Docker加Mesos / Marathon或Kubernetes来托pipe一个集群。 但是,我们还没有真正看到任何答案的一个问题是如何允许集群服务正确地彼此连接。 所有我见过的人在join集群之前至less需要知道另一个节点。 有些需要了解每个节点。 但是,在Kubernetes和Mesos中,没有办法知道那些IP地址提前。

那么,有没有最佳做法呢? 如果有帮助的话,我们正在研究的一些技术就是ElasticSearch,ActiveMQ和MongoDB。 可能有其他的。

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

我想你在这里讨论HA /复制/分片应用程序。

目前,在kubernetes中,您可以通过api调用列出服务的所有“端点”来实现此目的; 这将告诉你你的同行正在运行。

我们最终希望能够以一stream的方式来支持您所描述的用例。

我提交了https://github.com/GoogleCloudPlatform/kubernetes/issues/3419 ,可能会从这里开始更加标准化。

我也想用Mesos / Marathon设置一个ElasticSearch集群。 由于现有的“解决scheme”或者仅仅是无证件的,或者不是工作/过时的,我build立了自己的容器。

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

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

更新

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

至于Kubernetes,它目前确实需要kube-controllers-manager从给定的--machines IP或主机名列表开始--machines参数。

我现在看不到任何简单的方法如何正确处理Kubernetes。 是的,你可以打电话给返回terminal列表的API,但你必须观察变化,并采取行动,当端点变化…

我宁愿使用为此场景做好准备的Mesos / Marathon。 你应该实现Mesos的自定义框架。 已经有了ElasticSearch框架: http ://mesos.apache.org/documentation/latest/mesos-frameworks/