在微服務架構這樣的分佈式環境中,咱們須要充分考慮發生故障的狀況, 因此在生產 環境中必須對各個組件進行高可用部署, 對於微服務如此, 對於服務註冊中心也同樣。 但 是到本節爲止,咱們一直都在使用單節點的服務註冊中心,這在生產環境中顯然並不合適, 咱們須要構建高可用的服務註冊中心以加強系統的可用性。 java
Eureka Server的設計一開始就考慮了高可用問題, 在Eureka的服務治理設計中, 全部 節點便是服務提供方, 也是服務消費方, 服務註冊中心也不例外。 是否還記得在單節點的 配置中,咱們設置過下面這兩個參數, 讓服務註冊中心不註冊本身: spring
eureka.client.register-with-eureka=false架構
eureka.client.fetch-registry=false app
Eureka Server的高可用實際上就是將本身做爲服務向其餘服務註冊中心註冊本身,這 樣就能夠造成一組互相註冊的服務註冊中心, 以實現服務清單的互相同步, 達到高可用的 效果。 下面咱們就來嘗試搭建高可用服務註冊中心的集羣。分佈式
目錄結構微服務
在etc/hosts文件中添加對peerl和peer2的轉換, 讓上面配置的host形式的 serviceUrl能在本地正確訪間到; Windows系統路徑爲C:\Windows\System32\ drivers\etc\hosts。 fetch
127.0.0.1 peer1
127.0.0.1 peer2
啓動:設計
java -jar Eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1server
java -jar Eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2xml
peer1圖
peer2圖
此時訪問peer1的註冊中心http://localhost:1111/, 以下圖所示, 咱們能夠到看, registered-replicas中已經有peer2節點的eureka-server了。 一樣的, 咱們訪 問peer2的註冊中心http://localhost: 2222/ , 也能到看registered-replicas 中已經有peer1節點,而且這些節點在可用分片(available-replicase)之中。
在設置了多節點的服務註冊中心以後, 服務提供方還須要作一些簡單的配置才能將 服務註冊到Eureka Server 集羣中。 咱們如下面的項目爲例, 修改 application.properties 配置文件, 以下所示:
修改pom.xml
上面的配置主要對eureka.client.serviceUrl.defaultZone屬性作了改動, 將註冊中心指向了以前咱們搭建的peerl與peer2(相似於dubbo服務)。
訪問地址:
能夠觀察到hello-service 服務同時被註冊到了peerl和peer2上。若此時斷開peer!, 因爲compute-service同時也向peer2註冊, 所以在peer2上的 其餘服務依然能訪問到hello-service, 從而實現了服務註冊中心的高可用。