SpringCloud(三)Eureka注冊中心實現高可用


前言:

spring-cloud為基礎的微服務架構,所有的微服務都需要注冊到注冊中心,如果這個注冊中心阻塞或者崩了,那么整個系統都無法繼續正常提供服務,所以,這里就需要對注冊中心進行集群,換言之,高可用(HA)

前提:

閱讀並完成第一個注冊中心的項目,環境無需改變。本文是模擬的高可用可以復制兩個注冊中心的項目單獨修改各自的配置文件達到同樣的效果

修改hosts,在文件末添加兩行如下:

127.0.0.1 peer1
127.0.0.1 peer2

推薦使用notepad++,如果是win10會提醒提權限,確定,然后保存即可。

項目搭建:

打開注冊中心的項目,在src/resources下創建一個application-peer1.properties

#應用名
spring.application.name=eureka-server
#提供服務端口1111
server.port=1111
#提供服務的域名,這里在hosts文件中修改了
eureka.instance.hostname=peer1
#向第二個注冊中心注冊自己
eureka.client.service-url.defaultZone=http://peer2:1112/eureka/

在src/resources下創建一個application-peer2.properties

#應用名稱與第一個注冊中心一樣
spring.application.name=eureka-server
#提供服務端口1112
server.port=1112
#提供服務的域名,這里在hosts文件中修改了
eureka.instance.hostname=peer2
#向第一個注冊中心注冊自己
eureka.client.service-url.defaultZone=http://peer1:1111/eureka/

本文使用idea進行測試,首先需要對這個項目進行打成jar包,因為在pom.xml中已經引入了maven編譯工具和打包工具並指定打包格式為jar包,這里直接操作,屏幕右上方

 

打包完成,該jar包位於target文件夾下,如圖

 

 如圖打開terminal,屏幕下方

打開terminal之后,因為jar包在target目錄下,而當前目錄為項目目錄,所以先cd到target目錄下,然后輸入如下命令:

小技巧:輸入命令的時候為了防止輸錯文件名,可以輸入文件名的前幾個字母,然后使用tab鍵進行自動補全

java -jar EurekaServerDemo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1

輸入完成此命令后,peer1配置文件的項目啟動,如圖

 

接下來我們啟動第二個項目,這里需要另開一個terminal,cd到target目錄

注意:我們這里用的是同一個項目,讀者可以使用兩個項目進行測試,需要特別注意的是端口不要沖突了

 

java -jar EurekaServerDemo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

 

等待項目啟動完成,查看有無報錯。

測試

瀏覽器輸入:localhost:1112進行查看,也可以輸入localhost:1111進行查看

 

結語

在設置了多節點的注冊中心后,實現了高可用,但是此時我們的微服務應用僅僅是注冊到這一個服務之中,所以,我們需要將新節點的注冊服務路徑同樣配到微服務應用中。

多節點間使用","分開,如圖

 

這樣微服務提供者從其中一個地方斷開之后,因為在其他節點有注冊,所以還可以提供服務,如果不想使用主機名進行訪問注冊中心,也可以使用ip,但是需要先添加一條配置,該值默認false

eureka.instance.prefer-ip-address=true

 

 本文為作者實際操作記錄,如需轉載請注明出處


免責聲明!

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



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