在 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 實例。