服务器Nacos集群搭建及使用总结
title: 服務(wù)器Nacos集群搭建及使用總結(jié)
date: 2022-02-07 23:46:19
tags:
- 服務(wù)器
- Nacos
categories: - 服務(wù)器
cover: https://cover.png
feature: false
1. 架構(gòu)圖
實際使用:
2. 下載
官網(wǎng)地址:home (nacos.io)
GitHub 下載地址:Releases · alibaba/nacos (github.com)
選擇對應(yīng)版本進(jìn)行下載,下載有可能會很慢
3. 單機(jī)模式
1、下載完成后上傳到服務(wù)器
2、解壓文件
tar -zxvf nacos-server-2.2.0.tar.gz
3、重命名一下文件(非必要)
mv nacos nacos-2.2.0
4、進(jìn)入 Nacos 的 conf 目錄下,在 Nacos 配置文件 application.properties 里設(shè)置端口為 3333(默認(rèn)為 8848),并且設(shè)置 MySQL 連接屬性進(jìn)行持久化配置,這里的 nacos_config 數(shù)據(jù)庫使用 Nacos 自帶的 mysql-schema.sql 數(shù)據(jù)庫腳本構(gòu)建
server.port=3333########################################################### spring.datasource.platform=mysqldb.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=xxx5、進(jìn)入 Nacos 的 bin 目錄下,直接執(zhí)行如下命令即可啟動
sh startup.sh -m standalone 或者 ./startup.sh -m standalone由于 Nacos 默認(rèn)模式為 cluster,即集群模式,需設(shè)置啟動參數(shù) -m standalone 為單機(jī)模式,也可在 application.properties 配置文件里修改默認(rèn)模式為單機(jī)模式,則可直接通過 ./startup.sh 啟動單機(jī)模式
4. 集群模式
4.1 配置 Nacos
前 4 步與單機(jī)版同
5、復(fù)制 cluster.conf.example 文件為 cluster.conf
cp cluster.conf.example cluster.conf
6、在集群配置文件 cluster.conf 里配置集群節(jié)點,IP:Port,IP 為服務(wù)器 IP 地址,端口為 Nacos 的端口,即 application.properties 配置文件里的 server.port=3333,包括其他集群節(jié)點的端口,同時在服務(wù)器防火墻中開放需要訪問的端口 3333、4444、5555
10.0.4.9:3333 10.0.4.9:4444 10.0.4.9:55557、以集群模式啟動,./startup.sh
可以看到 3333 的節(jié)點已經(jīng)啟動
8、如法炮制,再復(fù)制兩份 Nacos,在 application.properties 配置文件里分別設(shè)置端口為 4444、5555,這樣就有了三個 Nacos 文件,端口分別為 3333、4444、5555,并且在 cluster.conf 配置文件里都配置了這三個節(jié)點
9、分別啟動三個 Nacos,假如服務(wù)器內(nèi)存不夠,會出現(xiàn)只能啟動一兩個,三個服務(wù)不能全部啟動的情況,或者啟動另一個之后,之前啟動的服務(wù)關(guān)閉,可以修改 startup.sh 文件的啟動參數(shù)數(shù)值大小,改小一點
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"4.2 配置 Nginx
1、進(jìn)入 Nginx 的 conf 目錄下修改配置文件 nginx.conf
# 代理轉(zhuǎn)發(fā)地址 upstream cluster{server 124.222.xxx.90:3333;server 124.222.xxx.90:4444;server 124.222.xxx.90:5555; }server {listen 1111; # 監(jiān)聽端口server_name 124.222.xxx.90; # 訪問地址#charset koi8-r;#access_log logs/host.access.log main;location / {#root html;#index index.html index.htm;proxy_pass http://cluster;} }2、在服務(wù)器的防火墻里開放監(jiān)聽端口,即 1111
3、進(jìn)入 Nginx 的 sbin 目錄下,執(zhí)行命令啟動 Nginx
./nginx 或指定配置文件啟動:./nginx -c /usr/nginx/conf/nginx.conf假如 Nginx 已啟動,則執(zhí)行
./nginx -s reload
重新加載 Nginx 即可
4、訪問 124.222.xxx.90:1111/nacos,其實就是轉(zhuǎn)發(fā)到訪問 124.222.xxx.90:3333/nacos 或 124.222.xxx.90:4444/nacos 或 124.222.xxx.90:5555/nacos
5、查看 Nacos 的啟動情況,在集群節(jié)點里可以看到三個節(jié)點全是 UP 的狀態(tài),由于服務(wù)器內(nèi)存原因,這里只啟動了兩個,內(nèi)存不夠了
5. 微服務(wù)注冊進(jìn) Nacos
5.1 引入依賴
這里用的是 Spring Cloud,假如只使用 Spring Boot 參考官網(wǎng)的 Spring Boot 快速開始:Nacos Spring Boot 快速開始
按照對應(yīng)關(guān)系來選擇對應(yīng)的版本,這里使用的版本是 Spring Boot 2.7.7、Spring Cloud Alibaba 2021.0.4.0、Spring Cloud 2021.0.4
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>5.2 修改配置文件
spring:application:name: discovery-configcloud:nacos:discovery:server-addr: 124.222.xxx.90:33335.3 添加注解
在啟動類上添加 Spring Cloud 原生注解 @EnableDiscoveryClient 開啟服務(wù)注冊發(fā)現(xiàn)功能
@SpringBootApplication @EnableDiscoveryClient public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);} }5.4 注意
Nacos2.0 版本相比 1.X 新增了 GRPC 的通信方式,Nacos 2.0 的 GRPC 端口都是通過主端口的偏移量產(chǎn)生,GRPC 端口 = Nacos 主端口 + 1000,因此還要額外開放 主端口 + 1000 的端口,如主端口為 3333,則還需開放端口 4333,這里為客戶端 GRPC 請求服務(wù)端端口。假如服務(wù)端 GRPC 請求服務(wù)端接口,還需開放偏移量為 1001 的端口,即 4334
否則會報 com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING 異常
5.5 啟動
啟動主啟動類后,即可在 Nacos 管理頁面看到服務(wù)已經(jīng)被注冊了進(jìn)來
6. Nacos 作為配置中心
在上面注冊中心的基礎(chǔ)上
6.1 引入依賴
由于在 SpringCloud 2020.* 版本把 bootstrap 禁用了,導(dǎo)致在讀取文件的時候讀取不到報錯 No spring.config.import property has been defined,所以要重新引入 bootstrap 依賴
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>6.2 配置
這里需要兩個配置文件 bootstrap.yml 和 application.yml,在項目初始化時,要保證先從配置中心進(jìn)行配置拉取,拉取配置之后,才能保證項目的正常啟動。而 SpringBoot 中配置文件的加載是存在優(yōu)先級順序的,bootstrap 優(yōu)先級高于 application
1、bootstrap.yml
server:port: 9001spring:application:name: discovery-configcloud:nacos:discovery:server-addr: 124.222.xxx.90:3333config:server-addr: 124.222.xxx.90:3333file-extension: yaml # 指定 yaml 格式的配置2、application.yml
spring:profiles:active: dev # 表示開發(fā)環(huán)境6.3 ConfigController
通過 SpringCloud 原生注解 @RefreshScope 實現(xiàn)配置的自動更新
@RestController @RefreshScope public class ConfigController {@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo() {return configInfo;} }6.4 持久化配置
在 Nacos 的配置列表里新建一個配置,這里的 Data ID,計算公式為:
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
在前面已經(jīng)配置好了持久化配置屬性,配置信息會保存到數(shù)據(jù)庫中
6.5 查看配置
啟動服務(wù),訪問 http://localhost:9001/config/info,即可讀取到配置中心的配置信息
更新一下配置信息
可以發(fā)現(xiàn)讀取的配置信息也隨之動態(tài)刷新
6.6 加載方案
6.61 Data ID 方案
默認(rèn)空間 + 默認(rèn)分組 + Data ID,主要通過不同的 Data ID 來進(jìn)行區(qū)分,即上面的配置
6.6.2 Group 方案
通過 Group 實現(xiàn)環(huán)境區(qū)分
1、新建 Group
2、增加 group 配置
bootstrap.yml
server:port: 9001spring:application:name: discovery-configcloud:nacos:discovery:server-addr: 124.222.xxx.90:3333config:server-addr: 124.222.xxx.90:3333file-extension: yamlgroup: DEV_GROUPapplication.yml
spring:profiles:# active: dev # 表示開發(fā)環(huán)境active: info # 表示開發(fā)環(huán)境6.6.3 Namespace 方案
1、新建命名空間
2、選擇該命名空間進(jìn)行配置管理
3、配置命名空間
bootstrap.yml
server:port: 9001spring:application:name: discovery-configcloud:nacos:discovery:server-addr: 124.222.118.90:8848config:server-addr: 124.222.118.90:8848file-extension: yamlnamespace: a404abf6-f7ca-40f5-a106-2a892793fb48總結(jié)
以上是生活随笔為你收集整理的服务器Nacos集群搭建及使用总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自制openmv
- 下一篇: conda 下载各种安装包以及寻找加入安