haproxy用于马拉松mesos docker链接容器上的服务发现

r6vfmomb  于 2021-06-21  发布在  Mesos
关注(0)|答案(4)|浏览(366)

请不要问我查过的任何地方。这是我所做的。我能够部署mesos、marathon和docker的单个示例。下一步,我想有两个mesos奴隶(码头集装箱)相互联系。仅仅使用docker同样可以通过使用docker链接功能来实现。但是在使用编排(mesos)和调度程序(marathon)时,似乎需要使用服务发现。
我的设置很简单,在一台主机上运行。因此,我将有两个docker容器,一个运行简单的pub/sub,另一个运行rabbitmq。如何在此设置中使用ha代理。我看过一些中间层提供的文件http://mesosphere.com/docs/getting-started/service-discovery/ 但目前尚不清楚该如何进行。

nkhmeac6

nkhmeac61#

我们将mesos和marathon与consun和registartor相结合,因此最终您将使用consun模板自动生成haproxy配置。
尝试https://github.com/ebayclassifiedsgroup/panteras 都在一个容器里。

kuhbmx9i

kuhbmx9i2#

我创建了一个haproxy服务发现docker容器,可以在mesos中运行。它还没有准备好生产,但我在我的开发环境中使用它,做的正是您想要做的事情。我更喜欢马拉松的原因是我还没有找到一个好方法来处理复杂的haproxy配置 haproxy-marathon-bridge . 与 spiderweb 您可以为haproxy配置创建一个模板,该模板允许您执行诸如acl路由等操作。它还不支持运行状况检查,这需要在其生产就绪之前完成。你可以在这里看到这个项目https://github.com/sbrdevelopment/spiderweb.

gab6jxml

gab6jxml3#

使用mesos+marathon+docker进行服务发现的规范方法是您链接的文档中当前描述的方法。
我假设你已经可以让这两个应用程序运行了。
通常情况下:
1) 配置应用程序定义以包含应用程序所需的端口。
2) 你设置了 haproxy-marathon-bridge 使用cron之类的实用工具定期运行的脚本。这个脚本使用marathon的api来找出应用程序示例运行的主机和端口以及已知的“友好”端口。
在服务发现文章的示例中,第一个应用程序具有友好的 80 以及 443 ,而第二个有一个友好的港口 8081 .
然后脚本生成一个 haproxy.cfg 具有规则Map的配置 localhost:friendly_portactual_host:actual_port .
3) 将应用程序配置为在 localhost:friendly_port . haproxy将适当地路由连接。
希望这有助于您的理解!

j13ufse2

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的其他应用程序访问它

相关问题