插件窝 干货文章 NGINX PM2 VPS: 构建高可用性的应用服务集群

NGINX PM2 VPS: 构建高可用性的应用服务集群

NGINX PM2 配置 sudo 470    来源:    2025-04-11

NGINX + PM2 + VPS: 构建高可用性的应用服务集群

架构概述

这个方案使用NGINX作为反向代理和负载均衡器,PM2作为Node.js应用进程管理器,部署在VPS上构建高可用性应用服务集群。

核心组件

  1. NGINX:

    • 高性能Web服务器
    • 反向代理和负载均衡
    • 静态文件服务
    • SSL/TLS终止
  2. PM2:

    • Node.js应用进程管理器
    • 应用监控和自动重启
    • 集群模式支持
    • 日志管理
  3. VPS:

    • 虚拟私有服务器
    • 可根据需求扩展配置
    • 多节点部署实现高可用

部署步骤

1. 基础环境配置

# 更新系统
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

2. PM2应用部署

# 进入项目目录
cd /path/to/your/app

# 安装依赖
npm install

# 使用PM2启动应用
pm2 start app.js -i max --name "my-app"

# 设置开机自启
pm2 startup
pm2 save

3. NGINX配置

创建或编辑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

4. SSL配置(可选但推荐)

使用Let's Encrypt免费SSL证书:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

5. 高可用性增强

多VPS部署

  1. 在多个VPS上重复上述步骤
  2. 使用NGINX负载均衡配置:
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

性能优化建议

  1. NGINX优化:

    • 启用gzip压缩
    • 调整worker_processes和worker_connections
    • 配置缓存策略
  2. PM2优化:

    • 根据CPU核心数调整实例数量
    • 使用--max-memory-restart防止内存泄漏
    • 配置日志轮转
  3. VPS优化:

    • 启用swap空间
    • 调整内核参数
    • 定期系统更新

故障排查命令

# 检查NGINX状态
sudo systemctl status nginx

# 检查PM2状态
pm2 list

# 查看应用日志
pm2 logs my-app

# 查看NGINX错误日志
tail -f /var/log/nginx/error.log

# 检查网络连接
netstat -tulnp

扩展方案

  1. CDN集成: 添加Cloudflare或其他CDN服务
  2. 自动扩展: 使用Kubernetes或Docker Swarm
  3. CI/CD管道: 集成GitHub Actions或Jenkins
  4. 分布式缓存: 添加Redis缓存层

通过这种架构,您可以构建一个高可用、可扩展且性能优异的Node.js应用服务集群。