Spring Cloud常見問題之:沒法註冊主機名

此前,筆者已經寫過多篇總結Spring Cloud常見問題的博客(詳情請在本博客首頁http://www.itmuch.com 搜索按鈕進行搜索,關鍵詞:常見問題)。java

本文將討論微服務沒法向Eureka Server註冊主機名的問題。git

咱們常使用以下配置實現將微服務註冊到Eureka Server:github

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

因爲沒有配置eureka.instance.prefer-ip-address=true ,所以此時微服務將會註冊所在主機/容器的主機名到Eureka Server。spring

然而,咱們會發現有時可能形成註冊IP到Eureka Server的狀況——這就詭異了,明明應該註冊主機名到Eureka Server的,居然註冊了IP地址。這是怎麼回事呢?如何解決該問題呢?微信

原來,這是因爲主機名是經過調用Java API獲取的,有時候Java API沒法得到主機名,因而會將IP地址發送給Eureka Server。微服務

那麼如何解決這個問題呢?code

答案很簡單,使用配置eureka.instance.hostname 便可。你能夠使用將其設置爲一個環境變量,例如:eureka.instance.hostname=${HOST_NAME} 。這樣在啓動時,只要你配置了環境變量HOST_NAME ,就能夠將你所配置的環境變量註冊到Eureka Server了。ip

獲取主機名的相關代碼 https://github.com/spring-cloud/spring-cloud-commons/blob/master/spring-cloud-commons/src/main/java/org/springframework/cloud/commons/util/InetUtils.javaget

相關Issue https://github.com/spring-cloud/spring-cloud-netflix/issues/2084博客

  • 本文連接:Spring Cloud常見問題之:沒法註冊主機名
  • 轉載聲明:本博客由周立創做,採用 CC BY 3.0 CN 許可協議。可自由轉載、引用,但需署名做者且註明文章出處。如轉載至微信公衆號,請在文末添加做者公衆號二維碼。
相關文章
相關標籤/搜索