【发布时间】:2021-04-11 03:39:46
【问题描述】:
我应该在游牧奴隶旁边还是在他们内部运行执政官奴隶? 后者可能根本没有意义,但我问它以防万一。
我带来了我自己的 nomad 集群,其中 consul slave 与 nomad slave(在工作节点内)一起运行,我的可部署工件是 docker 容器(java spring 应用程序)。 我当前设置的问题是我的应用程序无法访问 consul slaves(读取配置)(0.0.0.0、localhost、工作节点 ip 都没有工作)
假设我的服务公开了 8080,我将 docker 部分(在 hcl 文件中)配置为使用网桥作为网络模式。 Nomad 将 8080 映射到 43210。 一切都很好,直到我的服务尝试到达领事奴隶以读取配置。理想情况下,将游牧工作节点 IP 作为 Spring 的领事主机就足够了。但由于某种原因,它不是。
我正在使用最新版本的 nomad。
我将我的游牧奴隶配置为 https://github.com/bmd007/statefull-geofencing-faas/blob/master/infrastructure/nomad/client1.hcl
下面的链接显示了我如何配置/运行我的领事奴隶: https://github.com/bmd007/statefull-geofencing-faas/blob/master/infrastructure/server2.yml
注意:如果我使用静态端口映射和主机作为 docker 的网络模式(在 nomad 中),我会很好,但是我不能在每个工作节点中部署每个应用程序的多个实例(由于端口冲突)
【问题讨论】:
-
您是否尝试过在使用 nomad 部署的 docker 容器中使用
172.17.0.1? -
这里的“奴隶”是什么?领事有客户端和服务器,你的意思是客户端吗? consul.io/docs/architecture。不想学究气,只是不知道发生了什么。
-
啊,我明白了。 server2.yml 显示您如何运行您的领事“服务器”,对吗?你的领事客户的游牧工作没有显示?
-
我建议按照您的建议将 consul nomad 作业作为“系统”作业运行并使用静态端口映射。我们这样做是为了一些事情,虽然你永远无法使用端口 8500 主持另一项工作,但我认为你的服务总是可以通过 machine_ip:8500 联系到领事更优雅
标签: spring-boot docker deployment console nomad