# :-: Nacos生產部署方案
## 一、說明
生產環境中部署`nacos`首先肯定是使用集群模式`cluster`保證高可用,本文主要詳細介紹最佳的集群方案怎樣搭建,然后`spring cloud`程序怎樣集成
## 二、集群方案
下圖是官方推薦的集群方案,通過域名 + VIP模式的方式來實現,可讀性好,而且換ip方便
> 這里的`VIP`直接使用 `Nginx`就可以實現了
## 三、方案實現
`nacos`集群最低配置是至少需要3個實例,因為我在本地搭建只有一臺機器所以通過修改端口的方式來部署這3個實例,端口分別為:`8848`、`8849`、`8850`
### 3.1. 修改集群配置
nacos的conf目錄下有配置文件cluster.conf,請每行配置成ip:port。
~~~
192.168.28.130:8848
192.168.28.130:8849
192.168.28.130:8850
~~~
> 192.168.28.130是我本機ip,三個nacos實例都配置一樣即可
### 3.2. 配置 MySQL 數據庫
集群模式必須使用`MySQL`數據庫,生產使用建議至少主備模式,或者采用高可用數據庫
#### 3.2.1. 初始化 MySQL 數據庫
腳本在nacos的conf目錄下有配置文件nacos-mysql.sql,直接執行即可
#### 3.2.2. 修改 application.properties 添加數據庫配置
配置文件在nacos的conf目錄下,添加以下配置
~~~
db.num=1
db.url.0=jdbc:mysql://192.168.28.131:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
~~~
> db.num 為數據庫實例數量如果有多個數據庫實例通過 db.url.0、db.url.1..... 指定不同的數據庫鏈接
### 3.3. 其他實例修改Nacos端口
修改nacos的conf目錄下`application.properties`下的`server.port`變量,三個實例分別為:`8848`、`8849`、`8850`
> 如果是不同機器部署集群的話這步可以忽略
### 3.4. 啟動Nacos集群
分別把3個實例都啟動起來,執行nacos的bin目錄下`startup.sh`,該啟動文件默認就是集群模式
### 3.5. 修改Nginx配置
修改`conf/nginx.conf`配置
~~~
upstream nacos {
server 192.168.28.130:8848;
server 192.168.28.130:8849;
server 192.168.28.130:8850;
}
server {
listen 80;
server_name test.nacos.com;
location / {
proxy_pass http://nacos;
}
}
~~~
> 配置域名`test.nacos.com`綁定`VIP`
### 3.6. 程序集成Nacos集群
nacos的地址`server-addr`配置域名`test.nacos.com`
## 四、Nacos集群管理

> **參考資料**:[https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html](https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html)
- 項目介紹
- 項目聲明
- 項目簡介
- 架構設計
- 項目亮點功能介紹
- 技術棧介紹
- 核心功能
- 運行環境
- 項目更新日志
- 文檔更新日志
- F&Q
- 部署教程
- 環境準備
- JDK安裝
- JDK1.8,17共存
- maven
- 分布式緩存Redis
- 單機版
- 集群
- 注冊&配置中心alibaba/nacos
- 介紹
- Nacos安裝
- Nacos配置中心
- Nacos注冊發現
- Nacos生產部署方案
- 服務監控-BootAdmin
- 基本介紹
- 如何使用
- 整合Admin-Ui
- 客戶端配置
- 鏈路追蹤
- 基本介紹
- SkyWalking-1
- Skywalking-1
- 消息隊列
- Kafka
- docker安裝kafka
- Linux集群
- Maven私服
- nexus安裝部署
- nexus使用介紹
- 全文搜索elasticsearch
- windows集群搭建
- docker安裝es
- ElasticHD
- linux集群部署
- 統一日志解決方案
- 日志解決方案設計
- 介紹與相關資料
- ELK安裝部署
- elasticsearch 7.5
- logstash-7.5
- kibana-7.5
- filebeat
- 服務監控-Prometheus
- Prometheus安裝配置
- Prometheus介紹
- grafana
- 持續集成部署CICD
- 自動化部署Jenkins
- 安裝部署win
- 打包發布遠程執行
- 安裝部署linux
- jenkins+gitlab+docker容器化工程自動化部署
- Git
- CICD說明
- 阿里云效
- CentOS_MYSQL安裝
- docker
- 安裝
- Docker安裝Nginx
- Docker部署啟動springboot
- dockerCompose
- harbor
- Docker私有鏡像倉庫
- Portainer
- Docker遠程連接設置
- 打包工程
- 必要啟動模塊
- 核心模塊
- 登錄認證
- 緩存功能
- 日志模塊
- 分布式鎖
- 消息隊列
- 異常處理
- 系統接口
- 參數驗證
- es檢索
- 數據導出
- 系統設計
- 系統總體架構
- 擴展模塊(可選)
- 限流熔斷alibaba/sentinel
- 使用Sentinel實現gateway網關及服務接口限流
- Sentinel使用Nacos存儲規則及同步
- 服務調用Feign
- Feign基本介紹
- 如何使用
- 負載均衡
- 請求超時
- 請求攔截器
- 分布式任務調度
- XXL-JOB
- 分布式事務
- TX-LCN
- Seata
- Seata原理解析
- 數據庫分庫分表
- swagger文檔
- 分布式ID生成器解決方案
- 服務網關CloudGateway
- 基本介紹
- 使用網關
- 路由配置
- 全局過濾器
- 服務認證授權架構設計
- 認證服務流程
- 授權服務流程
- 系統冪等性設計與實踐
- 分布式日志鏈路跟蹤
- 實時搜索系統設計
- 應用性能
- 壓力測試工具
- Apache JMeter介紹和安裝
- ApacheJMeter使用
- JVM
- JVM性能調優
- 常見JVM內存錯誤及解決方案
- JVM 分析工具詳解
- Spring Cloud性能調優
- Linux運維
- Linux 常用命令
- Linux開啟端口