当前位置:

首页 > 编程开发 > Node.js在Linux上的集群部署

Node.js在Linux上的集群部署

在Linux上,Node.js应用通过cluster模块利用多核CPU创建多个工作进程共享端口,实现负载均衡。使用PM2进行进程管理,支持自动重启、日志等功能。生产环境需配置Nginx反向代理,将请求转发至Node.js集群,以提升安全性与性能。

想让Node.js应用在Linux上跑得更快、更稳?集群部署是个好办法,它能把多核CPU的性能真正榨干。下面就来一步步拆解这个过程,从零开始,把集群跑起来。

Node.js在Linux上的集群部署

1. 安装Node.js

先把基础打好——确保系统里装上了Node.js。如果还没装,直接从官方源拉一份,或者用NodeSource的脚本一键搞定。

# 使用NodeSource安装Node.js
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

2. 创建Node.js应用程序

假设你已经有个现成的应用,或者先写个简单的练练手。下面这个就是最基础的HTTP服务,监听3000端口,返回一句“Hello World”。

// 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/');
});

3. 使用Node.js集群模块

Node.js自带的cluster模块就是干这个的——它能创建多个工作进程,所有进程共享同一个端口,实现负载均衡。核心逻辑很简单:主进程负责fork出子进程,每个子进程都跑同样的HTTP服务。

// cluster-app.js
const cluster = require('cluster');
const http = require('http');
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(3000);

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

4. 运行集群应用程序

直接运行刚才那个文件,就能看到主进程和多个工作进程同时启动。

node cluster-app.js

5. 使用PM2进行进程管理

手动管理进程总归不便,这时候PM2就该出场了。它不仅是进程守护,还能自动重启、日志管理,甚至帮你做负载均衡。

安装PM2

sudo npm install pm2 -g

启动应用程序

用pm2 start启动,加个-i max参数,PM2会自动根据CPU核心数创建工作进程,省心又省力。

pm2 start cluster-app.js -i max

查看应用程序状态

随时查看进程状态和实时日志,对排查问题非常有用。

pm2 status
pm2 logs

停止应用程序

pm2 stop cluster-app

重启应用程序

pm2 restart cluster-app

6. 配置Nginx作为反向袋里

到了生产环境,通常还会在Node.js前面加一层Nginx,做反向袋里。这样既能提升安全性,又能利用Nginx的静态文件处理、缓存等能力。

安装Nginx

sudo apt-get update
sudo apt-get install nginx

配置Nginx

编辑Nginx的配置文件(一般位于/etc/nginx/sites-a vailable/default),把请求转发到Node.js的3000端口。

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

重启Nginx

sudo systemctl restart nginx

至此,你的Node.js集群应用已经通过Nginx对外提供服务了。整个流程走下来,从单进程到多进程,再到进程管理和反向袋里,一个生产级部署方案就成型了。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 Linux
相关文章 更多
linux删除用户与用户组的方法及命令教程
linux删除用户与用户组的方法及命令教程

掌握Linux中删除用户和用户组的正确方法,避免残留文件和进程冲突。本文深入解析userdel和groupdel命令的参数用法,提供处理“用户仍在使用”等常见错误的实战方案。

Linux如何开启端口号?开放端口命令详解
Linux如何开启端口号?开放端口命令详解

详细讲解Linux如何开启端口号以及常用的开放端口命令。

crossover卸载软件下载及重新安装教程
crossover卸载软件下载及重新安装教程

遇到CrossOver运行错误或需要更新版本时,如何彻底卸载旧版并干净重装?本教程详解macOS和Linux下的卸载步骤、残留文件清理方法及官方下载渠道,确保软件环境纯净稳定。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
IntelliJ IDEA macOS版
IntelliJ IDEA macOS版
Mac

IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

PyCharm macOS版
PyCharm macOS版
Mac

JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

WebStorm macOS版
WebStorm macOS版
Mac

JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

WINDOWS 更多
IntelliJ IDEA Windows版
IntelliJ IDEA Windows版
Windows

JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

PhpStorm Windows版
PhpStorm Windows版
Windows

PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

PyCharm Windows版
PyCharm Windows版
Windows

PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,