9.2.3 集群部署架构与节点规划
在Nacos集群部署中,合理的架构与节点规划决定了可用性、性能与后续扩展能力。本节结合架构草图、节点规划示例、端口与资源核查命令、排错步骤与练习,给出可落地的规划与验证方法。
1. 集群部署架构概述#
核心组件:Nacos Server集群 + MySQL持久化 + 负载均衡入口(Nginx/HAProxy/SLB)。
命令示例:确认节点规划与端口开放
# 查看Nacos节点IP规划(示例)
cat /etc/hosts
# 预期:包含 nacos-1/2/3 与 mysql-1/2 解析
# 检查端口占用(Nacos: 8848/9848/9849)
ss -lntp | egrep '8848|9848|9849'
# 预期:未启动前无监听;启动后显示 java 进程监听
2. 节点规模与数量规划#
- 最小高可用:3节点Nacos + MySQL主从 + 2台LB
- 中型规模:5节点Nacos + MySQL MGR + 独立LB
- 大型规模:7+节点Nacos + 多活MySQL + 跨地域LB
示例:3节点规划表(最小高可用)
| 角色 | 主机名 | IP | 规格 | 说明 |
|---|---|---|---|---|
| Nacos | nacos-1 | 10.0.1.11 | 8C16G | 集群节点 |
| Nacos | nacos-2 | 10.0.1.12 | 8C16G | 集群节点 |
| Nacos | nacos-3 | 10.0.1.13 | 8C16G | 集群节点 |
| MySQL | mysql-1 | 10.0.2.11 | 8C16G | 主库 |
| MySQL | mysql-2 | 10.0.2.12 | 8C16G | 从库 |
| LB | lb-1 | 10.0.0.11 | 2C4G | VIP入口 |
| LB | lb-2 | 10.0.0.12 | 2C4G | 备入口 |
命令示例:资源预估与容量核查
# 查看CPU与内存
lscpu | egrep 'CPU\(s\)|Model name'
free -h
# 预估系统连接数(高并发环境建议提升)
sysctl net.core.somaxconn
# 如需调整:sysctl -w net.core.somaxconn=1024
3. 角色与资源规划#
- Nacos节点:CPU 4C起步、建议8C;内存8G起步、建议16G;SSD优先
- 数据库节点:独立部署,避免与Nacos同机;配置高可用
- LB节点:至少2台,开启健康检查
示例:磁盘规划与日志分盘
# 建议:/data/nacos 与 /var/log/nacos 独立
lsblk
df -h | egrep '/data|/var/log'
# 预期:数据盘与系统盘分离,避免日志撑满系统盘
4. 网络与部署位置规划#
- 同可用区部署:低延迟,简化一致性
- 跨可用区部署:需考虑延迟与抖动,建议3+节点分布
- 端口:8848(HTTP)/9848(gRPC)/9849(集群)
示例:端口连通性检查
# 从任一节点测试Nacos端口
nc -zv 10.0.1.11 8848
nc -zv 10.0.1.11 9848
nc -zv 10.0.1.11 9849
# 预期:succeeded
# 防火墙规则示例(firewalld)
firewall-cmd --permanent --add-port=8848/tcp
firewall-cmd --permanent --add-port=9848/tcp
firewall-cmd --permanent --add-port=9849/tcp
firewall-cmd --reload
5. 数据持久化与高可用规划#
- 必须启用MySQL持久化
- 备份:每日全量+关键配置增量
- 故障切换:数据库主从切换,Nacos节点自动剔除
示例:MySQL连接验证(Nacos节点执行)
# 连接测试
mysql -h 10.0.2.11 -P3306 -unacos -p
# 预期:成功登录
# 简要建库确认
CREATE DATABASE nacos_config DEFAULT CHARACTER SET utf8mb4;
SHOW DATABASES LIKE 'nacos_config';
排错示例:Nacos无法写入配置
# 常见原因:MySQL权限不足、连接异常
# 检查Nacos日志(路径示例)
tail -f /opt/nacos/logs/nacos.log | egrep 'SQLException|Access denied'
# 处理:确认nacos用户权限
# GRANT ALL ON nacos_config.* TO 'nacos'@'%' IDENTIFIED BY 'Passw0rd!';
6. 容量与性能估算#
- 单节点建议控制在5万实例以内
- 配置条目与推送频率决定内存与网络
- QPS高时扩展节点并优化网络
示例:简单容量估算脚本
#!/bin/bash
# 估算单节点实例负载(示例)
TOTAL_INSTANCES=120000
NODES=3
echo "每节点实例数: $((TOTAL_INSTANCES/NODES))"
# 预期:每节点 40000 实例
7. 典型规划示例#
小型环境
- 3台Nacos + 2台MySQL(主从) + 2台LB
中型环境
- 5台Nacos + 3台MySQL(MGR) + 2台LB + 监控节点
大型环境
- 7-9台Nacos + 5台MySQL(多活) + 多地域LB
示例:Nginx负载均衡入口配置
# /etc/nginx/conf.d/nacos.conf
upstream nacos_cluster {
server 10.0.1.11:8848 max_fails=3 fail_timeout=10s;
server 10.0.1.12:8848 max_fails=3 fail_timeout=10s;
server 10.0.1.13:8848 max_fails=3 fail_timeout=10s;
}
server {
listen 80;
server_name nacos.example.com;
location / {
proxy_pass http://nacos_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
命令:验证LB入口
curl -I http://nacos.example.com/nacos/v1/console/health
# 预期:HTTP/1.1 200
8. 规划注意事项#
- 避免Nacos与数据库同机部署
- 预留20%-30%资源冗余
- 全节点NTP时间同步
- 与业务网段隔离,最小化端口暴露
排错清单(快速定位)
- 端口不通:nc -zv <ip> <port>
- DNS解析失败:getent hosts nacos-1
- LB后端不健康:nginx -t && systemctl reload nginx
- 数据库连接异常:mysql -h <ip> -u <user> -p
练习
1. 设计3节点集群并写出IP规划表与端口清单。
2. 在两台机器上搭建Nginx负载均衡并通过curl验证健康接口。
3. 模拟MySQL主库不可用,记录Nacos配置写入的失败日志关键字。
4. 编写脚本估算10万实例在5节点集群中的单节点负载。