1. 程式人生 > >Eureka高可用註冊中心registered-replicas沒有分散式註冊中心

Eureka高可用註冊中心registered-replicas沒有分散式註冊中心

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不出現分散式註冊中心》看到了幾種說法,

  1. eureka.client.serviceUrl.defaultZone配置項的地址,不能使用localhost,要使用service-center-1之類的域名,通過host對映到127.0.0.1;
  2. spring.application.name或eureka.instance.appname必須一致;
  3. 相互註冊要開啟:
    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

最後附上截圖

eureka