Ubuntu Nodejs如何负载均衡
导读:Ubuntu 上部署 Node.js 负载均衡的实用方案 一 方案总览 使用 Nginx 或 HAProxy 作为反向代理/负载均衡器,将请求分发到多个 Node.js 实例,适合生产环境,配置简单、稳定且具备健康检查、日志与多种调度策略...
Ubuntu 上部署 Node.js 负载均衡的实用方案
一 方案总览
- 使用 Nginx 或 HAProxy 作为反向代理/负载均衡器,将请求分发到多个 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.1 与 WebSocket 设置升级头;多实例示例包含 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_timeout 与 proxy_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 + Grafana 或 ELK 做指标与链路追踪,持续观测 5xx、延迟与后端健康分布。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Nodejs如何负载均衡
本文地址: https://pptw.com/jishu/770261.html
