HaProxy用于在马拉松式集装箱docker上进行服务发现

请不要询问我检查过的任何地方。 这是我所做的。 我能够部署mesos,马拉松和docker的单个实例。 移动下一步,我想有2个mesos奴隶(docker集装箱)相互链接。 只要使用docker,可以通过使用docker链接function来实现。 但是,当使用编排(mesos)和调度程序(马拉松),似乎你需要使用服务发现。

我的设置很简单,在一台主机上运行。 所以我将有2个Docker容器运行一个简单的pub / sub和一个运行rabbitmq。 如何在此设置中使用HA PRoxy。 我已经看到mesosphere http://mesosphere.com/docs/getting-started/service-discovery/提供的一些文件,但不清楚如何去做。

Mesos + Marathon + Docker服务发现的规范方法目前在您链接的文档中有描述。

我假设你已经能够获得在马拉松运行的两个应用程序。

通常情况是:

1)configuration您的应用程序定义以包含您的应用程序需要的端口。

2)您设置提供的haproxy-marathon-bridge脚本,使用cron等实用程序定期运行。 这个脚本将马拉松的API搞清楚了应用程序实例在哪个主机和端口上运行,以及已知的“友好”端口是什么。

在服务发现文章的例子中,第一个应用程序有友好的端口80443 ,而第二个应用程序友好的端口8081

然后,脚本生成一个haproxy.cfgconfiguration,该configuration具有将localhost:friendly_port映射到actual_host:actual_port规则。

3)configuration你的应用程序在localhost:friendly_port上寻找彼此。 HAProxy将适当地路由连接。

希望这有助于你的理解!

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

我们已经把Mesos和Marathon与领事和注册人结合起来,所以最后你可以用consul-template自动生成haproxyconfiguration。

尝试https://github.com/eBayClassifiedsGroup/PanteraS所有在一个容器。

使用Mesos-DNS,您也可以执行以下操作:

  1. 按照本指南设置mesos-dns: http : //programmableinfrastructure.com/guides/service-discovery/mesos-dns-haproxy-marathon/ (您可以跳过HAProxy步骤,它们不是必需的)
  2. 当你启动Docker容器时,确保他们的/etc/resolv.conf文件中有“namespace%slave_ip_with_mesos_dns%”(用IP地址replacestring)。
  3. 如果可以说一个应用程序的名称是“偷看”,它应该可以从其他应用程序在peek.marathon.mesos