NGINX(3) - Load-Balancing Model

本文會探討 NGINX 中分配請求的策略。

NGINX 中分配請求的策略如下:

  1. Round Robin
  2. Least Connections
  3. IP Hash
  4. Generic Hash
  5. Least Time
  6. Random

1. Round Robin:

預設算法,請求依照權重 (無權重)方式分配。

upstream demo {
   # 不指定附載均衡的方法
   server example1.com;
   server example2.com;
}

2. Least Connections:

同時考量連接數量及權重,選擇最小的。

upstream demo {
    least_conn;
    server example1.com;
    server example2.com;
}

3. IP Hash:

使用 IP 計算 Hash,保證同 IP 會由同台 backend 處理

upstream demo {
    ip_hash;
    server example1.com;
    server example2.com;
}

IPv4 用前三碼 (如: IP 為 192.168.50.xx 使用 192,168,50 計算 Hash),IPv6 用全部字元。


4. Generic Hash:

計算特定變數的 Hash (通常會用 UID)。


5. Least Time:

NGINX Plus 才有的功能。類似搶答,先舉手的人先獲勝。


6. Random:

隨機選一或隨機選二,若隨機選二則需要再提供一個選則策略。

隨機選一:

upstream demo {
    random;
    server example1.com;
    server example2.com;
    server example3.com;
    server example4.com;
    server example5.com;
    server example6.com;
}

隨機選二再判斷最小連接:

upstream demo {
    random two least_conn;
    server example1.com;
    server example2.com;
    server example3.com;
    server example4.com;
    server example5.com;
    server example6.com;
}

留言

熱門文章