我正在尝试使用 Consul、Rancher 和 Docker。
所以我有这个在 4 个不同的主机上运行的 REST 服务。该服务的每个实例都使用容器链接在单个 Consul 容器中注册自己。也就是说,所有实例都知道 Consul 容器。
这工作正常。
当 Consul 尝试对我的服务进行健康检查时,不能正常工作。如果服务实例与 consul 容器在同一主机上运行,则可以。但是在不同主机上运行的任何实例都会失败。地址不可达。
我尝试以几种不同的方式提取服务实例容器 IP。1) 列出容器内所有可用的 notwork 接口和 ip。2)容器内的“主机名-i”。
他们都产生IP。例如172.16.0.06
,当 Rancher 列出 IP 时,例如10.43.100.24
同一容器的 IP。
我的猜测是 Consul 应该对 Rancher 显示的 IP 执行健康检查,而不是我在容器中提取的 IP。
我在这里有点不知所措,我的服务应该如何找到它应该用来在 Consul 中注册自己的 IP?
(我知道这不是真正应该如何使用 Consul,但问题是一个主机上的容器无法访问另一台主机上的容器。所以 Consul 部分只是为了说明我正在尝试的内容)