天天看點

Nginx幾種負載均衡算法及配置執行個體

nginx負載均衡(工作在七層“應用層”)功能主要是通過upstream子產品實作,nginx負載均衡預設對後端伺服器有健康檢測的能力,僅限于端口檢測,在後端伺服器比較少的情況下負載均衡能力表現突出。

nginx的幾種負載均衡算法:

1、輪詢(預設):每個請求按時間順序逐一配置設定到不同的後端伺服器,如果後端某台伺服器當機,則自動剔除故障機器,使使用者通路不受影響。

2、weight:指定輪詢權重,weight值越大,配置設定到的幾率就越高,主要用于後端每台伺服器性能不均衡的情況。

3、ip_hash:每個請求按通路ip的哈希結果配置設定,這樣每個訪客固定通路一個後端伺服器,可以有效的解決動态網頁存在的session共享問題。

4、fair(第三方):更智能的一個負載均衡算法,此算法可以根據頁面大小和加載時間長短智能地進行負載均衡,也就是根據後端伺服器的響應時間來配置設定請求,響應時間短的優先配置設定。如果想要使用此排程算法,需要nginx的upstream_fair子產品。

5、url_hash(第三方):按通路url的哈希結果來配置設定請求,使每個url定向到同一台後端伺服器,可以進一步提高後端緩存伺服器的效率。如果想要使用此排程算法,需要nginx的hash軟體包。

在upstream子產品中,可以通過server指令指定後端伺服器的ip位址和端口,同時還可以設定每台後端伺服器在負載均衡排程中的狀态,常用的狀态有以下幾種:

1、down:表示目前server暫時不參與負載均衡。

2、backup:預留的備份機,當其他所有非backup機器出現故障或者繁忙的時候,才會請求backup機器,這台機器的通路壓力最輕。

3、max_fails:允許請求的失敗次數,預設為1,配合fail_timeout一起使用

4、fail_timeout:經曆max_fails次失敗後,暫停服務的時間,預設為10s(某個server連接配接失敗了max_fails次,則nginx會認為該server不工作了。同時,在接下來的 fail_timeout時間内,nginx不再将請求分發給失效的server。)

下面是一個負載均衡的配置示例,這裡隻列出http配置段,省略了其他部配置設定置:

location / {

proxy_next_upstream http_500 http_502 error timeout invalid_header;

}

upstream負載均衡開始,通過upstream指定了一個負載均衡器的名稱為whsirserver,這個名稱可以自己定義,在後面proxy_pass直接調用即可。

proxy_next_upstream參數用來定義故障轉移政策,當後端伺服器節點傳回500、502和執行逾時等錯誤時,自動将請求轉發到upstream負載均衡器中的另一台伺服器,實作故障轉移。

繼續閱讀