首页主机资讯Ubuntu Nodejs如何负载均衡

Ubuntu Nodejs如何负载均衡

时间2025-12-12 10:12:04发布访客分类主机资讯浏览243
导读:Ubuntu 上部署 Node.js 负载均衡的实用方案 一 方案总览 使用 Nginx 或 HAProxy 作为反向代理/负载均衡器,将请求分发到多个 Node.js 实例,适合生产环境,配置简单、稳定且具备健康检查、日志与多种调度策略...

Ubuntu 上部署 Node.js 负载均衡的实用方案

一 方案总览

  • 使用 NginxHAProxy 作为反向代理/负载均衡器,将请求分发到多个 Node.js 实例,适合生产环境,配置简单、稳定且具备健康检查、日志与多种调度策略。
  • 在单机上用 Node.js 集群模式(cluster) 充分利用多核 CPU,属于进程内扩展,可与前两种方案叠加使用(进程内多实例 + 外部负载均衡器)。

二 使用 Nginx 作为反向代理

  • 安装与启用
    • 安装:sudo apt update & & sudo apt install nginx
    • 验证:sudo nginx -t
    • 热重载:sudo systemctl reload nginx
  • 基本配置示例(/etc/nginx/sites-available/default 或 /etc/nginx/nginx.conf 的 http 块内)
    • 定义上游与转发规则,注意为 HTTP/1.1WebSocket 设置升级头;多实例示例包含 3000/3001/3002
    • 可按需调整负载均衡策略(如 least_conn、ip_hash、权重)。
  • 配置片段
    • http { upstream node_app { least_conn; # 最少连接 server 127.0.0.1:3000 weight=3; server 127.0.0.1:3001 weight=2; server 127.0.0.1:3002; } server { listen 80; server_name yourdomain.com; location / { proxy_pass http://node_app; 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_set_header Upgrade $http_upgrade; proxy_set_header Connection ‘Upgrade’; proxy_cache_bypass $http_upgrade; } } }

三 使用 HAProxy 作为负载均衡器

  • 安装与启用
    • 安装:sudo apt update & & sudo apt install haproxy
    • 验证:sudo haproxy -c -f /etc/haproxy/haproxy.cfg
    • 重启:sudo systemctl restart haproxy
  • 基本配置示例(/etc/haproxy/haproxy.cfg)
    • 定义前端监听 :80,后端使用 roundrobin 调度并开启 check 健康检查;可按需改为 leastconn、source/ip-hash 等策略。
  • 配置片段
    • global log /dev/log local0 log /dev/log local1 notice daemon maxconn 256 defaults log global mode http option httplog option dontlognull timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend http_front bind *:80 default_backend http_back backend http_back balance roundrobin server node1 127.0.0.1:3000 check server node2 127.0.0.1:3001 check server node3 127.0.0.1:3002 check

四 应用侧与运维要点

  • 启动多个 Node.js 实例
    • 建议将应用绑定到 127.0.0.1 各端口(如 3000/3001/3002),由负载均衡器对外暴露 80/443;生产环境使用 PM2 或 systemd 管理进程与自动重启。
  • 健康检查与摘除
    • Nginx 可用 max_fails/fail_timeoutproxy_next_upstream 配合实现故障摘除;HAProxy 使用 check 参数即可,必要时配置 httpchk 做应用层健康检查。
  • 会话保持
    • 无状态应用优先;有状态场景可用 ip_hash(Nginx)或 source(HAProxy)实现会话粘滞,或引入 Redis 等集中会话存储。
  • 静态资源与压缩
    • 将静态文件由 Nginx 直接服务,开启 gzip/brotli 压缩,降低 Node.js 负载并提升首屏性能。
  • 安全与合规
    • 仅暴露 80/443,在负载均衡器或边缘终止 TLS;设置合适的 security headers(如 CSP、X-Frame-Options、X-XSS-Protection);限制请求速率与并发连接。
  • 日志与观测
    • 启用 access/error 日志与 status 页面(HAProxy),结合 Prometheus + GrafanaELK 做指标与链路追踪,持续观测 5xx、延迟与后端健康分布。

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


若转载请注明出处: Ubuntu Nodejs如何负载均衡
本文地址: https://pptw.com/jishu/770261.html
Ubuntu Nodejs如何安全防护 Ubuntu Nodejs如何监控运行

游客 回复需填写必要信息