eureka的Instances status列表显示ip

spring cloud 版本 Dalston.RELEASE

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>

 

服务提供者向eureka注册中心注册时,默认以hostname的形式上报,上报成功之后,默认以localhost显示,如:

 

 

此时如果请求经过zuul网关转发到后台的服务提供者的话,

如果服务提供者和zuul网关在同一台机器上,大家都是localhost的域名,那就没问题,能发现服务;

如果服务提供者和zuul网关不在同一台机器上,会报一个没找到服务的异常,原因是根据localhost和端口没有找到相应的服务。

此时,一种解决方法是让服务提供者上报自己的 ip地址,并显示在Eureka的注册列表中。

只需要在服务者的配置文件application.properties上添加两个配置:

eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}

 重新发布提供者之后,能正常显示:



 

这样,经过zuul网关的请求,就能正常的转发到后台的服务提供者。

 

 

------------------分隔线--------------------

如果只是配置了eureka.instance.prefer-ip-address=true,而不配置eureka.instance.instance-id

那还是显示localhost,但ip地址是可以访问得了。

 

 

 

-----------------------------------------------

 

Eureka Client并没有自己实现探测本机IP的逻辑,而是交给Spring的org.springframework.cloud.commons.uti.InetUtils工具类的findFirstNonLoopbackAddress()方法完成

下面这位哥们分析了eureka 客户端是如何获取本机ip地址:

http://blog.csdn.net/neosmith/article/details/53126924

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值