Springcloud eureka搭建高可用集群過(guò)程圖解
一 前言
eureka作為注冊(cè)中心,其充當(dāng)著服務(wù)注冊(cè)與發(fā)現(xiàn)功能,加載負(fù)載均衡;若在項(xiàng)目運(yùn)行中eureka掛了,那么整個(gè)服務(wù)整體都會(huì)暫停,所以為服務(wù)運(yùn)行的安全性,有必要搭建eureka集群;當(dāng)其中一個(gè)eureka節(jié)點(diǎn)掛了,我們還有另外的節(jié)點(diǎn)可用;本篇文章的核心是如何在idea上運(yùn)行eureka集群,和項(xiàng)目部署;需注意的jdk版本是1.8,高于jdk1.8打包部署會(huì)出問(wèn)題,需要引入其他依賴;
二 eureka-server配置文件改造
之前的配置文件如下,這是單個(gè)eureka-server的配置,并不能滿足于我們實(shí)際項(xiàng)目需求,我們要將其改造成高可用的集群節(jié)點(diǎn)模式;
server: port: 10086 eureka: instance: hostname: localhost client: # 作為server,表示禁止向自己注冊(cè) register-with-eureka: false fetch-registry: false service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
改造配置文件如下,之前的文章中我們了解了eureka的peer to peer 交流機(jī)制,我們現(xiàn)在就根據(jù)這個(gè)原理搭建高可用的eureka集群,在配置文件中可以看見(jiàn)知識(shí)追尋者配置了3個(gè)peer(peer1,peer2,peer3); 它們的端口分別是10081,10082,10083; peer1,分別向 peer2,peer3注冊(cè),peer2則向 peer1,peer3注冊(cè),peer3同理;這樣就構(gòu)成了eureka簡(jiǎn)單的3個(gè)節(jié)點(diǎn)集群;
spring: application: name: eureka-server-cluster --- spring: profiles: peer1 server: port: 10081 eureka: instance: hostname: peer1 client: service-url: # 向peer2 peer3節(jié)點(diǎn)注冊(cè)自己 defaultZone: http://peer2:10082/eureka,http://peer3:10083/eureka --- spring: profiles: peer2 server: port: 10082 eureka: instance: hostname: peer2 client: service-url: # 向peer1 pee3節(jié)點(diǎn)注冊(cè)自己 defaultZone: http://peer1:10081/eureka,http://peer3:10083/eureka --- spring: profiles: peer3 server: port: 10083 eureka: instance: hostname: peer3 client: service-url: # 向peer1 peer2節(jié)點(diǎn)注冊(cè)自己 defaultZone: http://peer1:10081/eureka,http://peer2:10082/eureka
三 eureka-client配置文件改造
在之前的基礎(chǔ)上多添加了注冊(cè)server節(jié)點(diǎn) peer2,peer3
server: port: 8090 spring: application: name: eureka-client # 應(yīng)用名稱 eureka: client: service-url: # 服務(wù)注冊(cè)地址 defaultZone: http://peer1:10081/eureka/,http://peer2:10082/eureka/,http://peer3:10083/eureka/
修改host文件目的是peer對(duì)應(yīng)ip地址,實(shí)際項(xiàng)目中 每個(gè)peer節(jié)點(diǎn)都是一個(gè)ip地址;
192.168.0.101 peer1 192.168.0.101 peer2 192.168.0.101 peer3
五 復(fù)制啟動(dòng)配置
復(fù)制配置如下:點(diǎn)擊 cpoy configuration 選項(xiàng);
進(jìn)入編輯狀態(tài),修改 name 為 EurekaServer(1), 激活的配置文件選項(xiàng) 填 peer1;以此類推,我們復(fù)制三個(gè)實(shí)例; 分別是 EurekaServer(1),EurekaServer(2),EurekaServer(3);分別激活配置 peer2,peer2,peer3;
六 啟動(dòng) eureka-server
分別啟動(dòng)三個(gè)配置實(shí)例,圖如下;
瀏覽器輸入 http://localhost:10083/ 或者 http://localhost:10082/ 或者 http://localhost:10081/;結(jié)果如下,知識(shí)追尋者在瀏覽器輸入的 peer3地址,那么 對(duì)應(yīng)的復(fù)制的Node 是 peer2,peer1;server有三個(gè);
七 啟動(dòng) eureka-client
啟動(dòng)eureka client 圖如下
刷新瀏覽器界面,可以看見(jiàn) client 已經(jīng)注冊(cè)到 server;
八 打包部署
進(jìn)入 eureka-server 工程目錄 執(zhí)行 打包命令 mvn clean package
打開(kāi)三個(gè)命令行分別執(zhí)行對(duì)應(yīng)的命令,一個(gè)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 如下
瀏覽器頁(yè)面如下:
九 多 profile運(yùn)行注意事項(xiàng)
如下 配置文件 不寫在src/main/resources一個(gè) application 中,而是分為 application-peer1.yml, application-peer2.yml, application-peer3.yml ; 在 idea 的虛擬機(jī)參數(shù)(VM Options)配置 是
-Dspring.profiles.active=peer1 , -Dspring.profiles.active=peer2 ,-Dspring.profiles.active=peer3;部署方式相同;也可以通過(guò) mvn spring-boot:run -Dspring.profiles.active=peer1 的形式運(yùn)行;
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaMail實(shí)現(xiàn)郵件發(fā)送的方法
這篇文章主要介紹了JavaMail實(shí)現(xiàn)郵件發(fā)送的方法,實(shí)例分析了java實(shí)現(xiàn)郵件發(fā)送的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04Springboot下RedisTemplate的兩種序列化方式實(shí)例詳解
這篇文章主要介紹了Springboot下RedisTemplate的兩種序列化方式,通過(guò)定義一個(gè)配置類,自定義RedisTemplate的序列化方式,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09基于Calendar獲取當(dāng)前時(shí)間的性能比較
這篇文章主要介紹了Calendar獲取當(dāng)前時(shí)間的性能比較,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06springboot中@ConfigurationProperties無(wú)效果的解決方法
本文主要介紹了springboot中@ConfigurationProperties無(wú)效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06Java中LinkedList的模擬實(shí)現(xiàn)
本文主要介紹了Java中LinkedList的模擬實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Java中JDK14的新特性之JFR,JMC和JFR事件流(推薦)
JFR是一個(gè)基于事件的低開(kāi)銷的分析引擎,具有高性能的后端,可以以二進(jìn)制格式編寫事件,而JMC是一個(gè)GUI工具,用于檢查JFR創(chuàng)建的數(shù)據(jù)文件。本文給大家介紹Java中JDK14的新特性之JFR,JMC和JFR事件流的相關(guān)知識(shí),感興趣的朋友一起看看吧2020-05-05