Jhipster注册表从Eureka(Docker部署)中获取错误的IP



我们遇到以下问题,当部署多个微服务时,有时会随机地在注册表中注册一个不正确的IP。我知道尤里卡(Eureka)错误地识别了容器的IP ...我们测试了类似于此应用程序的几个解决方案。有什么想法吗?

eureka:
    instance:
        prefer-ip-address: true
        hostname: ${server.address}
        ip-address: ${server.address}

我在这里看到了此解决方案:https://groups.google.com/d/msg/jhipster-dev/n7s7otgt18e/rtz3o4hlewaj

但是,此配置抛出的"无法解析占位符" server.address"在字符串值中"。当我阅读本文时,这很有意义:引用application.yml

中的键

@snowblind这很可能是Docker容器网络的问题。实际上,在进行初始注册时,尤里卡(Eureka)仅使用应用程序内部可用的内容。因此,它将用java.net.inetaddress之类的内容来确定其地址,然后将此值传播到注册表,以宣传如何达到服务。但是,在您的情况下,它似乎正在报告错误的信息。

因此,首先确保您始终将容器端口映射到同一主机端口。另外,您可以使用Docker主机网络(-NET =主机),以便您的容器与主机共享相同的网络接口。通过将net: "host"添加到您的服务下降中,可以在Docker-Compose中进行。

另一个想法是使用基于主机名的eureka注册,而不是基于IP的IP,我们默认配置的IP(preay-ip-adress = true),但是我不能保证它会正常工作,因为我从未尝试过它我自己,如果您想这样做,请参考尤里卡文档。

最新更新