"当你的注册中心挂了,整个微服务就变成了无头苍蝇。" 这是我在生产环境踩坑后最痛的领悟。今天,我将分享如何用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-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 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; # 节点1
server 127.0.0.1:8849 max_fails=3 fail_timeout=30s; # 节点2
server 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: nacos
password: nacos
namespace: 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 应用