首页主机资讯如何在centos上配置nodejs的高可用架构

如何在centos上配置nodejs的高可用架构

时间2025-12-19 21:16:03发布访客分类主机资讯浏览321
导读:在 CentOS 上构建 Node.js 高可用架构 一、总体架构与组件 前端入口:使用 Nginx 作为反向代理与负载均衡,将请求分发到多个后端实例,并统一处理 HTTP/HTTPS、压缩、缓存、静态资源。 应用层高可用:每台应用服务器...

在 CentOS 上构建 Node.js 高可用架构

一、总体架构与组件

  • 前端入口:使用 Nginx 作为反向代理与负载均衡,将请求分发到多个后端实例,并统一处理 HTTP/HTTPS、压缩、缓存、静态资源
  • 应用层高可用:每台应用服务器启用 多进程集群(Node.js cluster 或 PM2 cluster),充分利用多核,并在进程异常退出时自动重启。
  • 进程管理:使用 PM2 进行进程守护、零停机重启、日志聚合与启动自恢复(配合 systemd 或云端自启动脚本)。
  • 数据与状态:后端依赖的 数据库/缓存 需具备高可用(如 MySQL 主从复制、MongoDB 副本集),会话等状态尽量外置(如 Redis),避免单点。
  • 监控与告警:接入 Prometheus + Grafana 监控进程与系统指标,结合日志系统实现故障定位与容量规划。
  • 可选容器化:使用 Docker + Kubernetes 编排多副本与自动扩缩容,进一步简化部署与故障转移。

二、单机多进程与进程管理

  • 安装 Node.js LTS(推荐):
    • 使用 NodeSource 仓库安装:
      • 安装命令:curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
      • 安装包:sudo yum install -y nodejs
      • 验证:node -vnpm -v
  • 使用 PM2 启动集群:
    • 全局安装:sudo npm install -g pm2
    • 启动应用(按 CPU 核数):pm2 start app.js -i max --name my-app
    • 常用运维:pm2 listpm2 monitpm2 logspm2 restart my-app
    • 开机自启:pm2 startup(按提示生成 systemd 服务并 pm2 save
  • 内置 Cluster 示例(可选):
    • 利用 cluster 模块 fork 多个 worker,主进程监听退出事件并重新 fork,提升容错与吞吐。

三、多机横向扩展与负载均衡

  • 部署拓扑:准备 ≥2 台应用服务器(每台运行 PM2 集群),前端部署 ≥2 台 Nginx 做入口高可用(可配合 Keepalived 做 VIP)。
  • Nginx 负载均衡示例(/etc/nginx/conf.d/myapp.conf):
    • 配置片段:
      upstream myapp {
          
          server 10.0.1.11:3000;
          
          server 10.0.1.12:3000;
          
          server 10.0.1.13:3000;
          
          # 可按需开启:least_conn;
           或 ip_hash;
      
      }
      
      
      server {
          
          listen 80;
          
          server_name myapp.example.com;
      
      
          location / {
          
              proxy_pass http://myapp;
          
              proxy_http_version 1.1;
          
              proxy_set_header Host $host;
          
              proxy_set_header X-Real-IP $remote_addr;
          
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          
              proxy_set_header X-Forwarded-Proto $scheme;
          
              proxy_read_timeout 60s;
      
          }
      
      }
          
      
    • 生效:sudo systemctl enable --now nginx
  • 健康检查与故障转移:Nginx 默认支持被动健康检查(失败请求会临时摘除节点);如需更强能力,可结合 Nginx Plus 主动健康检查或 HAProxy
  • 数据库高可用:
    • MySQL 主从复制:主库开启 binlog,从库设置 server-id 与复制账号,建立复制链路,实现读写分离与故障切换基础。
    • MongoDB 副本集:部署 3/5/7 节点副本集,自动选举与故障转移。

四、容器化与 Kubernetes 编排(可选)

  • Docker 镜像示例(Dockerfile):
    FROM node:18-alpine
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci --only=production
    COPY . .
    EXPOSE 3000
    CMD ["node","server.js"]
    
    • 构建与运行:docker build -t myapp:latest .docker run -p 3000:3000 myapp:latest
  • Kubernetes 最小可用清单:
    • Deployment(副本数 ≥3,滚动更新策略):
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nodejs-app
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: nodejs
        strategy:
          type: RollingUpdate
          rollingUpdate:
            maxSurge: 1
            maxUnavailable: 0
        template:
          metadata:
            labels:
              app: nodejs
          spec:
            containers:
            - name: app
              image: myapp:latest
              ports:
              - containerPort: 3000
              resources:
                requests:
                  cpu: "100m"
                  memory: "128Mi"
                limits:
                  cpu: "500m"
                  memory: "256Mi"
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: nodejs-svc
      spec:
        selector:
          app: nodejs
        ports:
        - protocol: TCP
          port: 80
          targetPort: 3000
        type: LoadBalancer
      
    • 应用与运维:kubectl apply -f deployment.yaml;按需配置 HPA 自动扩缩容。

五、监控、日志与运维要点

  • 监控与告警:
    • 使用 PM2 自带监控:pm2 monitpm2 list
    • 系统与应用指标接入 Prometheus + Grafana,对 CPU、内存、事件循环延迟、HTTP 5xx、响应时延 设置告警阈值。
  • 日志管理:
    • PM2 日志聚合:pm2 logs
    • 结构化日志(JSON)与落盘,结合 fluentd/filebeat + Elasticsearch/Kafka 做检索与分析。
  • 安全与性能:
    • 全站 HTTPS/TLS;启用 防火墙(firewalld) 仅开放 80/443
    • 静态资源走 Nginx 缓存;合理配置 连接超时、keepalive、压缩
    • 依赖与系统定期更新,回滚方案与灰度发布流程就绪。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在centos上配置nodejs的高可用架构
本文地址: https://pptw.com/jishu/776660.html
centos composer如何进行全局配置 centos nodejs性能调优有哪些技巧

游客 回复需填写必要信息