Node.js在CentOS上的集群部署方案是什么
导读:Node.js 在 CentOS 上的集群部署方案 一、方案总览 单机多进程:使用 Node.js 内置 Cluster 模块 或 PM2 集群模式,在一台服务器上启动与 CPU 核心数相当的进程,充分利用多核,适合大多数 Web/API...
Node.js 在 CentOS 上的集群部署方案
一、方案总览
- 单机多进程:使用 Node.js 内置 Cluster 模块 或 PM2 集群模式,在一台服务器上启动与 CPU 核心数相当的进程,充分利用多核,适合大多数 Web/API 服务。
- 多机横向扩展:在每台机器上运行多个进程,前面用 Nginx 做反向代理与负载均衡,扩展到多台 CentOS 主机,提高吞吐与可用性。
- 容器化编排:使用 Docker + Docker Compose 快速拉起多个实例(单机或 Swarm 模式),便于开发、测试与小规模上线。
二、单机多进程方案(Cluster 或 PM2)
- 安装 Node.js(示例为 NodeSource 14.x;如使用其他版本,替换版本号即可):
- 安装命令:
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -与sudo yum install -y nodejs
- 安装命令:
- 使用 PM2 启动集群(推荐):
- 全局安装:
sudo npm install pm2 -g - 启动命令:
pm2 start app.js -i max(按 CPU 核心数启动),常用管理:pm2 status、pm2 logs、pm2 restart < app>、pm2 delete < app> - 生产配置:创建 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
- 示例:
- 全局安装:
- 使用内置 Cluster 模块(代码方式):
- 关键点:主进程
cluster.isMaster时fork()多个工作进程;子进程cluster.isWorker时启动 HTTP 服务并监听同一端口;处理exit事件自动重启工作进程。
- 关键点:主进程
三、多机横向扩展与 Nginx 负载均衡
- 架构:每台 CentOS 上运行多个 Node 进程(如 PM2 -i max 或 Cluster),各进程监听不同端口(如 8001–8004);所有机器的 IP:端口纳入 Nginx upstream 统一转发。
- Nginx 配置示例(/etc/nginx/conf.d/node_app.conf):
- upstream node_app { server 10.0.0.11:8001; server 10.0.0.11:8002; server 10.0.0.12:8001; server 10.0.0.12:8002; }
- server { listen 80; location / { proxy_pass http://node_app; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
- 生效与运维:
sudo systemctl start nginx,按需reload;配合 PM2 的start/restart/status/logs做滚动更新与观测。
四、容器化方案(Docker 与 Docker Compose)
- Dockerfile(示例):
- FROM node:14
- WORKDIR /usr/src/app
- COPY package*.json ./
- RUN npm install
- COPY . .
- EXPOSE 8000
- CMD [“node”, “app.js”]
- Docker Compose(单机多实例示例):
- version: ‘3’
- services:
- app:
- build: .
- ports: [“8000:8000”]
- deploy: replicas: 4
- app:
- 启动:
docker-compose up --scale app=4(开发/测试便捷;生产建议使用 Kubernetes 或更高阶编排)。
五、生产要点与建议
- 进程与内存:为 PM2 设置
instances: 'max'或合理数值,并配置max_memory_restart: '1G'防止内存泄漏拖垮实例。 - 日志与监控:统一收集 PM2 logs 与 Nginx access/error,接入 Grafana + Prometheus 或类似体系做指标与告警。
- 优雅停机与更新:使用 PM2 reload 实现零停机重启;Nginx 建议开启 proxy_next_upstream 与合理 超时,减少失败请求影响。
- 安全与网络:仅暴露 80/443(Nginx),Node 进程绑定 127.0.0.1 或内网地址;开启 防火墙 与 SELinux 合规策略;对外域名使用 HTTPS/TLS。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Node.js在CentOS上的集群部署方案是什么
本文地址: https://pptw.com/jishu/770620.html
