nginx實現http負載均衡的幾種排程演算法具體補充
-
down,表示當前的server暫時不參與負載均衡。
-
backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因此這臺機器的壓力最輕。
-
max_fails,允許請求失敗的次數,預設為1。當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤。
-
fail_timeout,在經歷了max_fails次失敗後,暫停服務的時間。max_fails可以和fail_timeout一起使用。
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
}
不斷重新整理頁面後,會一直停留在某一頁面。