Eureka Server的高可用


Eureka Server進行互相注冊的方式來實現高可用的部署,所以我們只需要將Eureke Server配置其他可用的serviceUrl就能實現高可用部署

  • 創建application-peer1.properties,作為peer1服務中心的配置,並將serviceUrl指向peer2
  • spring.application.name=eureka-server
    server.port=1111
    eureka.instance.hostname=peer1
    
    #指向另一個注冊中心
    eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
  • 創建application-peer2.properties,作為peer2服務中心的配置,並將serviceUrl指向peer1
  • spring.application.name=eureka-server
    server.port=1112
    eureka.instance.hostname=peer2
    
    #指向另一個注冊中心
    eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/

     hosts文件中添加對peer1和peer2的轉換

  • 127.0.0.1 peer1
    127.0.0.1 peer2
  • 通過spring.profiles.active屬性來分別啟動peer1和peer2
  • java -jar eureka-server-1.0.0.jar --spring.profiles.active=peer1
    java -jar eureka-server-1.0.0.jar --spring.profiles.active=peer2

     

此時訪問peer1的注冊中心:http://localhost:1111/。registered-replicas中已經有peer2節點的eureka-server了。

同樣地,訪問peer2的注冊中心:http://localhost:1112/registered-replicas中已經有peer1節點,並且這些節點在可用分片(available-replicase)之中。

我們也可以嘗試關閉peer1,刷新http://localhost:1112/,peer1的節點變為了不可用分片(unavailable-replicas)。

服務注冊與發現

pring.application.name=compute-service
server.port=2222
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/

 

如何配置serviceUrl來讓集群中的服務進行同步

Eureka Server的同步遵循着一個非常簡單的原則:只要有一條邊將節點連接,就可以進行信息傳播與同步

場景一

假設我們有3個注冊中心,我們將peer1、peer2、peer3各自都將serviceUrl指向另外兩個節點。換言之,peer1、peer2、peer3是兩兩互相注冊的。啟動三個服務注冊中心,並將compute-service的serviceUrl指向peer1並啟動,可以獲得如下圖所示的集群效果。

 

 訪問http://localhost:1112/,可以看到3個注冊中心組成了集群,compute-service服務通過peer1同步給了與之互相注冊的peer2和peer3

 

總結:

  • 兩兩注冊的方式可以實現集群中節點完全對等的效果,實現最高可用性集群,任何一台注冊中心故障都不會影響服務的注冊與發現

 


免責聲明!

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



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