当前位置: 首页 > news >正文

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控制台:

  1. 点击 集群管理 → 节点列表

  2. 确认三个节点状态都是 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 修改默认密码

首次登录后立即修改默认密码:

  1. 进入 权限控制 → 用户列表

  2. 修改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
}

故障排查

常见问题解决

  1. 节点无法加入集群

    # 检查集群配置文件
    cat /usr/local/nacos/conf/cluster.conf# 检查网络连通性
    telnet 192.168.1.10 8848
  2. 数据库连接失败

    # 测试数据库连接
    mysql -h 192.168.1.20 -u nacos -p -D nacos_config
  3. 内存不足

    # 调整JVM参数
    vim /usr/local/nacos/bin/startup.sh

总结

通过以上步骤,您已经成功部署了一个生产可用的Nacos集群。这个配置提供了:

  • ✅ 高可用性:3节点集群,单点故障不影响服务

  • ✅ 数据持久化:MySQL集群保证数据安全

  • ✅ 负载均衡:Nginx提供统一的访问入口

  • ✅ 安全性:修改默认密码,配置防火墙

  • ✅ 可维护性:systemd服务,日志轮转,健康检查

这个架构可以满足大多数生产环境的需求,建议定期备份数据库并监控集群状态。

http://www.dtcms.com/a/569337.html

相关文章:

  • 深入理解五种 IO 模型与非阻塞 IO:从原理到场景选型
  • 大专生升学与职业发展路径探析:从专升本到能力进阶
  • 12. PLC与继电器控制系统的区别
  • QT项目踩坑点!!!注意
  • ECCV 即插即用 | 频域全局视野 + 先验局部细节 = SOTA级图像修复!FADformer架构全解析
  • 做网站是用ps还是ai英文网站建设教程
  • 做网站怎么兼职上海企业网络营销推广多少钱
  • OpenCV 的 BackgroundSubtractorMOG2 原理
  • 【机器学习的4种学习范式】
  • 网站客户案例app开发用什么工具
  • 蓝牙钥匙 第39次 汽车售后服务中的权限管理:维修技师临时权限、服务模式与诊断数据访问控制
  • openEuler 22.03-Docker离线安装教程
  • 统一服务入口-Gateway
  • 济南做网站的公司哪家好网站建设工作半年通报
  • 为什么要GetWorld()?
  • HBase安装配置
  • 【开题答辩实录分享】以《基于Java的校园心理咨询服务系统的设计与实现》为例进行答辩实录分享
  • 佛山网站建设的品牌2345网址导航下载安装到桌面
  • 场外衍生品系统开发实战:TRS收益互换与场外个股期权架构解析
  • 网站需求分析模板浅谈电子商务网站建设与规划
  • Spring Boot整合MQTT
  • 《Nginx进阶实战:反向代理、负载均衡、缓存优化与Keepalived高可用》
  • 第6章 结构体与方法
  • 为什么 transformers 要 import TensorFlow
  • 网站建设要学哪些软件偃师网络营销的概念
  • 【AI学习-comfyUI学习-翻译文本工作流-各个部分学习-第二步】
  • 短期与长期利益平衡
  • 简单网站建设 有教程网络服务费绩效目标申报表
  • 网站建设技术知乎中文域名的网站有哪些
  • 二十一、STM32的ADC(一)(ADC介绍)