如何以编程方式指定由marathon创建的依赖docker容器的ip和端口?

cvxl0en2  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(342)

我正在通过编写一个小的web应用程序来学习微服务体系结构。该应用程序包含以下组件,每个组件都将由docker容器托管。

在我用nodejs编写的api网关中,有一个地方我将调用:

request('http://service_b_ip_addr:port/get_service_b', callback);

然而,两者 service_b_ip_addr 以及 port 直到marathon创建了服务b的docker容器后才知道。
有了一些服务发现机制,比如mesosdns或marathonlb,我想我可以改变 service_b_ip_addr 像这样的 service_b.marathon.com .
但我不知道我该怎么把 port 在我的节目里。
事先谢谢你的帮助。
附言:
我使用桥接网络模式,因为一个服务的多个示例可以位于同一个mesos从机上。所以呢 port 是一个随机数。

ao218c7q

ao218c7q1#

看看这个答案。
如果您使用marathonlb,那么就不需要传递端口,因为它是一个代理,它只需通过名称就可以知道服务的位置。
如果您使用mesos dns,您应该发出srv请求以获取ip和端口。在节点中,您可以使用 dns.resolveSrv(hostname, callback) 但是您的dns必须在defaul(53)端口上公开并支持srv请求(mesos dns支持它)。

相关问题