溫馨提示×

Ubuntu Node.js集群如何搭建與管理

小樊
39
2025-08-19 07:26:15
欄目: 編程語言

一、搭建Ubuntu Node.js集群

1. 基礎環境準備

  • 安裝Node.js和npm

    sudo apt update
    sudo apt install nodejs npm
    

    驗證安裝:node -v、npm -v。

  • 安裝PM2(進程管理器)

    sudo npm install pm2 -g
    

    驗證安裝:pm2 -v。

2. 集群模式配置

  • 方式一:使用Node.js內置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`);
      for (let i = 0; i < numCPUs; i++) {
        cluster.fork(); // 啟動工作進程
      }
      cluster.on('exit', (worker) => {
        console.log(`Worker ${worker.process.pid} died`);
      });
    } else {
      http.createServer((req, res) => {
        res.writeHead(200);
        res.end('Hello World\n');
      }).listen(3000);
      console.log(`Worker ${process.pid} started`);
    }
    

    運行應用:node app.js,通過ps aux | grep node查看進程數是否等于CPU核心數。

  • 方式二:使用PM2集群模式
    創建ecosystem.config.js

    module.exports = {
      apps: [{
        name: 'node-app',
        script: 'app.js',
        instances: 'max', // 按CPU核心數自動啟動實例
        exec_mode: 'cluster'
      }]
    };
    

    啟動集群:pm2 start ecosystem.config.js。

3. 負載均衡(可選)

  • 使用Nginx反向代理
    安裝Nginx:sudo apt install nginx,編輯配置文件/etc/nginx/sites-available/default
    upstream node_backend {
      server 127.0.0.1:3000;
      server 127.0.0.1:3001;
      server 127.0.0.1:3002;
    }
    server {
      listen 80;
      location / {
        proxy_pass http://node_backend;
      }
    }
    
    重啟Nginx:sudo systemctl restart nginx,需確保Node.js應用分別運行在不同端口(如3000、3001、3002)。

二、集群管理

1. 進程管理

  • 查看狀態pm2 list。
  • 停止/重啟應用pm2 stop <app_name>、pm2 restart <app_name>。
  • 查看日志pm2 logs。

2. 高可用與擴展

  • 容器化部署(Docker + Kubernetes)
    • 編寫Dockerfile:基于Node.js鏡像構建應用容器。
    • 使用Kubernetes編排集群,實現自動擴縮容和故障轉移。
  • 監控與告警
    • 集成Prometheus + Grafana監控集群性能。
    • 配置PM2自動重啟策略:pm2 save + pm2 startup(系統重啟后自動恢復進程)。

三、注意事項

  • 端口沖突:確保集群中各實例端口不重復,或通過Nginx統一代理。
  • 數據一致性:若集群需共享數據,建議使用Redis等中間件。
  • 安全配置:生產環境需配置HTTPS、防火墻規則及定期更新依賴。

參考資料:

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女