Eureka 客户端的“prefer-ip-address”在 docker 容器中不起作用

Posted

技术标签:

【中文标题】Eureka 客户端的“prefer-ip-address”在 docker 容器中不起作用【英文标题】:"prefer-ip-address" of Eureka client not work in docker container 【发布时间】:2018-09-15 23:54:54 【问题描述】:

我有一个在 docker 中运行的 Spring Cloud Eureka 客户端实例,我希望客户端将主机的 IP 地址而不是容器的主机名注册到 Eureka 服务器,因此我将 eureka.instance.ip-address: xx.xx.xx.xxeureka.instance.prefer-ip-address: true 设置为客户端的application.yml,但这不起作用,它仍然将容器的主机名注册到服务器,感谢任何帮助!

spring:
  application:
    name: uaa-service
server:
  port: 8799

eureka:
  service-url:
    defaultZone: https://XX.YY.ZZ/eureka/
  instance:
    prefer-ip-address: true
    ip-address: xx.xx.xx.xx

我的 Spring Boot 版本是 2.0.0.RELEASE,Spring Cloud 是 Finchley.M9

【问题讨论】:

<eurekaserver>/apps 中有什么内容?那里显示的不是发送给客户的。 【参考方案1】:

在你的春季服务中提供这个

spring:
  application:
    name: uaa-service
  cloud:
    inetutils:
      ignored-interfaces:
        - eth0
        - eth1
        - eth2
        - eth3
        - lo

取自this

【讨论】:

【参考方案2】:

我用的是同版本的spring-boot,遇到了类似的问题

但我认为您将 IP 地址与实例 ID 混淆了。

查看此链接:https://github.com/spring-cloud/spring-cloud-netflix/issues/1646#issuecomment-275121055

当您将鼠标悬停在链接上或单击它时,它会显示正确的 IP 地址吗?

不管怎样,我有两个应用程序,一个使用 spring-boot 1.5,这个属性可以工作。

对于 2.0 版本,应用程序始终使用机器 IP,而不是我在 eureka.instance.ip-address 中告知的内容。


编辑 > 我在这里报告了一个错误:https://github.com/spring-cloud/spring-cloud-netflix/issues/2878

【讨论】:

以上是关于Eureka 客户端的“prefer-ip-address”在 docker 容器中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 API 网关配置对 eureka 客户端的 API 请求

细水长流——Eureka实现Demo

spring boot 1.5.2中eureka客户端如何找到eureka server?

Eureka客户端和服务端配置

深入 Eureka 服务注册 源码分析

Eureka常见问题