docker - 如何获取当前主机上 Docker swarm 全局服务的地址?
问题描述
我有一个 docker swarm 在不同地理位置的多个主机上运行。其中一项服务是
services:
apple:
deploy:
mode: global
这意味着它在 swarm 中的每个节点上运行。swarm 中的其他服务需要与该服务通信,并且响应必须尽可能快。设置它的原因是mode: global
确保 swarm 中的每个其他服务都有一个可以访问的本地副本。
如果我apple
从另一个服务进行 DNS 解析,我会得到一个集群路由器,我相信它会将我路由到集群中的一个随机节点(不是我想要的)。如果我在上面进行 DNS 解析,tasks.apple
我将取回集群中每个节点的 IP 地址,但我不知道哪个是本地节点。
我可以对所有节点执行 ping 操作以找到“快速节点” ,但这是一个非常模糊的解决方案,当您需要apple
在apple
当你以前回落到一个遥控器apple
。
是否有任何用于“将我路由到最近的apple
”的 docker 解决方案,通常是本地的?
有没有办法我可以以某种方式询问哪个副本apple
正在哪个主机上运行?
注意:apple
是第三方开发的服务,因此apple
像新的 HTTP 端点一样公开新的端点将被证明是困难的。
解决方案
推荐阅读
- java - 无法解析构造函数 'ArrayAdapter(匿名 android.widget.SeekBar.OnSeekBarChangeListener,int,java.util.ArrayList
) - sql - 当更新条件取决于另一个表的值时如何更新表中的列
- laravel - Laravel 5.6 中 RedirectIfAuthenticated 的逻辑是什么?
- ruby-on-rails - 如何阻止 Gemfile.lock 文件自动一次又一次地更改?
- python - ImageDataGenerator 是如何工作的?它会自动重新调整输入吗?
- reactjs - 登录成功反应redux时不重定向到HOC中传递的组件
- regex - 如何制作一个检查所有第一个字母都应该是大写的模式?
- python - 使用 Flask API,如何使用浏览器/客户端的 jwt_required 装饰器从服务器上传和下载文件?
- bash - tar 在磁盘已满时返回成功状态
- ios - iOS BLE 附件想在未查看应用时打开应用。如何使此警报静音?