"當你的注冊中心掛了,整個微服務就變成了無頭蒼蠅。"?這是我在生產環境踩坑后最痛的領悟。今天,我將分享如何用Nacos集群+Nginx搭建堅如磐石的注冊中心,讓你的微服務永不迷路!
在 Windows 環境下配置 Nacos 集群,核心步驟與 Linux 類似,主要是配置持久化數據庫(推薦 MySQL)、設置集群節點列表、修改配置文件并分別啟動各個 Nacos 實例。
為什么你的微服務需要這個方案?
在分布式系統中,注冊中心就是微服務的地圖導航。一旦它宕機:
-
服務發現機制崩潰 😱
-
配置更新全面停滯 ??
-
整個系統陷入癱瘓 💥
傳統單點部署的Nacos就像走鋼絲,而我們的方案提供:
-
??99.99%高可用性?- 集群自動故障轉移
-
??動態擴展能力?- 隨時添加新節點
-
??零感知升級?- 逐個節點滾動更新
-
??智能流量分配?- Nginx負載均衡策略
前置準備
-
安裝 JDK 8+
-
下載?Oracle JDK?或?OpenJDK
-
安裝并配置環境變量:
-
JAVA_HOME
?= JDK 安裝路徑(如?C:\Program Files\Java\jdk-17
) -
在?
Path
?中添加?%JAVA_HOME%\bin
-
-
驗證:打開 CMD,執行?
java -version
,輸出版本信息即成功。
-
-
下載 Nacos Server
-
訪問?Nacos GitHub Releases
-
下載最新穩定版?
nacos-server-x.x.x.zip
(如?nacos-server-2.2.3.zip
) -
解壓到?三個獨立目錄(模擬三節點集群):
-
D:\nacos-cluster\node1
-
D:\nacos-cluster\node2
-
D:\nacos-cluster\node3
-
-
-
安裝 MySQL 數據庫
-
下載?MySQL Installer
-
安裝 MySQL Server 5.7+(推薦 8.0)
-
記住設置的?
root
?密碼 -
創建 Nacos 專用數據庫:
CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
執行初始化腳本:
-
找到 Nacos 目錄下的?
conf/nacos-mysql.sql
-
在 MySQL 命令行或工具中執行:
mysql -u root -p nacos_config < D:\nacos-cluster\node1\conf\nacos-mysql.sql
-
-
配置 Nacos 集群節點
1. 配置數據庫連接(每個節點)
-
打開?
node1/conf/application.properties
-
修改以下配置(取消注釋并填寫真實信息):
# 啟用 MySQL 數據源
spring.datasource.platform=mysql# 數據庫數量(單庫填1)
db.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=your_mysql_password # 替換為你的密碼
-
重復操作:對?
node2
、node3
?的?application.properties
?做相同修改。
2. 配置集群節點列表(每個節點)
-
在?
node1/conf/
?目錄下?新建文件?cluster.conf
(若存在則編輯) -
添加以下內容(單機模擬需用不同端口,生產環境用不同IP):
-
# 格式:真實IP:端口(同一機器必須不同端口) 127.0.0.1:8848 127.0.0.1:8849 127.0.0.1:8850
-
復制文件:將?
cluster.conf
?復制到?node2/conf/
?和?node3/conf/
?目錄(確保三節點內容完全一致)。
3. 修改節點端口(單機模擬必做)
-
Node1 端口:
打開?node1/conf/application.properties
,修改:server.port=8848
-
Node2 端口:
打開?node2/conf/application.properties
,修改:server.port=8849
-
Node3 端口:
打開?node3/conf/application.properties
,修改:server.port=8850
啟動 Nacos 集群
1. 啟動命令(每個節點獨立窗口)
-
Node1 啟動:
cd D:\nacos-cluster\node1\bin startup.cmd -m cluster
-
Node2 啟動:
cd D:\nacos-cluster\node2\bin startup.cmd -m cluster
-
Node3 啟動:
cd D:\nacos-cluster\node3\bin startup.cmd -m cluster
2. 驗證啟動日志
-
觀察每個 CMD 窗口輸出:
-
出現?
Nacos started successfully in cluster mode
?表示啟動成功。
-
?訪問Nacos
1. 安裝 Nginx
-
下載 Windows 版 Nginx:?nginx.org/en/download.html
-
解壓到目錄(如?
D:\nginx
) -
驗證安裝:CMD 執行?
D:\nginx\nginx.exe
,訪問?http://localhost
?看到歡迎頁
2. 配置 Nginx 負載均衡
編輯?D:\nginx\conf\nginx.conf
,在?http {}
?塊內添加:?
# 配置 Nacos 集群負載均衡
upstream nacos-cluster {# 負載均衡策略(可選:weight輪詢/IP_hash/least_conn)least_conn; # 使用最少連接數策略# Nacos 集群節點(IP:端口)server 127.0.0.1:8848 max_fails=3 fail_timeout=30s; # 節點1server 127.0.0.1:8849 max_fails=3 fail_timeout=30s; # 節點2server 127.0.0.1:8850 max_fails=3 fail_timeout=30s; # 節點3# 健康檢查(需安裝額外模塊,或使用商業版)# keepalive 32; # 保持連接數
}server {listen 80; # 監聽端口server_name nacos.lb; # 域名(本地需配hosts)# Nacos API 路由location / {proxy_pass http://nacos-cluster; # 指向上游proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 重要:超時設置proxy_connect_timeout 5s;proxy_read_timeout 60s;proxy_send_timeout 30s;}# Nacos 控制臺路由location /nacos/ {proxy_pass http://nacos-cluster/nacos/;# 保持相同配置...}
}
3. 本地域名解析(可選)
編輯?C:\Windows\System32\drivers\etc\hosts
?添加:
127.0.0.1 nacos.lb
4. 啟動 Nginx
cd D:\nginx
nginx.exe -t # 驗證配置
nginx.exe -s reload # 重新加載配置
5. 驗證負載均衡
訪問?http://nacos.lb/nacos
?應能輪詢訪問到不同 Nacos 節點(查看節點列表中的訪問 IP)
二、Spring Cloud 配置通過 Nginx 訪問?
1. 修改 Spring Cloud 配置文件
在?application.yml
?或?bootstrap.yml
?中配置:
spring:cloud:nacos:# 統一使用 Nginx 入口地址discovery:server-addr: nacos.lb:80 # 服務發現地址config:server-addr: nacos.lb:80 # 配置中心地址file-extension: yaml # 配置文件格式# 高級配置(可選)username: nacospassword: nacosnamespace: public # 命名空間group: DEFAULT_GROUP # 配置組
2. 關鍵參數說明
參數 | 說明 |
---|---|
server-addr | Nginx 地址(域名/IP + 端口) |
file-extension | 配置文件后綴(yaml/properties) |
namespace | 對應 Nacos 的命名空間 ID |
group | 配置分組名 |
3. 添加 Maven 依賴
確保包含最新 Nacos 客戶端:
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2022.0.0.0</version>
</dependency>
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2022.0.0.0</version>
</dependency>
三、全流程驗證
1. 啟動順序
-
啟動 MySQL 數據庫
-
啟動 Nacos 集群(三個節點)
-
啟動 Nginx
-
啟動 Spring Cloud 應用