nginx負載均衡的五種演算法

2021-10-06 21:16:50 字數 1686 閱讀 9399

1、輪詢(預設)

每個請求按時間順序逐一分配到不同的後端服務,如果後端某台伺服器宕機,自動剔除故障系統,使使用者訪問不受影響。

例如:

upstream bakend

2、weight(輪詢權值)

weight的值越大分配到的訪問概率越高,主要用於後端每台伺服器效能不均衡的情況下。或者僅僅為在主從的情況下設定不同的權值,達到合理有效的地利用主機資源。

指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。

例如:

upstream bakend

3、ip_hash

每個請求按訪問ip的雜湊結果分配,使來自同乙個ip的訪客固定訪問一台後端伺服器,並且可以有效解決動態網頁存在的session共享問題。

每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決session的問題。

例如:

upstream bakend

4、fair(第三方)

比 weight、ip_hash更加智慧型的負載均衡演算法,fair演算法可以根據頁面大小和載入時間長短智慧型地進行負載均衡,也就是根據後端伺服器的響應時間 來分配請求,響應時間短的優先分配。nginx本身不支援fair,如果需要這種排程演算法,則必須安裝upstream_fair模組。

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

例如:

upstream backend

5、url_hash(第三方)

按訪問的url的雜湊結果來分配請求,使每個url定向到一台後端伺服器,可以進一步提高後端快取伺服器的效率。nginx本身不支援url_hash,如果需要這種排程演算法,則必須安裝nginx的hash軟體包。

按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,後端伺服器為快取時比較有效。

注意:在upstream中加入hash語句,server語句中不能寫入weight等其他的引數,hash_method是使用的hash演算法。

例如:

upstream backend

在nginx upstream模組中,可以設定每台後端伺服器在負載均衡排程中的狀態,常用的狀態有:

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

weight 預設為1,weight越大,負載的權重就越大。

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

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

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

例如:

upstream bakend

參考博文:

nginx負載均衡的五種模式

1 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。upstream backserver 2 指定權重 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。upstream backserver 3 ip繫結 ip hash 每...

五種方式實現 nginx負載均衡

nginx可以根據客戶端ip進行負載均衡,在upstream裡設定ip hash,就可以針對同乙個c類位址段中的客戶端選擇同乙個後端伺服器,除非那個後端伺服器宕了才會換乙個。nginx的upstream目前支援的5種方式的分配 1 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺...

nginx的五種負載演算法

nginx weight url hash 是預設的,每乙個請求按順序逐一分配到不同的後端伺服器,如果後端伺服器 down 測試結果 root xxw conf for i in seq 10 do curl done 192.168.109.5it is work 192.168.109.3 it...