Eureka高可用註冊中心registered-replicas沒有分散式註冊中心
阿新 • • 發佈:2018-12-17
Eureka高可用註冊中心registered-replicas沒有分散式註冊中心
【寫在前面】如果看完這篇部落格,對你有幫助的話,歡迎加入全棧技術交流群,群內不定時釋出熱門學習資料,也歡迎進行技術交流,對我的部落格有疑問也可以在群裡@我。《全棧技術交流群歡迎你》
最近接了個活。思來想去,還是覺得Spring Cloud在使用和配置方面簡單點,畢竟Spring約定大於配置嘛。
言歸正傳,自己在學習過程中發現,如果Eureka掛掉了,其他的Client就跑不起來了,那既然是商業專案,還是要處理好這個問題,所以決定用《Spring Cloud微服務實戰》(PDF版在全棧技術交流群中自行獲取)中說的“高可用註冊中心”。
一開始我yml的配置是這樣的
server:
port: 8761
eureka:
instance:
hostname: 127.0.0.1
client:
fetch-registry: true
register-with-eureka: true
serviceUrl:
defaultZone: http://127.0.0.1:8762/eureka/
spring:
application:
name: eureka-server
profiles:
active: Eureka1
這樣做的結果是,註冊中心都可以跑起來,並且Application也有資訊,一個Eureka Down掉以後,Client會註冊到另一個Eureka上,但是registered-replicas和available-replicas就是沒有分散式註冊中心的地址。
後來在這篇部落格《Eureka高可用註冊中心,available-replicas不出現分散式註冊中心》看到了幾種說法,
- eureka.client.serviceUrl.defaultZone配置項的地址,不能使用localhost,要使用service-center-1之類的域名,通過host對映到127.0.0.1;
- spring.application.name或eureka.instance.appname必須一致;
- 相互註冊要開啟:
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
根據我的驗證,應該是1和3比較靠譜,唉,有的時候啊,就得按照書上老老實實來,不要自作聰明把hostname寫成127.0.0.1。我在hosts新增hostname後,yml配置改成如下:
spring:
application:
name: eureka-server
profiles:
active: eureka1
server:
port: 8761
eureka:
instance:
hostname: eureka1
client:
fetch-registry: true
register-with-eureka: true
serviceUrl:
defaultZone: http://eureka2:8762/eureka/
這裡我用一個工程,兩個yml啟動,所以
Program arguments 設定如下,當然也可以分兩個工程啟動:
eureka1
--spring.profiles.active=eureka1
eureka2
--spring.profiles.active=eureka2
最後附上截圖