在 CentOS 上搭建 Node.js 集群,常见有 三种层级 的做法,从简单到生产级逐步升级。下面按 实战推荐顺序 给你讲清楚。
适合:单台 CentOS 服务器,充分利用多核 CPU
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
# 安装 Node.js LTS
nvm install --lts
node -v
示例:cluster.js
const cluster = require('cluster');
const http = require('http');
const os = require('os');
if (cluster.isMaster) {
const numCPUs = os.cpus().length;
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, restarting...`);
cluster.fork();
});
} else {
http.createServer((req, res) => {
res.writeHead(200);
res.end(`Handled by worker ${process.pid}\n`);
}).listen(3000);
console.log(`Worker ${process.pid} started`);
}
启动:
node cluster.js
✅ 特点
适合:生产环境、自动重启、进程管理
npm install -g pm2
pm2 start app.js -i max
-i max 表示 CPU 核数 = worker 数
查看状态:
pm2 list
pm2 logs
pm2 startup
pm2 save
✅ 优点
适合:高并发、反向代理、SSL、负载均衡
pm2 start app.js -i 4
假设端口:
3001, 3002, 3003, 3004
yum install -y nginx
systemctl start nginx
systemctl enable nginx
编辑:
vim /etc/nginx/conf.d/node.conf
upstream node_cluster {
server 127.0.0.1:3001;
server 127.0.0.1:3002;
server 127.0.0.1:3003;
server 127.0.0.1:3004;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://node_cluster;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
}
}
重载:
nginx -t
systemctl reload nginx
| 方案 | 场景 | 复杂度 | 推荐度 |
|---|---|---|---|
| cluster | 单机多核 | 低 | ⭐⭐⭐ |
| PM2 | 生产环境 | 低 | ⭐⭐⭐⭐⭐ |
| Nginx + Node | 高并发 / 多机 | 中 | ⭐⭐⭐⭐ |
# 防火墙放行
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
# 使用非 root 用户运行 Node
useradd nodeuser
su - nodeuser
如果你愿意,我可以 直接帮你设计一套“CentOS + Node.js + PM2 + Nginx”生产级部署方案。