(三)Eureka Server雙節點註冊中心集羣配置

1.Eureka Server高可用集羣

在生產環境中,通常會部署一個Eureka Server集羣,提升整個系統的高可用性
1. Eureka Server可以通過 運行多個實例 並相互註冊的方式實現高可用部署
2.Eureka Server實例會彼此增量同步信息,確保所有節點數據的一致性
3.節點之間相互註冊時Eureka Server的默認行爲

2.編寫高可用Eureka Server(雙節點)

2.1 配置操作系統的hosts

Linux、Mac OS系統的文件路徑爲 /etc/hosts
Windows系統的文件路徑爲 C:\Windows\System32\drivers\etc\hosts
以Windows爲例 直接在hosts文件中添加以下內容即可
 

2.2 創建/修改項目

創建項目microservice-discovery-eureka-ha(從之前microservice-discovery-eureka項目複製並修改其pom.xml中的ArtifactId爲microservice-discovery-eureka-ha)

我是直接修改了之前單節點的Eureka Server,將其配置文件application.xml修改如下:

spring:
application:
name: microservice-discovery-eureka 
---
spring:
profiles: peer1 # 指定profile=peer1
server:
port: 8761
eureka:
instance:
hostname: peer1 # 指定當profile=peer1時,主機名是peer1
client:
serviceUrl:
defaultZone: http://peer2:8762/eureka/ # 將自己註冊到peer2這個Eureka上面去
---
spring:
profiles: peer2
server:
port: 8762
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:8761/eureka/
 配置文件定義了2個Profile
 --- 將文件分爲三段
 第2、3段分別爲profiles指定了一個值,該值表示它所在段的內容應用在哪個Profile裏;
第1段沒有profiles值,表示該段內容對所有Profile生效
當以peer1這個Profile啓動應用時,配置該Eureka Server的主機名爲peer1,並將其註冊到http://peer2:8762/eureka/
當以peer2這個Profile啓動應用時,配置該Eureka Server的主機名爲peer2,並將其註冊到http://peer1:8761/eureka/

2.3. 測試

啓動Eureka Server的方式:

方法1 打包項目,命令行中啓動:

1.打包項目,爲jar包,在IDEA的Maven裏面找到package雙擊即可生成 jar包。

2.在兩個cmd中分別啓動2個Eureka Server節點(注意jar包的路徑):

通過--spring.profiles.active指定 使用哪個Profile啓動

 

3.訪問http://localhost:8761http://localhost:8762會看到2個節點已經分別互相註冊啦~
 
 
 

方法2 直接在IDEA啓動:

1.通過修改IDEA的運行配置:

2.分別運行peer1和peer2:

3.瀏覽器訪問即可啦~~~

2.4更精簡的配置方式

修改配置文件application.yml,內容如下:

spring:
application:
name: microservice-discovery-eureka 
eureka:
client:
serviceUrl:
defaultZone: http://peer2:8762/eureka/, http://peer1:8761/eureka/
---
spring:
profiles: peer1
server:
port: 8761
eureka:
instance:
hostname: peer1
---
spring:
profiles: peer2
server:
port: 8762
eureka:
instance:
hostname: peer2

 

3.將微服務註冊到Eureka Server集羣 

 

以microservice-provider-user爲例,只需要修改eureka.client.serviceUrl.defaultZone,配置多個地址:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/, http://localhost:8762/eureka/
提示:
即使只配置Eureka Server集羣一個節點的地址,因爲集羣節點間會相互同步,也可以正常註冊到集羣
建議配置多個節點地址,避免極端情況出現
 
 
訪問http://localhost:8761http://localhost:8762會看到microservice-provider-user已經註冊到兩個服務發現的節點啦~

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章