4

请不要在我检查过的任何地方问这个问题。这是我所做的。我能够部署 mesos、marathon 和 docker 的单个实例。向前迈进一步,我想让 2 个 mesos slave(docker 容器)相互链接。只需使用 docker 就可以通过使用 docker 链接功能来实现。但是在使用编排(mesos)和调度程序(马拉松)时,您似乎需要使用服务发现。

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

4

4 回答 4

5

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

我假设您已经能够让这两个应用程序在 Marathon 中运行。

通常发生的情况是:

1) 配置您的应用程序定义以包含您的应用程序所需的端口。

2) 您将提供的haproxy-marathon-bridge脚本设置为使用 cron 之类的实用程序定期运行。此脚本会抓取 Marathon 的 API 以找出应用程序实例正在运行的主机和端口以及已知的“友好”端口是什么。

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

然后,该脚本会生成一个haproxy.cfg配置,该配置的规则映射localhost:friendly_portactual_host:actual_port.

3) 配置您的应用程序以在localhost:friendly_port. HAProxy 将适当地路由连接。

希望这有助于您的理解!

于 2015-02-24T03:52:52.137 回答
0

我们将 Mesos 和 Marathon 与 consul 和 registartor 结合在一起,所以最后你可以使用 consul-template 自动生成 haproxy 配置。

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

于 2015-04-09T21:08:57.100 回答
0

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

于 2015-02-26T15:06:25.520 回答
0

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

  1. 按照本指南设置 mesos-dns:http: //programmableinfrastructure.com/guides/service-discovery/mesos-dns-haproxy-marathon/(您可以跳过不需要的 HAProxy 步骤)
  2. 当您启动 docker 容器时,请确保它们的 /etc/resolv.conf 文件中有“命名空间 %slave_ip_with_mesos_dns%”(将字符串替换为 IP 地址)。
  3. 如果让我们说一个应用程序的名称是“peek”,它应该可以从 peek.marathon.mesos 上的其他应用程序访问
于 2016-05-30T06:43:37.103 回答