首页 > 解决方案 > 如何获取当前主机上 Docker swarm 全局服务的地址?

问题描述

我有一个 docker swarm 在不同地理位置的多个主机上运行。其中一项服务是

services:
  apple:
    deploy:
      mode: global

这意味着它在 swarm 中的每个节点上运行。swarm 中的其他服务需要与该服务通信,并且响应必须尽可能快。设置它的原因是mode: global确保 swarm 中的每个其他服务都有一个可以访问的本地副本。

如果我apple从另一个服务进行 DNS 解析,我会得到一个集群路由器,我相信它会将我路由到集群中的一个随机节点(不是我想要的)。如果我在上面进行 DNS 解析,tasks.apple我将取回集群中每个节点的 IP 地址,但我不知道哪个是本地节点。

我可以对所有节点执行 ping 操作以找到“快速节点” ,但这是一个非常模糊的解决方案,当您需要appleapple当你以前回落到一个遥控器apple

是否有任何用于“将我路由到最近的apple”的 docker 解决方案,通常是本地的?

有没有办法我可以以某种方式询问哪个副本apple正在哪个主机上运行?

注意:apple是第三方开发的服务,因此apple像新的 HTTP 端点一样公开新的端点将被证明是困难的。

标签: dockerdocker-swarm

解决方案


推荐阅读