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日志并恢复数据库后验证数据持久性。