这个方案使用NGINX作为反向代理和负载均衡器,PM2作为Node.js应用进程管理器,部署在VPS上构建高可用性应用服务集群。
NGINX:
PM2:
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
# 进入项目目录
cd /path/to/your/app
# 安装依赖
npm install
# 使用PM2启动应用
pm2 start app.js -i max --name "my-app"
# 设置开机自启
pm2 startup
pm2 save
创建或编辑NGINX配置文件 /etc/nginx/sites-available/my-app
:
upstream node_app {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
# 添加更多实例端口
keepalive 64;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://node_app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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_cache_bypass $http_upgrade;
}
}
启用配置并测试:
sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
使用Let's Encrypt免费SSL证书:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
upstream node_app {
server vps1_ip:3000;
server vps2_ip:3000;
server vps3_ip:3000;
keepalive 64;
}
# 安装PM2监控模块
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
# 设置监控
pm2 monit
NGINX优化:
PM2优化:
--max-memory-restart
防止内存泄漏VPS优化:
# 检查NGINX状态
sudo systemctl status nginx
# 检查PM2状态
pm2 list
# 查看应用日志
pm2 logs my-app
# 查看NGINX错误日志
tail -f /var/log/nginx/error.log
# 检查网络连接
netstat -tulnp
通过这种架构,您可以构建一个高可用、可扩展且性能优异的Node.js应用服务集群。