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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章