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