• 这几天遇到一个bug,我们微服务组90%都是部署在linux环境中,只有一个XX微服务是部署在Windows环境中,并且服务都是分布式部署,并没有全部部署在同一台服务器上。这时,问题就出现了~微服务向eureka注册中心注册时,显示的IP地址不正常全部是localhost或者主机名称。(正常情况下,应该显示的为微服务所在服务器的IP地址)
  • 然后我们查了一下问题原因,由于服务器配备了多网卡的原因,导致eureka在发现微服务时,无法确定微服务所注册的是哪张网卡,所以会默认显示为localhost或者主机名称。
  • 解决办法:

在你微服务的application.properties文件中加入如下几行代码:

spring.application.name=robot-base
server.port=8002
spring.cloud.client.address=192.168.5.120

#以IP地址的方式向eureka进行注册
eureka.instance.prefer-ip-address=true

#Npcap Loopback Adapter:为忽略的网卡名称
spring.cloud.inetutils.ignored-interfaces[0]=Npcap Loopback Adapter

#${spring.cloud.client.address}:为微服务所在服务器的IP地址
#${spring.application.name}:为微服务的名称
#${server.port}:为微服务端口号
eureka.instance.instance-id=${spring.cloud.client.address}:${spring.application.name}:${server.port}

注意:忽略的网卡名称就是微服务不使用那张网卡向注册中心注册。

完美解决!

Logo

更多推荐