这种架构结合了NGINX作为反向代理和负载均衡器,PM2作为Node.js应用进程管理器,以及VPS提供的可扩展计算资源,能够构建高可用、高性能的应用服务集群。
# 在所有VPS上更新系统
sudo apt update && sudo apt upgrade -y
# 安装Node.js和npm
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
# 安装PM2全局
sudo npm install -g pm2
# 安装NGINX
sudo apt install -y nginx
# 在应用服务器上克隆项目
git clone your-repo.git
cd your-repo
# 安装依赖
npm install
# 使用PM2启动应用(集群模式,根据CPU核心数)
pm2 start app.js -i max --name "my-app"
# 设置PM2开机自启
pm2 startup
pm2 save
在主VPS或负载均衡器上配置NGINX (/etc/nginx/sites-available/your-app
):
upstream app_servers {
server vps1_ip:3000;
server vps2_ip:3000;
server vps3_ip:3000;
# 添加更多服务器...
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://app_servers;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
# 设置防火墙
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
# 安装并配置Fail2Ban
sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# 设置SSL证书(使用Let's Encrypt)
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
在NGINX的upstream块中添加负载均衡策略:
upstream app_servers {
least_conn; # 最少连接策略
server vps1_ip:3000 weight=3; # 权重
server vps2_ip:3000;
server vps3_ip:3000 max_fails=3 fail_timeout=30s; # 健康检查
}
# 安装PM2监控模块
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
# 查看集群状态
pm2 monit
pm2 list
配置所有VPS将日志发送到中央日志服务器或使用ELK Stack。
定期更新:
sudo apt update && sudo apt upgrade -y
sudo npm update -g
性能监控:
htop
监控系统资源pm2-web
提供Web界面监控自动扩展脚本: 根据负载自动添加/移除VPS节点的脚本示例(需结合云提供商API)。
应用崩溃:
pm2 logs my-app
pm2 restart my-app
NGINX问题:
sudo nginx -t # 测试配置
sudo tail -f /var/log/nginx/error.log
网络连接问题:
netstat -tulnp
ping vps_ip
curl -v http://localhost:3000
这种架构提供了良好的扩展性和可靠性,适合中小型Web应用的生产环境部署。根据实际需求,可以进一步添加数据库集群、缓存层和CDN等组件来完善整个系统架构。