SpringCloud Nacos集群搭建過程詳解
本文詳細(xì)介紹了如何在SpringCloud環(huán)境中搭建Nacos集群,為讀者提供了一份清晰而詳盡的指南。通過逐步演示每個(gè)關(guān)鍵步驟,包括安裝、配置以及Nginx的負(fù)載均衡設(shè)置,讀者能夠輕松理解并操作整個(gè)搭建過程。
一、Nacos集群示意圖
Nacos(Naming and Configuration Service)是一個(gè)用于服務(wù)發(fā)現(xiàn)、動(dòng)態(tài)配置管理以及可視化服務(wù)管理的開源平臺(tái)。Nacos支持構(gòu)建彈性的、動(dòng)態(tài)的、易于維護(hù)的微服務(wù)架構(gòu),并為大規(guī)模微服務(wù)體系的管理提供了完整的解決方案。在Nacos的集群視圖中,Nacos可以通過橫向擴(kuò)展的方式構(gòu)建多個(gè)節(jié)點(diǎn),形成一個(gè)高可用的集群,以確保系統(tǒng)的穩(wěn)定性和可靠性。
Nacos集群特點(diǎn):
特點(diǎn) | 特點(diǎn)詳述 |
節(jié)點(diǎn)同步 | 集群中的各個(gè)節(jié)點(diǎn)能夠相互同步數(shù)據(jù),確保配置信息和服務(wù)實(shí)例的一致性。 |
負(fù)載均衡 | Nacos集群可以通過負(fù)載均衡機(jī)制,將服務(wù)請(qǐng)求合理分發(fā)到各個(gè)節(jié)點(diǎn),提高系統(tǒng)的整體性能和吞吐量。 |
高可用性 | Nacos集群通過多節(jié)點(diǎn)的部署,實(shí)現(xiàn)高可用性,即使某個(gè)節(jié)點(diǎn)發(fā)生故障,集群仍能保持正常運(yùn)行。 |
水平擴(kuò)展 | 集群中的節(jié)點(diǎn)可以隨著需求的增加而動(dòng)態(tài)擴(kuò)展,實(shí)現(xiàn)系統(tǒng)的橫向擴(kuò)展,以適應(yīng)不斷增長的服務(wù)規(guī)模。 |
故障轉(zhuǎn)移 | 集群中的節(jié)點(diǎn)能夠感知其他節(jié)點(diǎn)的狀態(tài),當(dāng)某個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),其他節(jié)點(diǎn)可以接管其工作,確保系統(tǒng)的連續(xù)性。 |
通過Nacos的集群視圖,可以更好地管理和維護(hù)微服務(wù)架構(gòu),提供了一個(gè)穩(wěn)定、高效、可靠的服務(wù)治理平臺(tái)。
二、Nacos集群搭建
1、安裝Nacos
首先,我們需要從 Nacos 的官方網(wǎng)站下載發(fā)布版本。下載地址:Releases · alibaba/nacos · GitHub
選擇合適的版本并下載,解壓縮得到 Nacos 的安裝包。
在解壓后的 Nacos 目錄中,找到 bin 文件夾。
用寫字板編輯 startup.cmd,將 set MODE= "cluster" 修改為:
set MODE= "standalone"
這將在啟動(dòng) Nacos Server 時(shí),默認(rèn)使用 standalone 模式運(yùn)行。
修改完成后,切換 cmd 到 bin 目錄下啟動(dòng) Nacos Server:
C:\Users\Damon.Liu>d: D:\>cd D:\Tools\Nacos\bin D:\Tools\Nacos\bin>startup.cmd -m standalone
這里提醒我需要配一個(gè) java8以上 的 JAVA_HOME 環(huán)境變量。
簡單配一下:
再次嘗試啟動(dòng) Nacos,這次成功了!
2、復(fù)制客戶端
復(fù)制兩份Nacos的客戶端,用端口號(hào)命名做區(qū)分。
注意端口號(hào)需要最少間隔一位,原因是 Nacos 2.0 之后,啟動(dòng) Nacos 時(shí)會(huì)占用 +1000/1001 兩個(gè)端口,如果相鄰,會(huì)導(dǎo)致啟動(dòng)了一個(gè) Nacos 之后,啟動(dòng)不了相同端口的另一個(gè) Nacos。
官方文檔說明如下:
所以,我們命名為 Nacos_8844、Nacos_8846,間隔兩位,同時(shí)和默認(rèn)的 8848 端口的 Nacos 區(qū)分開來,方便我們辨認(rèn)。
下面,對(duì)三個(gè)客戶端分別進(jìn)行修改。
3、創(chuàng)建Nacos數(shù)據(jù)庫
MySQL 創(chuàng)建名為 Nacos 的數(shù)據(jù)庫。
將 conf 文件夾下的 mysql-schema.sql 導(dǎo)入到這個(gè)庫里。
4、修改每個(gè)客戶端application.properties
① 修改端口號(hào)
首先,修改三個(gè)客戶端為不同的端口號(hào)。
端口在 conf 目錄下的 application.properties 下修改:
② 修改數(shù)據(jù)庫連接信息
放開數(shù)據(jù)庫的三處注釋。
這里有個(gè)數(shù)據(jù)庫連接數(shù),我們就一個(gè)數(shù)據(jù)庫所以填1;
下面的 jdbc 連接信息,改為我們數(shù)據(jù)庫的賬號(hào)密碼,連接的就是我們剛剛創(chuàng)建的 Nacos 數(shù)據(jù)庫。
5、修改每個(gè)客戶端集群配置
再對(duì)每個(gè)客戶端 conf 目錄下的 cluster.conf.example 文件復(fù)制一份,改名為 cluster.conf。
修改復(fù)制出來的 cluster.conf 文件,把三個(gè) nacos 服務(wù)端地址都添加到里面:
192.168.0.107:8844
192.168.0.107:8846
192.168.0.107:8848
?啟動(dòng)三個(gè)nacos服務(wù)端,如果之前是單機(jī)模式運(yùn)行的,修改過啟動(dòng)器的代碼,則需要改回來。
比如我的 startup.cmd 里之前指定了默認(rèn)啟動(dòng)方式,這里需要修改這一行為:
set MODE= "cluster"
6、逐一啟動(dòng)Nacos服務(wù)
修改之后,我們逐一雙擊 Stratup.cmd 啟動(dòng) Nacos:
?啟動(dòng)成功之后我們可以訪問已經(jīng)啟動(dòng)的 Nacos 控制臺(tái)查看:localhost:8848/nacos
?三、Nginx對(duì)Nacos反向代理
1、下載解壓Nginx
訪問 Nginx官網(wǎng)(nginx.org/en/download.html) 下載最新的穩(wěn)定版本。
?2、修改默認(rèn)端口
解壓Nginx壓縮包好后,我們來修改Nginx的默認(rèn)端口。Nginx的配置文件是conf目錄下的nginx.conf,默認(rèn)配置的nginx監(jiān)聽的端口為80,根據(jù)端口占用情況,我們可以修改位其他端口,這里我修改位40。
修改之前我們可以輸入cmd指令,查詢端口占用狀態(tài):
#查看80端口是否被占用的命令是: netstat -ano | findstr 0.0.0.0:80 netstat -ano | findstr "80"
如果被占用了,我們可以修改 Nginx\conf\nginx.conf 文件里的監(jiān)聽端口號(hào),來指定默認(rèn)端口。
比如,我這里換為40端口。
但建議大家還是給 Nginx 80端口,默認(rèn)端口最終我還是用的默認(rèn)80端口。
3、啟動(dòng)Nginx
接下來,我們啟動(dòng)Nginx,驗(yàn)證服務(wù)是否成功開啟.。雙擊根目錄下的nginx.exe,雙擊后一個(gè)黑色的彈窗一閃而過就消失了,啟動(dòng)就完成了。
然后我們?cè)L問80端口,看到Nginx服務(wù)已經(jīng)成功運(yùn)行了。
4、配置對(duì)Nacos的反向代理
我們這里要配置 Nginx\conf\nginx.conf 文件。
listen:監(jiān)聽的端口;
(監(jiān)聽端口需要避免占用,尤其是 win-server,需要關(guān)閉IIS在80端口的默認(rèn)項(xiàng)目)
server_name:監(jiān)聽的域名(填寫 localhost 即為公網(wǎng)IP);
location 里 proxy_pass:設(shè)置轉(zhuǎn)發(fā)的目標(biāo)地址;
upstream nacos-cluster { server 127.0.0.1:8844; server 127.0.0.1:8846; server 127.0.0.1:8848; } server { listen 80; server_name localhost; location /nacos { proxy_pass http://nacos-cluster; } }
這里給出的例子的意思是:當(dāng)收到 /naocs 請(qǐng)求時(shí),自動(dòng)轉(zhuǎn)發(fā)請(qǐng)求到 Nacos 集群,通過負(fù)載均衡指定具體哪個(gè)端口的 Nacos 響應(yīng)。
修改完配置后,我們要停止之前的 Nginx 服務(wù),重啟后配置才能刷新。
5、瀏覽器訪問測試
訪問 localhost/nacos,如果顯示是 Nacos 的控制臺(tái)頁面,則說明配置成功。
四、Nacos控制臺(tái)新建配置
1、Nacos控制臺(tái)新建配置
我們?cè)L問 Nacos 的控制臺(tái)頁面,因?yàn)槲覀儎倓傆?Nginx 轉(zhuǎn)達(dá)到集群,所以 Nacos 控制臺(tái)地址變?yōu)?nbsp;localhost/nacos,我們點(diǎn)擊新建配置。
配置起名為:test-service.yaml,類型選為 YAML 類型,配置內(nèi)容我們寫一個(gè)時(shí)間格式:
pattern: dateformat: yyyy-MM-dd HH:mm:ss
2、查看配置是否存入數(shù)據(jù)庫
我們打開我們剛剛創(chuàng)建的 Nacos 數(shù)據(jù)庫,查看 config-info 表:
可以看到配置已經(jīng)寫入表內(nèi)了。
至此,我們的Nacos集群搭建成功!
五、Nacos集群的應(yīng)用場景
Nacos集群在微服務(wù)架構(gòu)中具有廣泛的應(yīng)用場景,其中一些關(guān)鍵的應(yīng)用場景包括:
場景 | 場景下功能描述 |
服務(wù)注冊(cè) 服務(wù)發(fā)現(xiàn) | Nacos集群作為注冊(cè)中心,可以用于服務(wù)的注冊(cè)與發(fā)現(xiàn)。微服務(wù)在啟動(dòng)時(shí)將自身注冊(cè)到Nacos集群,其他微服務(wù)通過Nacos發(fā)現(xiàn)和調(diào)用這些服務(wù)。 |
動(dòng)態(tài)配置管理 | Nacos提供了分布式配置管理功能,允許在運(yùn)行時(shí)動(dòng)態(tài)調(diào)整應(yīng)用程序的配置。Nacos集群可以用于集中式管理配置信息,實(shí)現(xiàn)配置的動(dòng)態(tài)更新和熱加載。 |
健康檢查 故障恢復(fù) | Nacos集群通過定期的健康檢查,能夠檢測服務(wù)的狀態(tài)并及時(shí)發(fā)現(xiàn)故障節(jié)點(diǎn)。當(dāng)某個(gè)微服務(wù)發(fā)生故障時(shí),Nacos能夠自動(dòng)剔除不可用的節(jié)點(diǎn),確保系統(tǒng)的高可用性。 |
動(dòng)態(tài)路由 | 基于Nacos集群,可以實(shí)現(xiàn)動(dòng)態(tài)路由策略,根據(jù)服務(wù)的狀態(tài)和負(fù)載情況,動(dòng)態(tài)調(diào)整請(qǐng)求的路由,實(shí)現(xiàn)流量的均衡和優(yōu)化。 |
分布式鎖 與協(xié)調(diào) | Nacos提供了分布式鎖和協(xié)調(diào)的功能,可以應(yīng)用于分布式系統(tǒng)中的同步、協(xié)作和資源競爭場景,確保多個(gè)微服務(wù)之間的有序執(zhí)行。 |
事件驅(qū)動(dòng)架構(gòu) | Nacos支持事件監(jiān)聽機(jī)制,可以通過訂閱Nacos集群中的事件,實(shí)現(xiàn)微服務(wù)架構(gòu)中的事件驅(qū)動(dòng),提高系統(tǒng)的解耦性和可維護(hù)性。 |
綜上所述,Nacos集群不僅僅是服務(wù)注冊(cè)中心,還在微服務(wù)架構(gòu)中發(fā)揮著關(guān)鍵的角色,支持多種場景下的服務(wù)治理和協(xié)調(diào)。
到此這篇關(guān)于SpringCloud Nacos集群搭建的文章就介紹到這了,更多相關(guān)SpringCloud Nacos集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中如何將list轉(zhuǎn)為樹形結(jié)構(gòu)
這篇文章主要介紹了Java中如何將list轉(zhuǎn)為樹形結(jié)構(gòu),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09java定時(shí)任務(wù)框架elasticjob詳解
這篇文章主要介紹了java定時(shí)任務(wù)框架elasticjob詳解,Elastic-Job是ddframe中dd-job的作業(yè)模塊中分離出來的分布式彈性作業(yè)框架。該項(xiàng)目基于成熟的開源產(chǎn)品Quartz和Zookeeper及其客戶端Curator進(jìn)行二次開發(fā)。,需要的朋友可以參考下2019-06-06SpringMVC使用MultipartFile實(shí)現(xiàn)文件上傳
這篇文章主要為大家詳細(xì)介紹了SpringMVC使用MultipartFile實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04java面試LruCache?和?LinkedHashMap及算法實(shí)現(xiàn)
這篇文章主要為大家介紹了java面試LruCache?和?LinkedHashMap及算法實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02