安装Node.js和npm
sudo apt update
sudo apt install nodejs npm
验证安装:node -v
、npm -v
。
安装PM2(进程管理器)
sudo npm install pm2 -g
验证安装:pm2 -v
。
方式一:使用Node.js内置cluster模块
创建app.js
,代码如下:
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
for (let i = 0; i < numCPUs; i++) {
cluster.fork(); // 启动工作进程
}
cluster.on('exit', (worker) => {
console.log(`Worker ${worker.process.pid} died`);
});
} else {
http.createServer((req, res) => {
res.writeHead(200);
res.end('Hello World\n');
}).listen(3000);
console.log(`Worker ${process.pid} started`);
}
运行应用:node app.js
,通过ps aux | grep node
查看进程数是否等于CPU核心数。
方式二:使用PM2集群模式
创建ecosystem.config.js
:
module.exports = {
apps: [{
name: 'node-app',
script: 'app.js',
instances: 'max', // 按CPU核心数自动启动实例
exec_mode: 'cluster'
}]
};
启动集群:pm2 start ecosystem.config.js
。
sudo apt install nginx
,编辑配置文件/etc/nginx/sites-available/default
:upstream node_backend {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
location / {
proxy_pass http://node_backend;
}
}
重启Nginx:sudo systemctl restart nginx
,需确保Node.js应用分别运行在不同端口(如3000、3001、3002)。pm2 list
。pm2 stop <app_name>
、pm2 restart <app_name>
。pm2 logs
。Dockerfile
:基于Node.js镜像构建应用容器。pm2 save
+ pm2 startup
(系统重启后自动恢复进程)。参考资料: