当前位置: 首页
编程语言
Linux Node.js集群部署方法详解

Linux Node.js集群部署方法详解

热心网友 时间:2026-06-12
转载

在Linux上利用Node js内置cluster模块可按CPU核数fork多进程实现集群部署,主进程管理子进程,工作进程共享HTTP服务。生产环境推荐PM2工具,通过`pm2startapp js-imax`自动管理多进程,支持自动重启、日志收集和零停机重载。

在 Linux 环境下借助 Node.js 实现集群部署有多种方式,其中最为基础且常用的就是直接使用 Node.js 内置的 cluster 模块。下面将逐步拆解整个流程,并介绍如何通过 PM2 简化集群管理。

Linux上Node.js如何进行集群部署

1. 安装 Node.js

第一步自然是安装 Node.js 环境。如果 Linux 系统中尚未安装,可通过 NodeSource 提供的脚本快速完成:

curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

这里以 Node.js 14.x 版本为例,你可以根据实际需求调整版本号。

2. 创建一个简单的 Node.js 应用

先编写一个最基础的 HTTP 服务,方便后续演示集群效果。将文件命名为 app.js

const http = require('http');
const server = http.createServer((req, res) => {
  res.writeHead(200);
  res.end('Hello World\n');
});
server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

此时在终端执行 node app.js 即可启动服务,但这仍然是单进程运行。

3. 使用 cluster 模块实现多进程

接下来是核心步骤——通过 cluster 模块将应用改造为多进程模式。修改 app.js,让主进程(Master)根据 CPU 核心数创建对等工作进程(Worker):

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  // 按 CPU 核心数创建工作进程
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`worker ${worker.process.pid} died`);
  });
} else {
  // 工作进程共享同一个 TCP 连接(即 HTTP 服务)
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('Hello World\n');
  }).listen(3000);

  console.log(`Worker ${process.pid} started`);
}

这段代码的设计清晰明了:主进程仅负责管理和创建子进程,实际请求处理由 forked 的 Worker 进程完成。

4. 运行应用

在终端直接执行:

node app.js

控制台会输出 Master 及各个 Worker 的 PID,表明多进程集群已经启动。

5. 验证集群是否生效

通过 ps 命令查看进程列表,可以确认多个 Node.js 进程正在并行运行:

ps aux | grep node

你将看到 Master 进程与多个 Worker 进程同时存在,每个 Worker 通常对应一个 CPU 核心。

6. 使用 PM2 实现更高级的集群管理

cluster 模块虽然功能足够,但在生产环境中直接管理进程仍有诸多不便——例如进程崩溃后的自动重启、日志收集、负载均衡策略等。此时 PM2 是更加成熟的解决方案。

安装 PM2

npm install pm2 -g

启动应用(自动利用所有 CPU 核心)

pm2 start app.js -i max

-i max 参数使 PM2 根据 CPU 核心数自动启动相应数量的进程,效果与手动 fork 相同,但省去了自行编写 cluster 逻辑的麻烦。

查看应用运行状态

pm2 list

实时监控各项指标

pm2 monit

日志查看与管理

pm2 logs

使用 PM2 后,进程管理、健康检查、零停机重载等功能都简化为几条命令。整体来说,如果你是首次接触 Node.js 集群部署,建议先用 cluster 模块理解底层原理,再切换到 PM2 用于生产环境,这样既能掌握核心机制,又能获得工程化的便利。

来源:https://www.yisu.com/ask/93166736.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
IDEA中SpringBoot项目热部署实现指南

IDEA中SpringBoot项目热部署实现指南

Springboot项目在IDEA中实现热部署需依次完成:开启自动编译(静态与动态编译)、启用热部署策略、引入spring-boot-devtools依赖、关闭浏览器缓存,最后启动测试即可生效,省去手动重启时间,大幅提升开发效率。

时间:2026-07-11 06:47
Java实现Excel转JSON的代码详解

Java实现Excel转JSON的代码详解

使用Java结合FreeSpire XLS库可自动将Excel转为JSON,通过读取工作表并映射为键值对,高效支持数据迁移、报表导出与系统对接,大幅提升效率并消除手动录入错误。

时间:2026-07-11 06:47
Golang高效布谷鸟过滤器多字符集字符串过滤

Golang高效布谷鸟过滤器多字符集字符串过滤

布谷鸟过滤器支持删除操作,通过指纹截断与双哈希定位实现多字符集高效过滤。指纹截断需采用fnv64a或xxhash快速哈希并取低8位,桶索引使用独立双哈希避免假阳性。并发安全需以固定数组配合sync atomic实现。

时间:2026-07-11 06:47
Java使用Poi-tl按Word模板生成动态表格

Java使用Poi-tl按Word模板生成动态表格

Poi-tl是Word导出工具,文档周全,支持多级合并表头生成。通过{{text}}、{{?var}}、{{ table}}标签处理模板,传入TableRenderData对象即可动态渲染表格。示例展示用户信息表格生成,并提供工具类消除表格首行缩进,确保格式正确。

时间:2026-07-11 06:47
Go语言微服务集成Swagger生成交互式API文档完整教程

Go语言微服务集成Swagger生成交互式API文档完整教程

在Go微服务中集成Swagger常见四大问题:swaginit初始化失败需确保存在packagemain及注释;SwaggerUI加载失败因路由映射错误或未导入docs;@Param注解必须严格遵循格式;部署后接口文档显示localhost因硬编码host,应删除或通过环境变量动态注入。

时间:2026-07-11 06:47
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜