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

时间:2017-02-24 10:16:11

标签: spring jhipster netflix-eureka

我们遇到以下问题,在部署多个微服务时,随机有时其中一个在注册表中注册了错误的IP。据我所知,尤里卡错误地识别了容器的IP ...... 我们测试了几个像这个application.yml配置的解决方案,但我们没有让它正常工作。有什么想法吗?

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"在字符串值"。当我读到这篇文章时,这是有道理的:Reference a key in application.yml

1 个答案:

答案 0 :(得分:0)

@snowblind这很可能是docker容器网络的一个问题。实际上,在进行初始注册时,Eureka仅使用应用程序内部可用的内容。因此,它将使用类似java.net.InetAddress的内容确定其地址,然后将此值传播到注册表以通告如何访问服务。但是在你的情况下,它似乎报告了错误的信息。

首先请确保始终将容器端口映射到同一主机端口。或者,您可以使用docker主机网络(--net = host),以便您的容器与主机共享相同的网络接口。通过将net: "host"添加到您的服务描述中,可以在docker-compose中进行此操作。

另一个想法是使用基于主机名的Eureka注册,而不是我们默认配置的基于IP的注册(prefer-ip-adress = true),但我不能保证它会起作用,因为我从来没有我自己尝试过,如果你想这样做,请参考Eureka文档。

相关问题