请不要问我查过的任何地方。这是我所做的。我能够部署mesos、marathon和docker的单个示例。下一步,我想有两个mesos奴隶(码头集装箱)相互联系。仅仅使用docker同样可以通过使用docker链接功能来实现。但是在使用编排(mesos)和调度程序(marathon)时,似乎需要使用服务发现。
我的设置很简单,在一台主机上运行。因此,我将有两个docker容器,一个运行简单的pub/sub,另一个运行rabbitmq。如何在此设置中使用ha代理。我看过一些中间层提供的文件http://mesosphere.com/docs/getting-started/service-discovery/ 但目前尚不清楚该如何进行。
4条答案
按热度按时间nkhmeac61#
我们将mesos和marathon与consun和registartor相结合,因此最终您将使用consun模板自动生成haproxy配置。
尝试https://github.com/ebayclassifiedsgroup/panteras 都在一个容器里。
kuhbmx9i2#
我创建了一个haproxy服务发现docker容器,可以在mesos中运行。它还没有准备好生产,但我在我的开发环境中使用它,做的正是您想要做的事情。我更喜欢马拉松的原因是我还没有找到一个好方法来处理复杂的haproxy配置
haproxy-marathon-bridge
. 与spiderweb
您可以为haproxy配置创建一个模板,该模板允许您执行诸如acl路由等操作。它还不支持运行状况检查,这需要在其生产就绪之前完成。你可以在这里看到这个项目https://github.com/sbrdevelopment/spiderweb.gab6jxml3#
使用mesos+marathon+docker进行服务发现的规范方法是您链接的文档中当前描述的方法。
我假设你已经可以让这两个应用程序运行了。
通常情况下:
1) 配置应用程序定义以包含应用程序所需的端口。
2) 你设置了
haproxy-marathon-bridge
使用cron之类的实用工具定期运行的脚本。这个脚本使用marathon的api来找出应用程序示例运行的主机和端口以及已知的“友好”端口。在服务发现文章的示例中,第一个应用程序具有友好的
80
以及443
,而第二个有一个友好的港口8081
.然后脚本生成一个
haproxy.cfg
具有规则Map的配置localhost:friendly_port
至actual_host:actual_port
.3) 将应用程序配置为在
localhost:friendly_port
. haproxy将适当地路由连接。希望这有助于您的理解!
j13ufse24#
使用mesos dns,您还可以执行以下操作:
按照本指南设置mesos dns:http://programmableinfrastructure.com/guides/service-discovery/mesos-dns-haproxy-marathon/ (您可以跳过haproxy步骤—它们不是必需的)
启动docker容器时,请确保它们的/etc/resolv.conf文件中有“namespace%slave\u ip\u with\u mesos\u dns%”(用ip地址替换字符串)。
如果让我们说一个应用程序的名称是“peek”,那么应该可以从peek.marathon.mesos的其他应用程序访问它