美文网首页Spring Cloud Spring cloud微服务
Spring Cloud常见问题之:无法注册主机名

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

作者: 周立_itmuch | 来源:发表于2017-10-31 11:41 被阅读183次

    此前,笔者已经写过多篇总结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

    本文链接Spring Cloud常见问题之:无法注册主机名
    转载声明:本博客由周立创作,采用 CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。

    相关文章

      网友评论

      • 淡若S悠然:但是我写了hostname,但是还是注册的IP,应该怎么解决啊

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

      本文链接:https://www.haomeiwen.com/subject/etfbpxtx.html