CentOS下Node.js如何实现集群部署

781
2025/4/14 18:32:08
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在CentOS系统下,使用Node.js实现集群部署可以通过多种方式来完成。以下是几种常见的方法:

方法一:使用PM2

PM2是一个功能强大的Node.js进程管理器,支持集群模式。

  1. 安装PM2

    npm install pm2 -g
    
  2. 启动集群 假设你的Node.js应用入口文件是app.js,可以使用以下命令启动一个包含4个工作进程的集群:

    pm2 start app.js -i 4
    
  3. 查看集群状态

    pm2 status
    
  4. 停止集群

    pm2 stop app
    
  5. 重启集群

    pm2 restart app
    

方法二:使用Node.js内置的Cluster模块

Node.js内置了Cluster模块,可以用来创建多个工作进程。

  1. 创建一个主进程文件(例如master.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(8000);
    
      console.log(`Worker ${process.pid} started`);
    }
    
  2. 启动主进程

    node master.js
    

方法三:使用Docker

如果你更喜欢使用Docker来部署Node.js应用,可以创建一个Dockerfile并使用Docker Compose来管理多个容器。

  1. 创建Dockerfile

    FROM node:14
    WORKDIR /usr/src/app
    COPY package*.json ./
    RUN npm install
    COPY . .
    EXPOSE 8000
    CMD ["node", "app.js"]
    
  2. 创建docker-compose.yml

    version: '3'
    services:
      app:
        build: .
        ports:
          - "8000:8000"
        deploy:
          replicas: 4
    
  3. 启动集群

    docker-compose up --scale app=4
    

方法四:使用Nginx反向代理

你可以使用Nginx作为反向代理,将请求分发到多个Node.js实例。

  1. 安装Nginx

    sudo yum install nginx -y
    
  2. 配置Nginx 编辑/etc/nginx/nginx.conf或创建一个新的配置文件(例如/etc/nginx/conf.d/node_app.conf):

    upstream node_app {
      server 127.0.0.1:8001;
      server 127.0.0.1:8002;
      server 127.0.0.1:8003;
      server 127.0.0.1:8004;
    }
    
    server {
      listen 80;
    
      location / {
        proxy_pass http://node_app;
        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;
      }
    }
    
  3. 启动Nginx

    sudo systemctl start nginx
    

通过以上几种方法,你可以在CentOS系统下实现Node.js的集群部署。选择哪种方法取决于你的具体需求和环境。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: CentOS Stream 8虚拟化实践指南