此前,筆者已經寫過多篇總結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
相關Issue https://github.com/spring-cloud/spring-cloud-netflix/issues/2084博客