使用首选网络配置向尤里卡注册服务不起作用



我想向尤里卡注册一个服务,服务器有两个ip:

eth0: 192.168.121.74
eth1: 10.254.102.243

我希望该服务使用 ip 10.254.102.243 注册,所以我的appliction.yml如下所示:

eureka:
client:
serviceUrl:
defaultZone: http://10.254.102.12:1111/eureka/
instance:
preferIpAddress: true
spring:
application:
name: item-service
jpa:
hibernate.ddl-auto: none
database-platform: org.hibernate.dialect.MySQLDialect
datasource:
url: {url}
username: {username}
password: {password}
cloud:
inetutils:
preferredNetworks:
- 10.254

但这不起作用,该服务仍然注册了 ip 192.168.121.74。

当我像这样运行我的服务时:

java -Dspring.cloud.inetutils.preferredNetworks=10.254 -jar item-web-0.0.1-SNAPSHOT.war

服务日志显示 ip 已10.254.102.250,但实际上 ip 是127.0.0.1我在尤里卡服务器网页中找到的。

2017-07-09 15:44:06.658  INFO 24322 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ITEM-SERVICE/10.254.102.250:item-service: registering service...
2017-07-09 15:44:06.828  INFO 24322 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_ITEM-SERVICE/10.254.102.250:item-service - registration status: 204

那么,如何使服务注册为 ip 10.254.102.243?

更新:

当我preferredNetworks移动到bootstrap.yml中时,它的工作原理就像在命令行中使用-Dspring.cloud.inetutils.preferredNetworks一样。在尤里卡服务器网页中,尤里卡网页中的实际 ip 仍然127.0.0.1

尝试在boostrap.yml中定义以下属性,而不是application.yml。您可以添加要忽略的其他接口。

spring:
cloud:
inetutils:
ignoredInterfaces:
- lo
- lo*
- eth0*