首页主机资讯CentOS Node.js集群搭建方法

CentOS Node.js集群搭建方法

时间2025-11-28 11:31:05发布访客分类主机资讯浏览294
导读:CentOS 上搭建 Node.js 集群的实用方案 一 环境准备 安装 Node.js 与 npm(建议使用较新的 LTS 版本): 安装 EPEL 源后使用 yum 安装:sudo yum install -y epel-relea...

CentOS 上搭建 Node.js 集群的实用方案

一 环境准备

  • 安装 Node.js 与 npm(建议使用较新的 LTS 版本):
    • 安装 EPEL 源后使用 yum 安装:sudo yum install -y epel-release & & sudo yum install -y nodejs npm
    • 验证版本:node -v、npm -v
  • 准备示例应用(单文件即可,便于验证集群):
    • 端口建议使用 3000/8000 等未被占用的端口
    • 后续用 PM2Nginx 对外暴露服务

二 方案一 使用 PM2 快速启用集群

  • 全局安装 PM2:sudo npm install pm2 -g
  • 启动集群(按 CPU 核心数):
    • pm2 start app.js -i max
    • 或指定实例数:pm2 start app.js -i 4
  • 常用管理命令:
    • 查看状态:pm2 status
    • 查看日志:pm2 logs
    • 重启/停止:pm2 restart / pm2 stop
  • 生产常用配置(ecosystem.config.js):
    • module.exports = { apps: [{ name: ‘api’, script: ‘./app.js’, instances: ‘max’, autorestart: true, max_memory_restart: ‘1G’, env: { NODE_ENV: ‘production’ } } ] } ;
    • 启动:pm2 start ecosystem.config.js
  • 设置开机自启:pm2 startup(按提示完成系统服务注册)

三 方案二 使用 Node.js 内置 Cluster 模块

  • 最小可用示例(cluster.js):
    • const cluster = require(‘cluster’); const http = require(‘http’); const numCPUs = require(‘os’).cpus().length;
    • if (cluster.isMaster) { for (let i = 0; i < numCPUs; i++) cluster.fork(); cluster.on(‘exit’, (w) => cluster.fork()); }
    • else http.createServer((req,res)=> { res.writeHead(200); res.end(‘hello\n’); } ).listen(3000);
  • 运行:node cluster.js
  • 说明:
    • 主进程负责 fork 工作进程,工作进程共享同一 TCP 端口
    • 内置分发策略通常为 轮询(Round Robin),可结合业务特点选择更合适的策略

四 多实例负载均衡与高可用

  • 使用 Nginx 作为反向代理与负载均衡器:
    • 安装:sudo yum install -y nginx
    • 配置示例(/etc/nginx/conf.d/node_app.conf):
      • upstream node_app { server 127.0.0.1:3000; server 127.0.0.1:3001; server 127.0.0.1:3002; server 127.0.0.1:3003; }
      • 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 & & sudo systemctl enable nginx
  • 多机横向扩展:
    • upstream 中写入多台后端 IP:端口,Nginx 自动分发请求,提高整体 可用性与吞吐
    • 负载均衡算法可选 least_conn 等以适配不同访问特征

五 验证与运维要点

  • 验证集群生效:
    • 本地或远程访问:curl http://服务器IP:端口/,观察响应;多进程/多实例下请求会被分发到不同工作进程
  • 进程守护与自动重启:
    • 使用 PM2 的 autorestart、max_memory_restart 等策略,异常退出可自动拉起,缩短故障恢复时间
  • 会话与有状态:
    • 集群/多实例下建议使用 Redis 集中存储会话(如 express-session + connect-redis),避免单机粘滞与状态丢失
  • 监控与日志:
    • PM2:pm2 monit、pm2 logs;必要时接入 Prometheus/Grafana 做指标可视化与告警
  • 数据库与应用依赖:
    • 数据库建议配置 高可用(如 MySQL 主从MongoDB 副本集),避免单点故障向上传导

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS Node.js集群搭建方法
本文地址: https://pptw.com/jishu/758856.html
Linux dropped解决方案 CentOS Node.js版本兼容性问题

游客 回复需填写必要信息