在 CentOS 上实现 Node.js 应用的集群部署,可以充分利用多核 CPU 的性能,提高应用的并发处理能力。以下是使用 PM2 进行集群部署的详细步骤:
首先,确保你的 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
PM2 是一个功能强大的 Node.js 进程管理器,支持集群模式。
sudo npm install pm2 -g
假设你有一个名为 app.js
的 Node.js 应用程序,你可以使用以下命令启动一个集群:
pm2 start app.js -i max
参数说明:
-i max
:根据 CPU 核心数自动启动相应数量的实例。你也可以指定具体的数字,例如 -i 4
表示启动 4 个实例。使用以下命令查看当前运行的进程和集群状态:
pm2 status
停止所有实例:
pm2 stop app
重启所有实例:
pm2 restart app
删除集群:
pm2 delete app
为了让 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
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
PM2 提供了丰富的监控和日志管理功能:
查看实时日志:
pm2 logs app
查看日志文件:
pm2 logs app --lines 1000
监控资源使用情况:
pm2 monit
除了 PM2,你还可以考虑使用其他工具进行 Node.js 集群部署,例如:
使用 PM2 在 CentOS 上实现 Node.js 集群部署简单高效,具备自动重启、负载均衡、日志管理等功能,非常适合生产环境使用。根据具体需求选择合适的工具和方法,可以显著提升应用的性能和稳定性。