Spring Cloud常見(jiàn)問(wèn)題之:無(wú)法注冊(cè)主機(jī)名
此前,笔者已经写过多篇总结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了。
获取主机名的相关代码
相关Issue
https://github.com/spring-cloud/spring-cloud-netflix/issues/2084
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)