CentOS7 部署 Nacos3.x 集群实战:从注册中心到 AI 管理中心

本文基于 Nacos 3.x 版本,完整讲解 Nacos 核心能力、适用场景、集群原理,并提供一套可落地的 5 节点生产集群部署实操,覆盖传统微服务治理与新增的 AI Registry(AI 资源管理)能力。 环境说明:CentOS7,JDK17,Nacos 3.0.3,MySQL8.0,5 台内网服务器

目录

  1. Nacos 是什么?三大核心能力
  2. Nacos 3.x 新特性:AI 管理中心(AI Registry)
  3. 什么时候适合引入 Nacos
  4. 集群规模选型建议
  5. Nacos 集群底层原理:Raft + Distro 混合一致性模型
  6. 服务器角色规划
  7. 分步部署 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)
  8. 部署验证
  9. 总结

1. Nacos 是什么?三大核心能力

Nacos 全称 Dynamic Naming and Configuration Service,是阿里开源的动态命名与配置服务平台。 早期定位:服务注册中心 + 配置中心 + 微服务管理平台 。 在 Nacos 3.x 版本中,新增 AI 管理中心(AI Registry),将 AI 体系中的各类资源纳入统一治理。

简单概括 Nacos 解决的 3 大类核心问题:

  1. 服务去哪找?(服务注册发现) 微服务实例启动后主动注册到 Nacos;消费方从 Nacos 拉取服务实例地址、端口、健康状态,实现服务自动寻址。实例宕机时,Nacos 自动剔除不健康节点,不再转发流量。
  2. 配置怎么管?(配置中心) 数据库连接地址、业务开关、超时阈值、灰度策略等配置集中托管。配置变更实时推送客户端,无需打包、重启应用,同时支持版本管理与一键回滚。
  3. 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:

  1. 微服务数量较多,人工维护 IP 端口成本高,容易出错;
  2. 配置变更频繁,需要动态下发、版本回滚;
  3. 多环境复杂,开发 / 测试 / 生产配置容易混淆;
  4. 服务实例会动态上下线,需要自动感知实例健康状态;
  5. 技术栈为 Spring Cloud、Dubbo、Spring AI Alibaba,原生集成 Nacos;
  6. 搭建 AI Agent 平台,需要统一管理 MCP、Agent、Prompt 资源。

4. 集群规模选型建议

集群规模 推荐部署方式 说明
本地开发 单机模式 内置 Derby 数据库,仅本地调试
测试环境 单机 / 小集群 建议外接 MySQL,便于模拟生产
生产环境 3 节点集群起步 推荐 3、5 奇数节点,满足高可用
大规模生产 5 节点及以上 微服务多、QPS 高、配置变更频繁

生产硬性规范:

  1. 节点优先奇数,不要使用 2 节点集群(无法完成 Raft 过半选举)
  2. 数据库必须使用独立外部 MySQL,禁用内置 Derby
  3. 客户端连接 Nacos 统一使用 SLB/Nginx 域名,禁止直连单个节点 IP
  4. 开放端口:8848(主端口)、7848(Raft)、9848/9849(gRPC 通信)
  5. 生产环境必须开启鉴权,自定义 token 密钥,不要使用默认密钥

5. Nacos 集群底层原理:Raft + Distro 混合一致性模型

Nacos 集群并不是简单的负载均衡,它针对两类数据采用两套不同一致性协议,属于CP/AP 混合模型:

  1. 配置数据:Raft 协议(偏向 CP) 配置数据一致性优先级最高。集群内部选举 Leader,写请求需要集群过半节点确认才持久化生效,保证配置在集群内强一致。
  2. 临时服务实例: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 资源变更建议严格走权限与审计流程。如果部署遇到问题,欢迎在评论区交流。

相关推荐
跟我学机器学习1 小时前
Qwen3 Reranking原理与使用:重排模型在 RAG 中的作用
人工智能·深度学习·transformer
袁俪1 小时前
数字孪生驱动大模型
人工智能
江润舟1 小时前
万物|炼器:从零手搓工业级旋转目标检测网络·卷4 —— 模块化重构(一)
人工智能·深度学习
传人1 小时前
为什么 Xshell 中可以通过java -version查询到java 版本号码,Electerm 却查不到?
java·linux·服务器
行者全栈架构师1 小时前
【鸿蒙心迹】从 TypeScript 迁移到 ArkTS——10 个编译报错逐个拆解(HarmonyOS 7.x)
前端·人工智能·开源
障碍的枫子1 小时前
初识ai Agent
人工智能
zhanghaha13141 小时前
AI工具WorkBuddy篇:8_换电脑后,数据如何迁移
人工智能
独立开发者阿乐1 小时前
DeepSeek 会引用什么样的网页内容
人工智能·结构化数据·geo优化·ai爬虫·llms.txt·deepseek收录
成旭先生2 小时前
银行卡识别 API:一张照片读出卡号、BIN 与发卡行
人工智能·算法·ocr·api接口·金融科技·银行卡识别·支付风控