SpringCloud系列四:實現Eureka Server的高可用並將應用注冊到Eureka Sever集群上


1. 回顧

  上一篇博客中,實現了單節點的Eureka Server。Eureka Client會定時連接Eureka Server,獲取注冊表中的信息並緩存到本地。微服務在消費遠程API時總是使用本地緩存中的數據。因此一般來說,即使Eureka Server發生宕機,也不會影響到服務之間的調用。但如果Eureka Server宕機時,某些微服務也出現了不可用的情況,Eureka Server中的緩存若不被刷新,就可能會影響到微服務的調用,甚至影響到整個應用系統的高可用。因此,在生成環境中,通常會部署一個高可用的Eureka Server集群。

  Eureka Server可以通過運行多個實例並相互注冊的方式實現高可用部署,Eureka Server實例會彼此增量地同步信息,從而確保所有節點數據一致。事實上,節點之間相互注冊是Eureka Server的默認行為。

2. 構建一個雙節點的Eureka Server集群

  > 復制項目microservice-discovery-eureka,將ArtifactId修改為microservice-discovery-eureka-ha01

  > 復制項目microservice-discovery-eureka,將ArtifactId修改為microservice-discovery-eureka-ha02

  > 修改hosts文件,在windows平台下,進入目錄:C:\Windows\System32\drivers\etc,然后用管理員權限打開hosts文件,添加一條記錄

127.0.0.1 peer1 peer2

  > 修改microservice-discovery-eureka-ha01的配置文件application.yml

server: port: 8762 eureka: instance: hostname: peer1 client: service-url: defaultZone: http://peer2:8763/eureka # 設置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址。
spring: application: name: microservice-discovery-eureka-ha

  > 修改microservice-discovery-eureka-ha02的配置文件application.yml

server: port: 8763 eureka: instance: hostname: peer2 client: service-url: defaultZone: http://peer1:8762/eureka # 設置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址。
spring: application: name: microservice-discovery-eureka-ha

  > 兩個項目的spring.application.name必須相同,eureka.instance.hostname必須不同,否則都會失敗。(至少我測試的是這樣

  > 啟動兩個項目,訪問:http://peer1:8762/http://peer2:8763/ ,此時registered-replicas(已注冊分片)都有另一個系統的url地址,並且都在available-replicase(可用分片)中

3. 將微服務注冊到Eureka Server集群上 

  > 修改microservice-provider-user中的配置文件application.yml,將eureka.client.service-url.defaultZone改為http://peer1:8762/eureka/

eureka: client: service-url: defaultZone: http://peer1:8762/eureka/

  > 修改microservice-consumer-movie中的配置文件application.yml,將eureka.client.service-url.defaultZone改為http://peer1:8762/eureka/,http://peer2:8763/eureka/

 

eureka:
  client:
    service-url:
      defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka

 

  > 先啟動Eureka Server集群,再啟動這兩個微服務。訪問:http://peer1:8762/ http://peer2:8763/。發現這兩個微服務都注冊在了集群里。

    說明即使微服務只配置Eureka Server集群中的某個節點,也能正常注冊到Eureka Server集群,因為多個Eureka Server之間的數據會相互同步。

    不過為適應某些極端場景,建議在客戶端配置多個Eureka Server節點。

4.  總結

  前面幾篇博客講的Eureka Server都是允許匿名訪問的。

  下一篇博客將講解為Eureka Server添加用戶認證。敬請期待~~~

5. 參考

  周立 --- 《Spring Cloud與Docker微服務架構與實戰》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM