为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Cloud常见问题之:无法注册主机名

标签:
Spring Cloud

此前,笔者已经写过多篇总结Spring Cloud常见问题的博客(详情请在本博客首页http://www.itmuch.com 搜索按钮进行搜索,关键词:常见问题)。

本文将讨论微服务无法向Eureka Server注册主机名的问题。

我们常使用如下配置实现将微服务注册到Eureka Server:

eureka: 
 client:  
   serviceUrl:    
     defaultZone: http://localhost:8761/eureka/

由于没有配置eureka.instance.prefer-ip-address=true ,因此此时微服务将会注册所在主机/容器的主机名到Eureka Server。

然而,我们会发现有时可能造成注册IP到Eureka Server的情况——这就诡异了,明明应该注册主机名到Eureka Server的,竟然注册了IP地址。这是怎么回事呢?如何解决该问题呢?

原来,这是由于主机名是通过调用Java API获取的,有时候Java API无法获得主机名,于是会将IP地址发送给Eureka Server。

那么如何解决这个问题呢?

答案很简单,使用配置eureka.instance.hostname 即可。你可以使用将其设置为一个环境变量,例如:eureka.instance.hostname=${HOST_NAME} 。这样在启动时,只要你配置了环境变量HOST_NAME ,就可以将你所配置的环境变量注册到Eureka Server了。

获取主机名的相关代码

https://github.com/spring-cloud/spring-cloud-commons/blob/master/spring-cloud-commons/src/main/java/org/springframework/cloud/commons/util/InetUtils.java

相关Issue

https://github.com/spring-cloud/spring-cloud-netflix/issues/2084




点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消