温馨提示×

CentOS Node.js 怎样实现集群部署

小樊
56
2025-08-12 15:04:04
栏目: 编程语言

在 CentOS 上实现 Node.js 应用的集群部署,可以充分利用多核 CPU 的性能,提高应用的并发处理能力。以下是使用 PM2 进行集群部署的详细步骤:

1. 安装 Node.js

首先,确保你的 CentOS 系统上已经安装了 Node.js。如果尚未安装,可以通过以下方法之一进行安装:

使用 NodeSource 仓库安装最新版本的 Node.js:

# 导入 NodeSource 仓库的 GPG 密钥
curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash -

# 安装 Node.js
sudo yum install -y nodejs

注意:将 setup_16.x 替换为你需要的 Node.js 版本,例如 setup_18.x

验证安装:

node -v
npm -v

2. 安装 PM2

PM2 是一个功能强大的 Node.js 进程管理器,支持集群模式。

sudo npm install pm2 -g

3. 配置集群

假设你有一个名为 app.js 的 Node.js 应用程序,你可以使用以下命令启动一个集群:

pm2 start app.js -i max

参数说明:

  • -i max:根据 CPU 核心数自动启动相应数量的实例。你也可以指定具体的数字,例如 -i 4 表示启动 4 个实例。

4. 查看集群状态

使用以下命令查看当前运行的进程和集群状态:

pm2 status

5. 管理集群

  • 停止所有实例:

    pm2 stop app
    
  • 重启所有实例:

    pm2 restart app
    
  • 删除集群:

    pm2 delete app
    

6. 配置 PM2 启动脚本

为了让 PM2 在系统启动时自动运行你的 Node.js 应用,可以生成一个启动脚本:

pm2 startup

根据提示执行生成的命令,通常类似于:

sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u your_username --hp /home/your_username

然后保存当前的 PM2 进程列表:

pm2 save

7. 配置负载均衡

PM2 默认使用内置的负载均衡机制,将请求均匀分配到各个实例。如果你需要自定义负载均衡策略,可以在 ecosystem.config.js 文件中进行配置。

示例 ecosystem.config.js

module.exports = {
  apps: [
    {
      name: 'my-app',
      script: 'app.js',
      instances: 'max', // 或指定具体数量
      exec_mode: 'cluster',
      autorestart: true,
      watch: false,
      max_memory_restart: '1G',
      env: {
        NODE_ENV: 'development',
      },
      env_production: {
        NODE_ENV: 'production',
      },
    },
  ],
};

然后使用以下命令启动应用:

pm2 start ecosystem.config.js --env production

8. 监控和日志管理

PM2 提供了丰富的监控和日志管理功能:

  • 查看实时日志:

    pm2 logs app
    
  • 查看日志文件:

    pm2 logs app --lines 1000
    
  • 监控资源使用情况:

    pm2 monit
    

9. 其他集群管理工具

除了 PM2,你还可以考虑使用其他工具进行 Node.js 集群部署,例如:

  • Forever: 一个简单的进程管理器。
  • Cluster 模块: Node.js 内置的模块,适合简单的集群需求。
  • Docker: 使用 Docker 容器化应用,并通过 Docker Compose 或 Kubernetes 进行集群管理。

总结

使用 PM2 在 CentOS 上实现 Node.js 集群部署简单高效,具备自动重启、负载均衡、日志管理等功能,非常适合生产环境使用。根据具体需求选择合适的工具和方法,可以显著提升应用的性能和稳定性。

0