在 Linux 上实现 Node.js 应用的负载均衡,通常有以下几种方法:
Nginx 是一个高性能的 HTTP 和反向代理服务器,可以用来分发请求到多个 Node.js 实例。
安装 Nginx:
sudo apt update sudo apt install nginx
配置 Nginx: 编辑 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/default
),添加以下内容:
http { upstream node_app { 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_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; } } }
重启 Nginx:
sudo systemctl restart nginx
HAProxy 是一个专业的负载均衡器和代理服务器,适用于高可用性和高性能的环境。
安装 HAProxy:
sudo apt update sudo apt install haproxy
配置 HAProxy: 编辑 HAProxy 配置文件(通常位于 /etc/haproxy/haproxy.cfg
),添加以下内容:
global log /dev/log local0 log /dev/log local1 notice daemon 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
重启 HAProxy:
sudo systemctl restart haproxy
PM2 是一个进程管理器,可以用来管理和监控 Node.js 应用,并且支持负载均衡。
安装 PM2:
npm install pm2 -g
启动多个 Node.js 实例:
pm2 start app.js -i max
这里的 -i max
表示根据 CPU 核心数启动相应数量的实例。
配置 PM2 负载均衡: PM2 默认会进行负载均衡,无需额外配置。
如果你使用 Docker 部署 Node.js 应用,可以使用 Docker Compose 来管理多个容器,并通过 Docker 内置的负载均衡功能。
创建 docker-compose.yml
文件:
version: '3' services: app: image: your-node-app-image ports: - "3000" deploy: replicas: 3 placement: constraints: - node.role == worker
启动服务:
docker-compose up -d
Docker Compose 会自动为你的服务创建多个副本,并进行负载均衡。
以上方法各有优缺点,选择哪种方法取决于你的具体需求和环境。Nginx 和 HAProxy 适用于需要高性能和灵活配置的场景,而 PM2 和 Docker Compose 则更适合快速部署和管理多个 Node.js 实例。