我们正在考虑使用Docker以及Mesos / Marathon或Kubernetes来托管群集。但是,我们还没有真正看到任何答案的一个问题是如何让群集服务正确连接到彼此。我所看到的所有那些在加入集群之前需要知道至少一个其他节点。有些人需要了解每个节点。但是,在Kubernetes和Mesos中,没有办法提前知道这些IP地址是什么。
那么,有什么最好的做法吗?如果它有所帮助,我们将部署为容器的一些技术是ElasticSearch,ActiveMQ和MongoDB。可能还有其他人。
答案 0 :(得分:2)
但是,我们还没有真正看到任何答案的一个问题是如何让群集服务正确地相互连接。
我认为你在这里谈论HA /复制/分片应用程序。
目前,在kubernetes中,您可以通过api调用列出服务的所有“端点”来实现此目的;这会告诉你同伴在哪里跑。
我们最终希望以更一流的方式支持您描述的用例。
我提交https://github.com/GoogleCloudPlatform/kubernetes/issues/3419可能会在这里开始更标准化的事情。
答案 1 :(得分:1)
我还想使用Mesos / Marathon设置ElasticSearch集群。由于现有的“解决方案”或者只是未记录,或者没有工作/过时,我设置了自己的容器。
如果您愿意,请查看https://github.com/tobilg/docker-elasticsearch-marathon
如果您正在运行Marathon安装(我使用的是v0.8.1),那么设置ElasticSearch集群应该只需几分钟。
<强>更新强>:
容器现在使用Elasticsearch v1.5.2并且能够在最新的Marathon v0.8.2上运行。
答案 2 :(得分:0)
对于Kubernetes,currently确实需要kube-controllers-manager
以--machines
参数开头给出一个minion IP或主机名列表。
答案 3 :(得分:0)
我现在没有看到如何在Kubernetes中正确处理这个问题的简单方法。是的,您可以调用返回端点列表的API,但是您必须注意更改并在端点更改时采取措施...
我更喜欢使用为这种情况做好充分准备的Mesos / Marathon。您应该为Mesos实现自定义框架。已经准备好了ElasticSearch框架:http://mesos.apache.org/documentation/latest/mesos-frameworks/