Ubuntu上Node.js集群部署实现方法

作者:技术拾光时间:2026-07-27 07:59:59浏览:525

在Ubuntu上部署Node.js集群可通过内置cluster模块或PM2实现。cluster模块零依赖,主进程派生子进程共享端口,适合简单场景。PM2提供进程守护、负载均衡、日志管理、自动重启等运维功能,更适合生产环境,可确保高可用性。

在Ubuntu上搭建Node.js集群,有多种方案可供选择,核心目标始终是充分利用多核CPU性能,并保证服务高可用。以下介绍两种主流做法:直接使用Node.js内置的cluster模块,或借助PM2进程管理工具。

Ubuntu上Node.js集群部署实现方法

方法一:使用Node.js内置cluster模块

这是最原生的方式,无需额外安装依赖。核心思路是主进程(Master)派生子进程(Worker),每个Worker共享同一端口,由操作系统负责负载均衡。

  1. 准备一个简单的应用。假设根目录下app.js内容如下:

    // app.js
    const http = require('http');
    const cluster = require('cluster');
    const numCPUs = require('os').cpus().length;
    
    if (cluster.isMaster) {
      console.log(`Master ${process.pid} is running`);
      // Fork workers.
      for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
      }
      cluster.on('exit', (worker, code, signal) => {
        console.log(`worker ${worker.process.pid} died`);
      });
    } else {
      // Workers can share any TCP connection
      // In this case it is an HTTP server
      http.createServer((req, res) => {
        res.writeHead(200);
        res.end('hello world\n');
      }).listen(8000);
      console.log(`Worker ${process.pid} started`);
    }
    
  2. 运行方式简单,直接执行:

    node app.js

    应用会在每个CPU核心上启动一个Worker进程,共同处理请求。

方法二:使用PM2一键部署集群

PM2是Node.js生态中最流行的进程管理工具,能将集群部署简化到一条命令。它内置负载均衡、进程守护、日志管理等功能,适合生产环境。

  1. 安装PM2(全局安装):

    npm install pm2 -g
  2. 启动应用时,使用-i参数指定Worker数量。例如,充分利用CPU核心:

    pm2 start app.js -i max

    -i max会自动根据CPU核心数启动相应数量的Worker。也可手动指定数量,如-i 4。

  3. 日常管理便捷。查看运行状态:

    pm2 status
  4. 停止应用:

    pm2 stop app
  5. 重启应用:

    pm2 restart app
  6. 查看日志:

    pm2 logs app

两种方法各有优劣。内置cluster模块零依赖,适合对底层控制有较高要求的场景;PM2则提供更完整的运维体验,包括进程守护、自动重启、零停机更新等。根据实际需求选择即可,没有绝对的好坏之分。