Ubuntu Node.js集群如何搭建与管理
一、搭建Ubuntu Node.js集群
1. 基础环境准备
-
安装Node.js和npm
sudo apt update sudo apt install nodejs npm
验证安装:
node -v
、npm -v
。 -
安装PM2(进程管理器)
sudo npm install pm2 -g
验证安装:
pm2 -v
。
2. 集群模式配置
-
方式一:使用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 class="hljs-title function_">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
。
3. 负载均衡(可选)
- 使用Nginx反向代理
安装Nginx:sudo apt install nginx
,编辑配置文件/etc/nginx/sites-available/default
:
重启Nginx: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; } }
sudo systemctl restart nginx
,需确保Node.js应用分别运行在不同端口(如3000、3001、3002)。
二、集群管理
1. 进程管理
- 查看状态:
pm2 list
。 - 停止/重启应用:
pm2 stop
、pm2 restart
。 - 查看日志:
pm2 logs
。
2. 高可用与扩展
- 容器化部署(Docker + Kubernetes)
- 编写
Dockerfile
:基于Node.js镜像构建应用容器。 - 使用Kubernetes编排集群,实现自动扩缩容和故障转移。
- 编写
- 监控与告警
- 集成Prometheus + Grafana监控集群性能。
- 配置PM2自动重启策略:
pm2 save
+pm2 startup
(系统重启后自动恢复进程)。
三、注意事项
- 端口冲突:确保集群中各实例端口不重复,或通过Nginx统一代理。
- 数据一致性:若集群需共享数据,建议使用Redis等中间件。
- 安全配置:生产环境需配置HTTPS、防火墙规则及定期更新依赖。
参考资料:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权请联系我们,一经查实立即删除!