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搞清楚了应用程序实例在哪个主机和端口上运行,以及已知的“友好”端口是什么。
在服务发现文章的例子中,第一个应用程序有友好的端口80
和443
,而第二个应用程序友好的端口8081
。
然后,脚本生成一个haproxy.cfg
configuration,该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,您也可以执行以下操作:
- 按照本指南设置mesos-dns: http : //programmableinfrastructure.com/guides/service-discovery/mesos-dns-haproxy-marathon/ (您可以跳过HAProxy步骤,它们不是必需的)
- 当你启动Docker容器时,确保他们的/etc/resolv.conf文件中有“namespace%slave_ip_with_mesos_dns%”(用IP地址replacestring)。
- 如果可以说一个应用程序的名称是“偷看”,它应该可以从其他应用程序在peek.marathon.mesos