1. 程式人生 > >nginx實現http負載均衡的幾種排程演算法具體補充

nginx實現http負載均衡的幾種排程演算法具體補充

首先知道一點:

upstream 支援的狀態引數

在HTTP Upstream模組中,可以通過server指令指定後端伺服器的IP地址和埠,同時還可以設定每個後端伺服器在負載均衡排程中的狀態。常用的狀態有:      

  • down,表示當前的server暫時不參與負載均衡。

  • backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因此這臺機器的壓力最輕。

  • max_fails,允許請求失敗的次數,預設為1。當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤。

  • fail_timeout,在經歷了max_fails次失敗後,暫停服務的時間。max_fails可以和fail_timeout一起使用。

注,當負載排程演算法為ip_hash時,後端伺服器在負載均衡排程中的狀態不能是weight和backup。

1.輪詢(預設)。每個請求按時間順序逐一分配到不同的後端伺服器,如果後端某臺伺服器宕機,故障系統被自動剔除,使使用者訪問不受影響。Weight 指定輪詢權值,Weight值越大,分配到的訪問機率越高,主要用於後端每個伺服器效能不均的情況下

vim balance-http.conf

upstream balance{

        server 127.0.0.1:81 weight=1 ;

server 172.16.8.100:81 weight=1 ;

server 127.0.0.1:81 backup;

}

在backup主機上定義預設頁,echo "this is backup" > backup.html

當前兩臺機器出現故障無法訪問時,我們可以定義backup主機來供使用者訪問,這樣可以提高使用者體驗。

2.ip_hash。每個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個後端伺服器,有效解決了動態網頁存在的session共享問題。

vim balance-http.conf

upstream balance{

ip_hash;

        server 127.0.0.1:81 weight=1max_fails=2 fail_timeout=2;

server 172.16.8.100:81 weight=1max_fails=2 

fail_timeout=2;

}

不斷重新整理頁面後,會一直停留在某一頁面。