溫馨提示×

Node.js 應用如何在 Linux 上實現負載均衡

小樊
35
2025-03-16 12:36:42
欄目: 云計算

在 Linux 上為 Node.js 應用實現負載均衡,可以使用多種方法。以下是幾種常見的方法:

1. 使用 Nginx 作為反向代理

Nginx 是一個高性能的 HTTP 和反向代理服務器,可以用來分發流量到多個 Node.js 實例。

安裝 Nginx

sudo apt update
sudo apt install nginx

配置 Nginx

編輯 Nginx 配置文件 /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

2. 使用 HAProxy 作為負載均衡器

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

3. 使用 systemd 實現負載均衡

systemd 可以用來管理多個 Node.js 實例,并通過 systemdsocket 激活功能來實現負載均衡。

創建 systemd 服務文件

創建一個 systemd 服務文件 /etc/systemd/system/node_app@.service。

[Unit]
Description=Node.js Application %i
After=network.target

[Service]
ExecStart=/usr/bin/node /path/to/your/app.js
Restart=always
User=your_user
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

創建 systemd socket 文件

創建一個 systemd socket 文件 /etc/systemd/system/node_app.socket。

[Unit]
Description=Socket for Node.js Application

[Socket]
ListenStream=80
Service=node_app@%i

[Install]
WantedBy=sockets.target

啟用并啟動 systemd 服務

sudo systemctl enable --now node_app.socket

4. 使用 Docker 和 Docker Compose

如果你使用 Docker 來部署 Node.js 應用,可以使用 Docker Compose 來管理多個實例,并通過 Docker 的內置負載均衡功能來實現負載均衡。

創建 Dockerfile

創建一個 Dockerfile 來構建你的 Node.js 應用鏡像。

FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

創建 docker-compose.yml

創建一個 docker-compose.yml 文件來定義多個 Node.js 實例。

version: '3'
services:
  node_app:
    build: .
    ports:
      - "3000"
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure

啟動 Docker Compose

docker-compose up -d

通過以上方法,你可以在 Linux 上為 Node.js 應用實現負載均衡。選擇哪種方法取決于你的具體需求和環境。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女