一 前言
eureka作為注冊中心,其充當着服務注冊與發現功能,加載負載均衡;若在項目運行中eureka掛了,那么整個服務整體都會暫停,所以為服務運行的安全性,有必要搭建eureka集群;當其中一個eureka節點掛了,我們還有另外的節點可用;本篇文章的核心是如何在idea上運行eureka集群,和項目部署;需注意的jdk版本是1.8,高於jdk1.8打包部署會出問題,需要引入其他依賴;
二 eureka-server配置文件改造
之前的配置文件如下,這是單個eureka-server的配置,並不能滿足於我們實際項目需求,我們要將其改造成高可用的集群節點模式;
server:
port: 10086
eureka:
instance:
hostname: localhost
client:
# 作為server,表示禁止向自己注冊
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
改造配置文件如下,之前的文章中我們了解了eureka的peer to peer 交流機制,我們現在就根據這個原理搭建高可用的eureka集群,在配置文件中可以看見知識追尋者配置了3個peer(peer1,peer2,peer3); 它們的端口分別是10081,10082,10083; peer1,分別向 peer2,peer3注冊,peer2則向 peer1,peer3注冊,peer3同理;這樣就構成了eureka簡單的3個節點集群;
spring:
application:
name: eureka-server-cluster
---
spring:
profiles: peer1
server:
port: 10081
eureka:
instance:
hostname: peer1
client:
service-url:
# 向peer2 peer3節點注冊自己
defaultZone: http://peer2:10082/eureka,http://peer3:10083/eureka
---
spring:
profiles: peer2
server:
port: 10082
eureka:
instance:
hostname: peer2
client:
service-url:
# 向peer1 pee3節點注冊自己
defaultZone: http://peer1:10081/eureka,http://peer3:10083/eureka
---
spring:
profiles: peer3
server:
port: 10083
eureka:
instance:
hostname: peer3
client:
service-url:
# 向peer1 peer2節點注冊自己
defaultZone: http://peer1:10081/eureka,http://peer2:10082/eureka
三 eureka-client配置文件改造
在之前的基礎上多添加了注冊server節點 peer2,peer3
server:
port: 8090
spring:
application:
name: eureka-client # 應用名稱
eureka:
client:
service-url:
# 服務注冊地址
defaultZone: http://peer1:10081/eureka/,http://peer2:10082/eureka/,http://peer3:10083/eureka/
四 host文件修改
修改host文件目的是peer對應ip地址,實際項目中 每個peer節點都是一個ip地址;
192.168.0.101 peer1
192.168.0.101 peer2
192.168.0.101 peer3
五 復制啟動配置
復制配置如下:點擊 cpoy configuration 選項;
進入編輯狀態,修改 name 為 EurekaServer(1), 激活的配置文件選項 填 peer1;以此類推,我們復制三個實例; 分別是 EurekaServer(1),EurekaServer(2),EurekaServer(3);分別激活配置 peer2,peer2,peer3;
六 啟動 eureka-server
分別啟動三個配置實例,圖如下;
瀏覽器輸入 http://localhost:10083/ 或者 http://localhost:10082/ 或者 http://localhost:10081/;結果如下,知識追尋者在瀏覽器輸入的 peer3地址,那么 對應的復制的Node 是 peer2,peer1;server有三個;
七 啟動 eureka-client
啟動eureka client 圖如下
刷新瀏覽器界面,可以看見 client 已經注冊到 server;
八 打包部署
進入 eureka-server 工程目錄 執行 打包命令 mvn clean package
打開三個命令行分別執行對應的命令,一個cmd一條;
java -jar eureka-server-1.0.0-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-1.0.0-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar eureka-server-1.0.0-SNAPSHOT.jar --spring.profiles.active=peer3
pee3 如下
瀏覽器頁面如下:
九 多 profile運行注意事項
如下 配置文件 不寫在src/main/resources一個 application 中,而是分為 application-peer1.yml, application-peer2.yml, application-peer3.yml ; 在 idea 的虛擬機參數(VM Options)配置 是
-Dspring.profiles.active=peer1 , -Dspring.profiles.active=peer2 ,-Dspring.profiles.active=peer3;部署方式相同;也可以通過 mvn spring-boot:run -Dspring.profiles.active=peer1 的形式運行;