Nginx使用upstream實現負載均衡

2021-09-02 17:18:15 字數 1789 閱讀 7507

upstream模組相關說明

1、upstream模組應放於nginx.conf配置的http{}標籤內

2、upstream模組預設演算法是wrr (權重輪詢 weighted round-robin)

一、分配方式

nginx的upstream支援5種分配方式,下面將會詳細介紹,其中前三種為nginx原生支援的分配方式,後兩種為第三方支援的分配方式。

1、輪詢 

輪詢是upstream的預設分配方式,即每個請求按照時間順序輪流分配到不同的後端伺服器,如果某個後端伺服器down掉後,能自動剔除。

upstream backend
2、weight 

輪詢的加強版,即可以指定輪詢比率,weight和訪問機率成正比,主要應用於後端伺服器異質的場景下。

upstream backend
3、ip_hash

每個請求按照訪問ip(即nginx的前置伺服器或者客戶端ip)的hash結果分配,這樣每個訪客會固定訪問乙個後端伺服器,可以解決session一致問題。

upstream backend
注意:

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

2、導致負載不均衡。

4、fair 

upstream backend
5、url_hash,目前用consistent_hash替代url_hash

與ip_hash類似,但是按照訪問url的hash結果來分配請求,使得每個url定向到同乙個後端伺服器,主要應用於後端伺服器為快取時的場景下。

upstream backend
其中,hash_method為使用的hash演算法,需要注意的是:此時,server語句中不能加weight等引數。

二、裝置狀態

從上面例項不難看出upstream中server指令語法如下:server address [parameters]

引數說明:

server:關鍵字,必選。

address:主機名、網域名稱、ip或unix socket,也可以指定埠號,必選。

parameters:可選引數,可選引數如下:

1.down:表示當前server已停用

2.backup:表示當前server是備用伺服器,只有其它非backup後端伺服器都掛掉了或者很忙才會分配到請求。

3.weight:表示當前server負載權重,權重越大被請求機率越大。預設是1.

4.max_fails和fail_timeout一般會關聯使用,如果某台server在fail_timeout時間內出現了max_fails次連線失敗,那麼nginx會認為其已經掛掉了,從而在fail_timeout時間內不再去請求它,fail_timeout預設是10s,max_fails預設是1,即預設情況是只要發生錯誤就認為伺服器掛掉了,如果將max_fails設定為0,則表示取消這項檢查。

舉例說明如下:

原文**:

nginx中的upstream使用

背景 最開始來公司的時候,由於公司已經上雲,使用的是slb了,所以慢慢的就沒使用upstream了,但是線下還是有一些專案還是在使用這個,為了防止忘記就記錄了一下,upstream的基本使用 upstream admin 在需要使用負載均衡的server中增加 每個裝置的狀態設定為 1 down表示...

nginx中的upstream使用

upstream的基本使用 upstream admin 在需要使用負載均衡的server中增加 每個裝置的狀態設定為 1 down表示當前的server暫時不參與負載 2 weight 預設為1.weight越大,負載的權重就越大,那麼該伺服器被訪問到的機率就越大 3 max fails 允許請求...

Nginx使用upstream實現動靜分離

一 為什麼要進行動靜分離 分離資源,減少不必要到的請求消耗,減少請求延時。注 我這裡,是nginx處理靜態資源,apache處理動態資源。場景分析 1 未分離之前的場景步驟 1 客戶端請求url到中介軟體 比如nginx,apache 2 中介軟體根據url請求相應目錄,程式框架 3 程式框架執行程...