首页主机资讯Node.js在CentOS上的集群部署方案是什么

Node.js在CentOS上的集群部署方案是什么

时间2025-12-12 16:11:03发布访客分类主机资讯浏览573
导读: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 statuspm2 logspm2 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.isMasterfork() 多个工作进程;子进程 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;配合 PM2start/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
    • 启动:docker-compose up --scale app=4(开发/测试便捷;生产建议使用 Kubernetes 或更高阶编排)。

五、生产要点与建议

  • 进程与内存:为 PM2 设置 instances: 'max' 或合理数值,并配置 max_memory_restart: '1G' 防止内存泄漏拖垮实例。
  • 日志与监控:统一收集 PM2 logsNginx 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
Node.js在CentOS上的内存管理技巧有哪些 CentOS环境下Node.js模块如何安装

游客 回复需填写必要信息