本文基于 Nacos 3.x 版本,完整讲解 Nacos 核心能力、适用场景、集群原理,并提供一套可落地的 5 节点生产集群部署实操,覆盖传统微服务治理与新增的 AI Registry(AI 资源管理)能力。 环境说明:CentOS7,JDK17,Nacos 3.0.3,MySQL8.0,5 台内网服务器
目录
- Nacos 是什么?三大核心能力
- Nacos 3.x 新特性:AI 管理中心(AI Registry)
- 什么时候适合引入 Nacos
- 集群规模选型建议
- Nacos 集群底层原理:Raft + Distro 混合一致性模型
- 服务器角色规划
- 分步部署 Nacos 5 节点集群 7.1 部署 MySQL8.0(192.168.88.115) 7.2 创建 Nacos 数据库与数据库账号 7.3 所有节点安装 JDK17 + Nacos 服务包 7.4 初始化 Nacos 数据库表结构 7.5 全局配置 application.properties 与集群文件 cluster.conf 7.6 配置 Systemd 实现 Nacos 开机自启(所有节点) 7.7 Nginx 负载均衡配置(192.168.88.111)
- 部署验证
- 总结
1. Nacos 是什么?三大核心能力
Nacos 全称 Dynamic Naming and Configuration Service,是阿里开源的动态命名与配置服务平台。 早期定位:服务注册中心 + 配置中心 + 微服务管理平台 。 在 Nacos 3.x 版本中,新增 AI 管理中心(AI Registry),将 AI 体系中的各类资源纳入统一治理。
简单概括 Nacos 解决的 3 大类核心问题:
- 服务去哪找?(服务注册发现) 微服务实例启动后主动注册到 Nacos;消费方从 Nacos 拉取服务实例地址、端口、健康状态,实现服务自动寻址。实例宕机时,Nacos 自动剔除不健康节点,不再转发流量。
- 配置怎么管?(配置中心) 数据库连接地址、业务开关、超时阈值、灰度策略等配置集中托管。配置变更实时推送客户端,无需打包、重启应用,同时支持版本管理与一键回滚。
- AI 资源怎么治理?(AI Registry,3.x 新增) 在 Agent 应用体系中,Skill、Agent、MCP Server、Prompt 模板、AgentSpec 等 AI 组件,同样需要注册、版本管控、权限隔离与操作审计,Nacos 3.x 将 AI 资源作为一等公民统一管理。
| 能力 | 作用 | 典型场景 |
|---|---|---|
| 服务注册发现 | 实例自动注册、服务自动发现、健康状态感知 | SpringCloud/Dubbo 微服务间远程调用 |
| 配置管理 | 集中配置存储、动态推送、版本回滚、配置审计 | 业务开关、限流阈值、第三方接口地址变更 |
| 健康检查 | 定时探测,自动下线不健康实例 | 节点宕机、进程异常时流量自动摘除 |
| 多环境隔离 | Namespace + Group 两层隔离 | dev/test/pre/prod 多环境配置隔离 |
| 灰度与流量路由 | 实例权重、分组发布、流量染色 | 服务灰度发布、按比例切流 |
| AI 管理中心(3.x) | AI 资源注册、版本、鉴权、审计 | Agent、Skill、Prompt、MCP Server 统一治理 |
2. Nacos 3.x 新特性:AI 管理中心(AI Registry)
AI 管理中心是 Nacos3.x 最重要的升级。 它把 AI 资源接入 Nacos 控制台,复用 Nacos 成熟能力:
- Namespace 环境隔离:开发、预发、生产的 Agent 资源相互隔离
- 资源版本管理:Prompt、Skill 多版本留存,支持回滚
- 权限控制:不同账号对 AI 资源的读写权限管控
- 操作审计:记录 AI 资源新增、修改、删除操作
适用场景:基于 Spring AI Alibaba 搭建 AI Agent 应用,把 Agent、MCP 服务注册进 Nacos,实现 AI 组件的服务化治理。
3. 什么时候适合引入 Nacos
✅ 不建议上 Nacos:单体应用,配置项极少,无实例动态扩缩容需求,服务数量很少。
✅ 强烈推荐引入 Nacos:
- 微服务数量较多,人工维护 IP 端口成本高,容易出错;
- 配置变更频繁,需要动态下发、版本回滚;
- 多环境复杂,开发 / 测试 / 生产配置容易混淆;
- 服务实例会动态上下线,需要自动感知实例健康状态;
- 技术栈为 Spring Cloud、Dubbo、Spring AI Alibaba,原生集成 Nacos;
- 搭建 AI Agent 平台,需要统一管理 MCP、Agent、Prompt 资源。
4. 集群规模选型建议
| 集群规模 | 推荐部署方式 | 说明 |
|---|---|---|
| 本地开发 | 单机模式 | 内置 Derby 数据库,仅本地调试 |
| 测试环境 | 单机 / 小集群 | 建议外接 MySQL,便于模拟生产 |
| 生产环境 | 3 节点集群起步 | 推荐 3、5 奇数节点,满足高可用 |
| 大规模生产 | 5 节点及以上 | 微服务多、QPS 高、配置变更频繁 |
生产硬性规范:
- 节点优先奇数,不要使用 2 节点集群(无法完成 Raft 过半选举)
- 数据库必须使用独立外部 MySQL,禁用内置 Derby
- 客户端连接 Nacos 统一使用 SLB/Nginx 域名,禁止直连单个节点 IP
- 开放端口:8848(主端口)、7848(Raft)、9848/9849(gRPC 通信)
- 生产环境必须开启鉴权,自定义 token 密钥,不要使用默认密钥
5. Nacos 集群底层原理:Raft + Distro 混合一致性模型
Nacos 集群并不是简单的负载均衡,它针对两类数据采用两套不同一致性协议,属于CP/AP 混合模型:
- 配置数据:Raft 协议(偏向 CP) 配置数据一致性优先级最高。集群内部选举 Leader,写请求需要集群过半节点确认才持久化生效,保证配置在集群内强一致。
- 临时服务实例:Distro 协议(自研,偏向 AP) 服务注册发现优先保证可用性。Distro 保证数据最终一致性,依靠心跳、数据补偿同步实例信息,实例上下线感知更快,适合微服务动态扩缩容场景。
所有持久化数据最终存入外部 MySQL;Nacos 各节点启动时加载数据库数据到本地内存缓存,提升查询性能。
一句话总结:配置偏 CP,临时服务发现偏 AP 。 Nacos 本质是微服务与 AI 应用的控制平面,统一承载服务、配置、AI 资源治理。 标准架构链路:
客户端 → Nginx/SLB → Nacos集群 → MySQL扩展能力:可叠加监控告警、配置审计、灰度发布、AI Registry,升级为企业级微服务 + AI 基础设施平台。
6. 服务器角色规划
本次搭建 5 节点 Nacos 集群,环境为内网:
| 物理服务器 IP | 节点名 | 部署角色说明 |
|---|---|---|
| 192.168.88.111 | nacos-1 | Nginx 负载均衡入口 + Nacos 节点 1 |
| 192.168.88.112 | nacos-2 | Nacos 节点 2 |
| 192.168.88.113 | nacos-3 | Nacos 节点 3 |
| 192.168.88.114 | nacos-4 | Nacos 节点 4 |
| 192.168.88.115 | nacos-5 | MySQL8.0 数据库 + Nacos 节点 5 |
注意:数据库单独部署在 115,所有 Nacos 节点共用这一套 MySQL。
7. 分步部署 Nacos 5 节点集群
所有服务器关闭防火墙或放行 8848、7848、9848、9849、3306 端口;关闭 SELinux。
7.1 部署 MySQL8.0(仅在 192.168.88.115 执行)
# 1. 添加 MySQL8.0 官方yum源并安装
wget -i -c http://dev.mysql.com/get/mysql80-community-release-el7-10.noarch.rpm
yum -y install mysql80-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
# 2. 启动MySQL并设置开机自启
systemctl start mysqld
systemctl enable mysqld
# 3. 获取MySQL初始临时密码
TEMP_PASS=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
echo "MySQL 初始密码为:$TEMP_PASS"
# 4. 使用初始密码登录,修改root强密码(替换为你自己的密码)
mysql -uroot -p"$TEMP_PASS" --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongRootPass!123';"
7.2 创建 Nacos 数据库与数据库账号(115 执行)
登录 MySQL:
mysql -uroot -p
执行 SQL 脚本:
-- 创建Nacos专用数据库,字符集utf8mb4
CREATE DATABASE nacos_config DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建nacos访问账号,允许内网所有IP访问
CREATE USER 'nacos'@'%' IDENTIFIED BY 'NacosPass@2026!';
GRANT ALL PRIVILEGES ON nacos_config.* TO 'nacos'@'%';
FLUSH PRIVILEGES;
EXIT;
7.3 所有节点安装 JDK17 + Nacos 服务包
Nacos3.x 硬性依赖 JDK17,5 台机器全部执行:
# 1. 下载OpenJDK17
wget https://mirrors.huaweicloud.com/openjdk/17/openjdk-17_linux-x64_bin.tar.gz
# 解压
tar -zxvf openjdk-17_linux-x64_bin.tar.gz
# 移动目录
mv jdk-17* /opt/jdk-17
# 写入环境变量
cat >> /etc/profile << 'EOF'
export JAVA_HOME=/opt/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
EOF
# 生效环境变量
source /etc/profile
# 校验版本
java -version
安装 Nacos 3.0.3
Nacos下载地址:发布历史 | Nacos 官网

# 创建安装目录
mkdir -p /opt/nacos
cd /opt/nacos
# 上传 nacos-server-3.0.3.zip 到当前目录后解压
unzip nacos-server-3.0.3.zip
7.4 初始化 Nacos 数据库表结构(仅 115 执行)
将 Nacos 内置 mysql-schema.sql 导入刚刚创建的 nacos_config 库
mysql -u nacos -p'你的Nacos数据库密码' nacos_config < /opt/nacos/nacos/conf/mysql-schema.sql
7.5 全局配置 application.properties 与 cluster.conf(5 台全部执行)
7.5.1 application.properties配置
# 备份原有配置
mv /opt/nacos/nacos/conf/application.properties /opt/nacos/nacos/conf/application.properties-bak
# 新建配置文件
vim /opt/nacos/nacos/conf/application.properties
写入配置:
### 数据库配置
spring.sql.init.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.88.115:3306/nacos_config?
characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user=nacos
db.password=NacosPass@2026!
### 安全鉴权(集群所有节点必须完全一致!)
nacos.core.auth.enabled=true
nacos.core.auth.system.type=nacos
# 务必替换为自定义密钥,不要直接使用示例密钥上线生产
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
7.5.2 cluster.conf 集群配置
# 复制集群示例文件
cp /opt/nacos/nacos/conf/cluster.conf.example /opt/nacos/nacos/conf/cluster.conf
vim /opt/nacos/nacos/conf/cluster.conf
写入 5 节点地址,删除原有注释示例:
192.168.88.111:8848
192.168.88.112:8848
192.168.88.113:8848
192.168.88.114:8848
192.168.88.115:8848
7.6 配置 Systemd 实现 Nacos 开机自启(5 台全部执行)
vim /etc/systemd/system/nacos.service
写入内容:
[Unit]
Description=Nacos Cluster Service
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/opt/jdk-17"
ExecStart=/opt/nacos/nacos/bin/startup.sh -m cluster
ExecReload=/opt/nacos/nacos/bin/shutdown.sh
ExecStop=/opt/nacos/nacos/bin/shutdown.sh
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
重载 systemd 并启动:
systemctl daemon-reload
systemctl enable --now nacos.service
提示:Nacos 集群启动较慢,等待 1~2 分钟;可以用
netstat -tlnp |grep 8848检查端口监听状态。
7.7 Nginx 负载均衡配置(仅 192.168.88.111 执行)
# CentOS7安装epel源和Nginx
yum install -y epel-release
yum install -y nginx
# 启动并开机自启
systemctl start nginx
systemctl enable nginx
新建 nacos 负载均衡配置
vim /etc/nginx/conf.d/nacos.conf
写入配置
upstream nacos_http {
server 192.168.88.111:8848 weight=1;
server 192.168.88.112:8848 weight=1;
server 192.168.88.113:8848 weight=1;
server 192.168.88.114:8848 weight=1;
server 192.168.88.115:8848 weight=1;
}
server {
listen 80;
server_name localhost;
location /nacos/ {
proxy_pass http://nacos_http;
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_set_header X-Forwarded-Proto $scheme;
}
}
校验 Nginx 配置,重载服务:
nginx -t && nginx -s reload
8. 部署验证
访问 Nginx 入口地址:http://192.168.88.111:8080
登录成功即代表集群部署完成;登录后可以切换命名空间,测试配置发布、服务注册、AI 资源管理面板。

9. 总结
Nacos 早已不只是传统微服务的注册配置中心。Nacos3.x 引入 AI Registry 之后,把 Agent、Skill、Prompt、MCP Server 等 AI 组件纳入统一治理平台,一套平台同时支撑微服务和 AI 应用。
本文搭建 5 节点 Nacos 高可用集群,从原理到完整部署流程,适用于企业预发、小规模生产环境。部署完成后,可以接入 Spring Cloud/Dubbo 微服务,也可以对接 Spring AI Alibaba,统一管理传统服务与 AI 资源。 集群架构采用 Nginx 做负载均衡,所有节点共享 MySQL 持久层,Raft+Distro 混合协议保证可用性与一致性。
在落地过程中,优先做好鉴权、备份、网络安全与监控;AI 资源变更建议严格走权限与审计流程。如果部署遇到问题,欢迎在评论区交流。
