本次集群部署使用的組件:
nacos-server 2.2.1
nginx 1.18.0
一役衡、集群請求流程
一般使用nacos集群時(shí)姻灶,會(huì)在前端與后端之間采用nginx中間層作一個(gè)負(fù)載均衡扳缕,然后根據(jù)nacos集群中注冊的服務(wù)瘾蛋,具體調(diào)用對應(yīng)服務(wù)砌烁。
二篱蝇、nginx安裝
# 更新索引
sudo apt update
# 安裝nginx
sudo apt install nginx
# 查看nginx版本
nginx -v
# 啟動(dòng)nginx
sudo systemctl start nginx
# 停止nginx
sudo systemctl stop nginx
# 重啟nginx
sudo systemctl restart nginx
# 安裝curl命令
sudo apt install curl
# 使用curl命令訪問服務(wù)
curl http://127.0.0.1
三、nacos 數(shù)據(jù)源切換
nacos默認(rèn)注冊信息的數(shù)據(jù)是存在內(nèi)存中的岭妖,為了保證集群中不同nacos實(shí)例的數(shù)據(jù)一致性临庇,建議是使用mysql數(shù)據(jù)庫作為注冊信息數(shù)據(jù)源。
進(jìn)入nacos配置文件目錄conf/application.properties
#使用外置mysql數(shù)據(jù)源
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconn
ect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root
四区转、nacos服務(wù)集群配置
- 重命名配置文件
cluster.conf.example
為cluster.conf
mv cluster.conf.example cluster.conf
- 在
cluster.conf
文件中添加集群節(jié)點(diǎn)信息(這里因?yàn)槭菃螜C(jī)模擬集群部署苔巨,所以需要修改端口,同時(shí)新版本的Nacos會(huì)占用四個(gè)連續(xù)的端口用于RPC調(diào)用废离,所以端口間隔最少為4)
- 修改
bin/startup.sh
文件關(guān)于集群JVM參數(shù)侄泽,因?yàn)樘摂M機(jī)分配的內(nèi)存比較小,所以為了保證正常集群部署蜻韭,所以改小一下配置參數(shù)悼尾,內(nèi)存足夠的可以忽略這一步
-Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m
- 將nacos復(fù)制為三個(gè)服務(wù)
cp -r nacos nacos8848 nacos8858 nacos8868
- 分別修改對應(yīng)
conf/application.properties
文件中的服務(wù)端口
- 分別啟動(dòng)nacos服務(wù),觀察nacos控制臺(tái)肖方,表明nacos集群部署成功
五闺魏、nginx配置
雖然nacos的集群部署已經(jīng)完成,但是我們的訂單服務(wù)配置文件中不可以直接配置其中一個(gè)nacos服務(wù)俯画,這樣就回到了單機(jī)模式了析桥。所以我們需要通過一個(gè)nginx服務(wù)將訂單服務(wù)的請求分發(fā)到不同nacos節(jié)點(diǎn)上。
- 在
/etc/nginx/nginx.conf
文件中添加Nacos集群服務(wù)代理
upstream nacoscluster {
server 127.0.0.1:8848;
server 127.0.0.1:8858;
server 127.0.0.1:8868;
}
server {
listen 8847;
server_name localhost;
location /nacos/{
proxy_pass http://nacoscluster/nacos/;
}
}
由于nacos需要占用端口供gRPC調(diào)用使用艰垂,端口是基于服務(wù)端口+1000泡仗,所以還需在ngnix中將gRPC端口暴露出來
# nacos的grpc協(xié)議配置
stream {
# 負(fù)載均衡配置(TCP長連接配置)
upstream nacoscluster-tcp{
server 127.0.0.1:9848;
server 127.0.0.1:9858;
server 127.0.0.1:9868;
}
server {
listen 9847;
proxy_pass nacoscluster-tcp;
}
}
- 啟動(dòng)nginx服務(wù)
# 啟動(dòng)nginx服務(wù)
sudo systemctl start nginx
# 停止nginx服務(wù)
sudo systemctl stop nginx
# 重啟nginx服務(wù)
sudo systemctl restart nginx
- 請求nginx代理的nacos服務(wù)地址,代理成功
六猜憎、微服務(wù)配置
- 訂單以及庫存服務(wù)
application.yml
文件中server-addr
修改為nginx服務(wù)地址
- 通過nginx代理地址娩怎,正常訪問Nacos控制臺(tái),同時(shí)訂單和庫存服務(wù)均正確注冊
- 請求訂單服務(wù)
[http://localhost:8020/order/add](http://localhost:8020/order/add)
胰柑,調(diào)用庫存服務(wù)正常