Nacos集群部署实战:3节点+Nginx+MySQL高可用方案
部署架构概述
我们将采用 3个Nacos节点 + 1个MySQL主从集群 的架构,这是生产环境的标准配置。

目录
部署架构概述
环境准备
服务器要求
第一步:数据库准备
1.1 创建数据库和用户
1.2 导入初始化SQL
第二步:部署Nacos集群
2.1 在所有节点安装Nacos
2.2 配置集群节点列表
2.3 配置数据库连接
2.4 配置JVM参数(可选但推荐)
第三步:配置负载均衡器
3.1 安装和配置Nginx
3.2 启动Nginx
第四步:启动Nacos集群
4.1 启动所有Nacos节点
4.2 检查启动状态
第五步:验证集群状态
5.1 访问Web界面
5.2 检查集群状态
5.3 API健康检查
第六步:配置系统服务
6.1 创建systemd服务文件
6.2 启用服务
第七步:安全配置
7.1 修改默认密码
7.2 配置防火墙
第八步:监控和运维
8.1 配置监控
8.2 日志配置
故障排查
常见问题解决
总结
环境准备
服务器要求
-
操作系统: CentOS 7.6+ 或 Ubuntu 18.04+
-
JDK: 1.8.0_92+ (推荐 OpenJDK 8)
-
内存: ≥ 4GB
-
磁盘: ≥ 50GB
-
网络: 服务器间内网互通
第一步:数据库准备
1.1 创建数据库和用户
-- 在MySQL中执行
CREATE DATABASE nacos_config CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'nacos'@'%' IDENTIFIED BY 'Nacos@123456';
GRANT ALL PRIVILEGES ON nacos_config.* TO 'nacos'@'%';
FLUSH PRIVILEGES;
1.2 导入初始化SQL
# 下载Nacos并解压获取SQL文件
wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
tar -zxvf nacos-server-2.2.3.tar.gz# 导入SQL文件
mysql -h 192.168.1.20 -u nacos -p nacos_config < nacos/conf/mysql-schema.sql
第二步:部署Nacos集群
2.1 在所有节点安装Nacos
# 在三台服务器上都执行
cd /opt
wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
tar -zxvf nacos-server-2.2.3.tar.gz
mv nacos /usr/local/
cd /usr/local/nacos
2.2 配置集群节点列表
在每台服务器上创建集群配置文件:
# 在三台服务器上都创建此文件
vim /usr/local/nacos/conf/cluster.conf
文件内容(注意IP替换为实际服务器IP):
192.168.1.10:8848
192.168.1.11:8848
192.168.1.12:8848
2.3 配置数据库连接
修改 application.properties 文件:
vim /usr/local/nacos/conf/application.properties
关键配置内容:
# 数据库配置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.1.20:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos
db.password.0=Nacos@123456# 集群配置
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=# 节点配置
nacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000# 安全配置
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.caching.enabled=true
2.4 配置JVM参数(可选但推荐)
vim /usr/local/nacos/bin/startup.sh
找到JVM配置部分,根据服务器配置调整:
# 建议根据服务器内存调整,4G内存服务器配置示例
if [[ "${MODE}" == "standalone" ]]; thenJAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
elseJAVA_OPT="${JAVA_OPT} -Xms1g -Xmx2g -Xmn512m"JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=false"
fi
第三步:配置负载均衡器
3.1 安装和配置Nginx
# 在负载均衡器服务器上执行
yum install -y nginx
配置Nginx:
vim /etc/nginx/nginx.conf
在 http 块中添加:
upstream nacos-cluster {server 192.168.1.10:8848;server 192.168.1.11:8848;server 192.168.1.12:8848;
}server {listen 80;server_name nacos.yourcompany.com;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_set_header X-Forwarded-Proto $scheme;# 重要:长连接超时设置proxy_connect_timeout 30s;proxy_read_timeout 300s;proxy_send_timeout 300s;}# 健康检查location /nacos/health {proxy_pass http://nacos-cluster/nacos/actuator/health;}
}
3.2 启动Nginx
systemctl start nginx
systemctl enable nginx
第四步:启动Nacos集群
4.1 启动所有Nacos节点
# 在三台服务器上分别执行
cd /usr/local/nacos/bin
sh startup.sh
4.2 检查启动状态
# 查看启动日志
tail -f /usr/local/nacos/logs/start.out# 检查进程
ps -ef | grep nacos# 检查端口
netstat -lnpt | grep 8848
第五步:验证集群状态
5.1 访问Web界面
通过浏览器访问:http://192.168.1.100/nacos
默认账号:nacos
默认密码:nacos
5.2 检查集群状态
在Nacos控制台:
-
点击 集群管理 → 节点列表
-
确认三个节点状态都是 UP
5.3 API健康检查
# 检查单个节点
curl http://192.168.1.10:8848/nacos/actuator/health# 通过负载均衡器检查
curl http://192.168.1.100/nacos/actuator/health
期望返回:
{"status":"UP"}
第六步:配置系统服务
6.1 创建systemd服务文件
vim /etc/systemd/system/nacos.service
内容:
[Unit]
Description=Nacos Server
After=network.target[Service]
Type=forking
Environment="JAVA_HOME=/usr/java/jdk1.8.0_291"
ExecStart=/usr/local/nacos/bin/startup.sh -m cluster
ExecStop=/usr/local/nacos/bin/shutdown.sh
Restart=on-failure
RestartSec=10[Install]
WantedBy=multi-user.target
6.2 启用服务
systemctl daemon-reload
systemctl enable nacos.service
第七步:安全配置
7.1 修改默认密码
首次登录后立即修改默认密码:
-
进入 权限控制 → 用户列表
-
修改nacos用户密码
7.2 配置防火墙
# 在Nacos服务器上
firewall-cmd --permanent --add-port=8848/tcp
firewall-cmd --permanent --add-port=7848/tcp # 集群通信端口
firewall-cmd --permanent --add-port=9848/tcp # gRPC端口
firewall-cmd --permanent --add-port=9849/tcp # gRPC端口
firewall-cmd --reload
第八步:监控和运维
8.1 配置监控
创建健康检查脚本:
vim /opt/scripts/check_nacos.sh
#!/bin/bash
HEALTH_CHECK_URL="http://localhost:8848/nacos/actuator/health"
response=$(curl -s -o /dev/null -w "%{http_code}" $HEALTH_CHECK_URL)if [ $response -eq 200 ]; thenecho "Nacos is healthy"exit 0
elseecho "Nacos is unhealthy"systemctl restart nacosexit 1
fi
8.2 日志配置
配置日志轮转:
vim /etc/logrotate.d/nacos
/usr/local/nacos/logs/*.log {dailyrotate 30compressdelaycompressmissingoknotifemptycopytruncate
}
故障排查
常见问题解决
-
节点无法加入集群
# 检查集群配置文件 cat /usr/local/nacos/conf/cluster.conf# 检查网络连通性 telnet 192.168.1.10 8848
-
数据库连接失败
# 测试数据库连接 mysql -h 192.168.1.20 -u nacos -p -D nacos_config
-
内存不足
# 调整JVM参数 vim /usr/local/nacos/bin/startup.sh
总结
通过以上步骤,您已经成功部署了一个生产可用的Nacos集群。这个配置提供了:
-
✅ 高可用性:3节点集群,单点故障不影响服务
-
✅ 数据持久化:MySQL集群保证数据安全
-
✅ 负载均衡:Nginx提供统一的访问入口
-
✅ 安全性:修改默认密码,配置防火墙
-
✅ 可维护性:systemd服务,日志轮转,健康检查
这个架构可以满足大多数生产环境的需求,建议定期备份数据库并监控集群状态。
