?? 《SpringCloud入門實戰(zhàn)系列》解鎖SpringCloud主流組件入門應用及關(guān)鍵特性。帶你了解SpringCloud主流組件,是如何一戰(zhàn)解決微服務諸多難題的街夭。項目demo:源碼地址
?? 作者:一只IT攻城獅捂蕴。關(guān)注我领斥,不迷路筋帖。
?? 再小的收獲x365天都會成就不一樣的自己趟薄,一起學習酗电,一起進步魄藕。
??Nacos簡介、安裝撵术、運行參看上一節(jié): SpringCloud入門實戰(zhàn)-Nacos簡介背率、安裝、運行詳解
通過之前的系列文章嫩与,我們已經(jīng)了解了Nacos下載寝姿、安裝、基本概念划滋、Nacos做注冊中心饵筑、做配置中心的集成和使用,本篇文章我們來了解一下Nacos的集群和持久化配置处坪。
一根资、前言
如果nacos的服務停了,再打開稻薇,它的配置數(shù)據(jù)都還在嫂冻,所以Nacos具有持久化能力。那它是如何做到持久化的呢塞椎?
從Nacos官網(wǎng)我們知道桨仿,在單機模式時Nacos使用的是內(nèi)嵌數(shù)據(jù)庫 Derby(Apache Derby)實現(xiàn)數(shù)據(jù)存儲(就是自帶一個微數(shù)據(jù)庫)。0.7版本后增加了mysql集中式存儲數(shù)據(jù)案狠。
為什么要集中式存儲服傍?
實際生產(chǎn)時钱雷,我們不應只配置一個單點,為了保證高可用吹零,需要做到Nacos集群罩抗,這樣即便一個節(jié)點宕機了,其他節(jié)點也可持續(xù)提供服務灿椅;而Nacos持久化是為了防止配置文件數(shù)據(jù)的丟失以及保證多個節(jié)點能共用一份配置文件套蒂,解決數(shù)據(jù)存儲的一致性問題,就需要集中式存儲茫蛹。這就是持久化的cluster模式操刀,這就需要用到我們配置的外置數(shù)據(jù)源,目前Nacos僅支持Mysql數(shù)據(jù)庫婴洼,且版本要求:5.6.5+
二骨坑、Nacos持久化
本機環(huán)境:
- macOS 版本 11.6.8
- MySQL 8.0.30
- JDK8
- Nacos 2.3.0
1、初始化數(shù)據(jù)庫
Nacos的數(shù)據(jù)庫腳本文件在我們下載Nacos-server時的壓縮包中就有
進入nacos-server-2.3.0\nacos\conf目錄柬采,找到帶mysql的初始化文件:
本地新建一個庫欢唾,我這里命名為nacos ,該sql文件導入自己的mysql粉捻,然后執(zhí)行初始化腳本:
2礁遣、修改配置文件
進入nacos-server-2.3.0\nacos\conf目錄,打開application.properties杀迹,在文件底部添加數(shù)據(jù)源配置(庫名亡脸、密碼改成自己的):
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=12345678
3押搪、備份原配置
登錄Nacos树酪,導出原來的配置文件。
修改數(shù)據(jù)庫配置之后大州,原配置自然就不在了续语,所以提前做好備份,后面可以直接導入厦画。
每個命名空間都要單獨導出:
4疮茄、重啟Nacos
重新啟動Nacos(注意這里仍然單機模式啟動,因為沒有進行集群配置根暑,默認集群啟動會報錯)
moon@moondeiMac bin % sh shutdown.sh
moon@moondeiMac bin % sh startup.sh -m standalone
重新登錄后發(fā)現(xiàn)配置全沒了力试。這時候再次新建的配置會發(fā)現(xiàn)存入我們的數(shù)據(jù)庫了。
也可導入之前的配置排嫌,按照原來的命名空間畸裳,重新創(chuàng)建。然后淳地,在對應的命名空間下導入原配置文件即可怖糊。
Tip:要搭建nacos集群的話帅容,必須要先配置其持久化
三、本地模擬Nacos集群配置
1伍伤、cluster.conf 文件配置
把 conf文件夾下 cluster.conf.example 復制一份 命名為 cluster.conf 并徘,每行配置成ip:port(配置3個或3個以上節(jié)點)
注意??:IP 盡量不使用locaolhost和 127.0.0.1 ,使用 通過ipconfig 查詢到的本地ip地址
注意??:從官網(wǎng)而知扰魂,Nacos2.0版本相比1.X新增了gRPC的通信方式麦乞,因此需要增加幾個端口。新增端口是在配置的主端口(server.port)基礎上劝评,進行一定偏移量自動生成路幸。所以端口時設置時注意避開,以免后面端口沖突付翁。
2简肴、application.properties文件修改
修改application.properties 文件,將上次單機版數(shù)據(jù)庫配置去掉百侧,放開集群配置:
### Default web server port:
server.port=8848
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=數(shù)據(jù)庫連接的用戶名
db.password.0=密碼
spring.datasource.platform=mysql
##db.num=1
##db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
##db.user=root
##db.password=12345678
啟動nacos 服務砰识,訪問http://localhost:8848/nacos/驗證是否配置成功
通過后臺日志也能看到是否配置成功:
3、模擬多個nacos server
確保了上邊的單個nacos server沒有問題佣渴,我們復制nacos 服務文件夾辫狼,修改 server.port=8848 為 cluster.conf 文件中設置的其他端口,然后分別啟動noco1辛润、nacos2服務器
成功啟動后:
4膨处、nginx 集群配置
首先查看本機是否有:brew info nginx
沒有安裝一下:brew install nginx
顯示的信息有提到:在/usr/local/etc/nginx/nginx.conf
配置文件nginx.conf配置文件中默認端口被配置為8080,從而使nginx運行時不需要加sudo砂竖。接下來打開并修改 nginx.conf 文件真椿,添加集群配置:
在nginx.conf配置文件中的http節(jié)點下,添加upstream節(jié)點乎澄,并在server節(jié)點中的location節(jié)點添加proxy_pass突硝,并配置為http:// + upstream節(jié)點名后啟動nginx
upstream nacos-server {
server localhost:8848;
server localhost:8858;
server localhost:8868;
}
#添加代理轉(zhuǎn)發(fā)
server {
listen 8080;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://nacos-server;
}
brew services start nginx(啟動nginx)
brew services restart nginx(重啟命令)
5、驗證服務集群
訪問http://localhost:8080/nacos/index.html驗證服務集群
好了置济,Nacos的持久化及Nacos集群配置就介紹到這里了解恰。