天天看點

Nginx七層負載均衡的幾種排程算法

Nginx是一款輕量級的高性能web伺服器,同時也是一款非常優秀的負載均衡器和反向代理伺服器。由于支援強大的正則比對規則、動靜分離、URLrewrite功能及安裝配置簡單且對網絡穩定性依賴非常小等優點,是以常用來做為七層負載均衡使用。在硬體不差的情況下,通常可以穩定支援幾萬的并發連接配接,在硬體性能足夠好,且對系統核心參數及Nginx配置進行優化甚至可以達到10萬以上的并發。

以下是Nginx作為七層負載均衡常用的幾種排程算法和适用的業務場景

1、輪詢(預設排程算法)

特點:每個請求按時間順序逐一配置設定到不同的後端伺服器處理。

 适用業務場景:後端伺服器硬體性能配置完全一緻,業務無特殊要求時使用。

upstream backendserver {

server 192.168.0.14:80 max_fails=2 fail_timeout=10s;

server 192.168.0.15:80 max_fails=2 fail_timeout=10s;

}

2、權重輪詢

特點:指定輪詢幾率,weight值(權重)和通路比例成正比,使用者請求按權重比例配置設定。

 适用業務場景:用于後端伺服器硬體性處理能力不平均的情形。

upstream backendserver {

server 192.168.0.14:80 weight=5 max_fails=2 fail_timeout=10s;

server 192.168.0.15:80 weight=10 max_fails=2 fail_timeout=10s;

}

3、ip_hash

特點:每個請求按通路ip的hash結果配置設定,這樣每個訪客固定通路一個後端伺服器,可以解決session會話保持問題。

 适用業務場景:适用于需要賬号登入的系統,會話連接配接保持的業務。

upstream backendserver {

ip_hash;

server 192.168.0.14:80 max_fails=2 fail_timeout=10s;

server 192.168.0.15:80 max_fails=2 fail_timeout=10s;

}

4、最少連接配接數 least_conn

特點:按nginx反向代理與後端伺服器之間的連接配接數,連接配接數最少的優先配置設定。

适用業務場景:适用于用戶端與後端伺服器需要保持長連接配接的業務。

upstream backendserver {

least_conn;

server 192.168.0.14:80 max_fails=2 fail_timeout=10s;

server 192.168.0.15:80 max_fails=2 fail_timeout=10s;

}

5、fair(需編譯安裝第三方子產品 ngx_http_upstream_fair_module)

特點:按後端伺服器的響應時間來配置設定請求,響應時間短的優先配置設定。

 适用業務場景:對通路響應速度有一定要求的業務。

upstream backendserver {

fair;

server 192.168.0.14:80 max_fails=2 fail_timeout=10s;

server 192.168.0.15:80 max_fails=2 fail_timeout=10s;

}

6、url_hash(需編譯安裝第三方子產品 ngx_http_upstream_hash_module)

特點:按通路url的hash結果來配置設定請求,使同一個url通路到同一個後端伺服器。

 适用業務場景:适用于後端伺服器為緩存伺服器時比較有效。

upstream backendserver {

server 192.168.0.14:80 max_fails=2 fail_timeout=10s;

server 192.168.0.15:80 max_fails=2 fail_timeout=10s;

hash $request_uri;

}