高可用註冊中心 ->Spring Cloud Eureka

在微服務架構這樣的分佈式環境中,咱們須要充分考慮發生故障的狀況, 因此在生產 環境中必須對各個組件進行高可用部署, 對於微服務如此, 對於服務註冊中心也同樣。 但 是到本節爲止,咱們一直都在使用單節點的服務註冊中心,這在生產環境中顯然並不合適, 咱們須要構建高可用的服務註冊中心以加強系統的可用性。 java

        Eureka Server的設計一開始就考慮了高可用問題, 在Eureka的服務治理設計中, 全部 節點便是服務提供方, 也是服務消費方, 服務註冊中心也不例外。 是否還記得在單節點的 配置中,咱們設置過下面這兩個參數, 讓服務註冊中心不註冊本身: spring

eureka.client.register-with-eureka=false架構

eureka.client.fetch-registry=false app

       Eureka Server的高可用實際上就是將本身做爲服務向其餘服務註冊中心註冊本身,這 樣就能夠造成一組互相註冊的服務註冊中心, 以實現服務清單的互相同步, 達到高可用的 效果。 下面咱們就來嘗試搭建高可用服務註冊中心的集羣。分佈式

  • 目錄結構微服務

https://img1.mukewang.com/5b31f2290001271a04610315.jpg

https://img2.mukewang.com/5b31f25600018f9c05730277.jpg

https://img4.mukewang.com/5b31f2620001b82305520319.jpg

       在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圖

https://img1.mukewang.com/5b31f3680001b45908760103.jpg

peer2圖

https://img1.mukewang.com/5b31f38300011f9408430316.jpg

此時訪問peer1的註冊中心http://localhost:1111/, 以下圖所示, 咱們能夠到看, registered-replicas中已經有peer2節點的eureka-server了。 一樣的, 咱們訪 問peer2的註冊中心http://localhost: 2222/ , 也能到看registered-replicas 中已經有peer1節點,而且這些節點在可用分片(available-replicase)之中。

https://img4.mukewang.com/5b31f4860001249314390579.jpg

       在設置了多節點的服務註冊中心以後, 服務提供方還須要作一些簡單的配置才能將 服務註冊到Eureka Server 集羣中。 咱們如下面的項目爲例, 修改 application.properties 配置文件, 以下所示: 

https://img2.mukewang.com/5b31f51b000164f003730324.jpg

    修改pom.xml

https://img2.mukewang.com/5b31f58c0001005309130267.jpg

       上面的配置主要對eureka.client.serviceUrl.defaultZone屬性作了改動, 將註冊中心指向了以前咱們搭建的peerl與peer2(相似於dubbo服務)。

訪問地址:

http://localhost:1111/

http://localhost:2222/

能夠觀察到hello-service 服務同時被註冊到了peerl和peer2上。若此時斷開peer!, 因爲compute-service同時也向peer2註冊, 所以在peer2上的 其餘服務依然能訪問到hello-service, 從而實現了服務註冊中心的高可用。

https://img1.mukewang.com/5b320dbe0001fb3214230355.jpg

相關文章
相關標籤/搜索