9.1.4 模式与部署形态(单机、集群、多集群)
Nacos部署形态主要分为单机、集群与多集群三类,应依据规模、可用性与跨地域需求选择。下面给出原理草图、安装与验证、常见故障排查及练习任务。
单机模式:安装、启动与验证#
适用于开发/测试或功能验证。部署简单,但无高可用。
# 1) 下载安装(以 2.x 为例)
wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
tar -zxf nacos-server-2.2.3.tar.gz -C /opt
cd /opt/nacos/bin
# 2) 单机启动
./startup.sh -m standalone
# 3) 验证
curl -s "http://127.0.0.1:8848/nacos/v1/console/health/liveness" | cat
# 预期:返回 {"status":"UP"} 或包含 "UP"
# 4) 停止
./shutdown.sh
配置要点(可选):编辑 /opt/nacos/conf/application.properties,如需外置数据库请切换到集群模式再配置。
集群模式:核心配置与启动#
生产常用形态,建议3或5节点,依赖独立MySQL。通过VIP或负载均衡统一入口。
# 假设三节点:10.0.0.11/12/13
# 1) 配置集群节点列表
cat > /opt/nacos/conf/cluster.conf <<'EOF'
10.0.0.11:8848
10.0.0.12:8848
10.0.0.13:8848
EOF
# 2) 配置外置MySQL
cat >> /opt/nacos/conf/application.properties <<'EOF'
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://10.0.0.21:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos
db.password=YourStrongPass
EOF
# 3) 启动(每台执行)
/opt/nacos/bin/startup.sh
# 4) 统一入口示例:Nginx 反向代理
cat > /etc/nginx/conf.d/nacos.conf <<'EOF'
upstream nacos_cluster {
server 10.0.0.11:8848;
server 10.0.0.12:8848;
server 10.0.0.13:8848;
}
server {
listen 80;
location / {
proxy_pass http://nacos_cluster;
proxy_set_header Host $host;
}
}
EOF
nginx -t && systemctl reload nginx
# 5) 健康检查
curl -s "http://nginx_vip/nacos/v1/console/health/liveness" | cat
关键命令解释:
- cluster.conf:声明集群节点列表,决定集群成员发现与数据同步。
- application.properties:切换到MySQL持久化,防止数据丢失。
- Nginx 负载均衡:对外统一入口,提高可用性与访问稳定性。
多集群形态:访问策略与隔离#
适用于跨地域或多云,多集群一般不追求全局强一致,通过命名空间/分组隔离与GSLB就近访问。
示例:通过不同命名空间隔离环境(dev/prod):
# 创建命名空间(使用API示例)
curl -X POST "http://nacos-vip:80/nacos/v1/console/namespaces" \
-d "customNamespaceId=prod" -d "namespaceName=生产环境"
# 验证命名空间列表
curl -s "http://nacos-vip:80/nacos/v1/console/namespaces" | jq .
常见故障与排错#
1) 端口不可达
ss -lntp | grep 8848
# 预期:监听 0.0.0.0:8848
2) MySQL连接失败
grep -n "db.url" /opt/nacos/conf/application.properties
mysql -h10.0.0.21 -unacos -p -e "use nacos; show tables;"
# 预期:存在 config_info 等表
3) 节点不在集群
cat /opt/nacos/conf/cluster.conf
# 确认所有节点 IP/端口一致且可互通
ping 10.0.0.12
4) 时钟不同步导致心跳异常
timedatectl status
# 建议启用 NTP
练习#
1) 单机模式启动后,通过API创建命名空间并查询结果。
2) 搭建三节点集群并通过Nginx访问,验证健康检查接口返回UP。
3) 故意关闭一个节点,观察Nginx是否还能访问服务。
4) 模拟MySQL故障,查看Nacos日志并恢复数据库后验证数据持久性。