一、分配方式
nginx的upstream支援5種分配方式,下面將會詳細介紹,其中,前三種為nginx原生支援的分配方式,後兩種為第三方支援的分配方式:
1、輪詢
輪詢是upstream的預設分配方式,即每個請求按照時間順序輪流分配到不同的後端伺服器,如果某個後端伺服器down掉後,能自動剔除。
upstream backend
2、weight
輪詢的加強版,即可以指定輪詢比率,weight和訪問機率成正比,主要應用於後端伺服器異質的場景下。
upstream backend
3、ip_hash
每個請求按照訪問ip(即nginx的前置伺服器或者客戶端ip)的hash結果分配,這樣每個訪客會固定訪問乙個後端伺服器,可以解決session一致問題。
upstream backend
4、fair
fair顧名思義,公平地按照後端伺服器的響應時間(rt)來分配請求,響應時間短即rt小的後端伺服器優先分配請求。
upstream backend
5、url_hash
與ip_hash類似,但是按照訪問url的hash結果來分配請求,使得每個url定向到同乙個後端伺服器,主要應用於後端伺服器為快取時的場景下。
upstream backend
其中,hash_method為使用的hash演算法,需要注意的是:此時,server語句中不能加weight等引數。
關於,如何在負載均衡中使用upstream請參看這裡。
二、裝置狀態
從上面例項不難看出upstream中server指令語法如下:
server address [parameters]
關鍵字server必選。
address也必選,可以是主機名、網域名稱、ip或unix socket,也可以指定埠號。
parameters是可選引數,可以是如下引數:
down:表示當前server已停用
backup:表示當前server是備用伺服器,只有其它非backup後端伺服器都掛掉了或者很忙才會分配到請求。
weight:表示當前server負載權重,權重越大被請求機率越大。預設是1.
max_fails和fail_timeout一般會關聯使用,如果某台server在fail_timeout時間內出現了max_fails次連線失敗,那麼nginx就會認為那個伺服器已經掛掉,從而在 fail_timeout時間內不再去查詢它,fail_timeout的預設值是10s,max_fails的預設值是1(這意味著一發生錯誤就認為伺服器掛掉),如果把max_fails設為0則表示把這個檢查取消。
舉個例子:server 192.168.1.11 max_fails=3 fail_timeout=30s;這表示,如果伺服器192.168.1.11在30秒內出現了3次錯誤,那麼就認為這個伺服器工作不正常,從而在接下來的30秒內nginx不再去訪問這個伺服器。
舉例說明如下:
upstream backend
更多詳細資訊請參看這裡。
upstream還可以為每個裝置設定狀態值,這些狀態值的含義分別如下:
down 表示單前的server暫時不參與負載.
weight 預設為1.weight越大,負載的權重就越大。
max_fails :允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤.
fail_timeout : max_fails次失敗後,暫停的時間。
backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這台機器壓力會最輕。
upstream bakend
1. 在http節點下,新增upstream節點。
upstream linuxidc
2. 將server節點下的location節點中的proxy_pass配置為:http:// + upstream名稱,即「
Nginx的upstream 支援演算法
nginx的upstream目前支援5種方式的分配 1 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。2 weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。例如 upstream bakend 3 ip hash...
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 允許請求...