nginx負載均衡的常用策略

2021-08-18 14:44:27 字數 2729 閱讀 5373

三、負載均衡配置的狀態引數

四、配置例項:

當一台伺服器的單位時間內的訪問量越大時,伺服器壓力就越大,大到超過自身承受能力時,伺服器就會崩潰。為了避免伺服器崩潰,讓使用者有更好的體驗,我們通過負載均衡的方式來分擔伺服器壓力。

我們可以建立很多很多伺服器,組成乙個伺服器集群,當使用者訪問**時,先訪問乙個中間伺服器,在讓這個中間伺服器在伺服器集群中選擇乙個壓力較小的伺服器,然後將該訪問請求引入該伺服器。

如此以來,使用者的每次訪問,都會保證伺服器集群中的每個伺服器壓力趨於平衡,分擔了伺服器壓力,避免了伺服器崩潰的情況。

負載均衡是用反向**的原理實現的。

每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

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

情況。

upstream backserver
權重越高,在被訪問的概率越大,如上例,分別是30%,70%。

上述方式存在乙個問題就是說,在負載均衡系統中,假如使用者在某台伺服器上登入了,那麼該使用者第二次請求的時候,因為我們是負載均衡系統,每次請求都會重新定位到伺服器集群中的某乙個,那麼已經登入某乙個伺服器的使用者再重新定位到另乙個伺服器,其登入資訊將會丟失,這樣顯然是不妥的。

我們可以採用ip_hash指令解決這個問題,如果客戶已經訪問了某個伺服器,當使用者再次訪問時,會將該請求通過雜湊演算法,自動定位到該伺服器。

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

upstream backserver
根據伺服器的響應時間來分配請求,響應時間短的優先分配,即負載壓力小的優先會分配。

由於fair模組是第三方提供的,所以在編譯nginx原始碼的時候,需要將fair新增到nginx模組中。

假設我的nginx是通過原始碼安裝的,安裝在/opt/nginx目錄下,而且安裝時沒有新增fair模組。

cd /opt

wget

unzip master.zip

解壓後的目錄名為:nginx-upstream-fair-master

2) 重新編譯nginx,將fair模組新增到編譯引數

我的 nginx 原始碼目錄在/opt/nginx-1.10.0

cd /opt/nginx-nginx-1.10.0

./configure --prefix=/opt/nginx --add-module=/opt/nginx-upstream-fair-master

make

注意:不要執行make install,這樣會覆蓋之前nginx的配置 。

3) 使用新編譯的 nginx 執行檔案

新編譯後的 nginx 執行程式,放在nginx原始碼的objs目錄下, 將objs目錄下新編譯的 nginx 可執行程式拷貝到/opt/nginx/sbin/目錄下,覆蓋之前安裝的nginx 。

ps -aux |

grep nginx

kill -9 nginx程序id # 停止nginx服務

cp /opt/nginx-1.10.0/objs/nginx /opt/nginx/sbin/ # 覆蓋舊的nginx

nginx # 啟動服務

配置使用fair負載策略模組:

upstream tomcats
由於採用fair負載策略,使用 weigth 引數改變負載權重將無效。

按訪問url的hash結果來分配請求,使每個url定向 。

到同乙個後端伺服器,後端伺服器為快取時比較有效。

upstream backserver
場景:如果現在我們的電商專案出現了乙個爆品,那個訪問這個爆品的請求會增多。

若此時使用 url hash ,那麼請求會壓到同一臺伺服器上,這樣顯然是不合理的。

down: 表示下線,此 server 暫時不參與負載

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

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

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

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

Nginx負載均衡常用策略

nginx的常用策略 1.輪詢 預設 2.權重 3.ip hash 4.url hash 第三方外掛程式 5.fair 第三方外掛程式 1.輪詢 缺點場景 比如現在有兩台伺服器,一台效能比較好,一台效能一般,如果使用輪詢的話,可能不能根據伺服器的 效能來分配請求。2.權重 筆者的mall電商專案也才...

Nginx負載均衡常用策略

nginx的常用策略 1.輪詢 預設 2.權重 3.ip hash 4.url hash 第三方外掛程式 5.fair 第三方外掛程式 1.輪詢 缺點場景 比如現在有兩台伺服器,一台效能比較好,一台效能一般,如果使用輪詢的話,可能不能根據伺服器的 效能來分配請求。2.權重 筆者的mall電商專案也才...

nginx 負載均衡 Nginx負載均衡策略

nginx提供的負載均衡策略有2種 內建策略和擴充套件策略。內建策略為輪詢 預設 加權輪詢,ip hash,第三方。upstream mysvr1 輪詢 每個請求按照時間順序逐一的分配到每乙個後台伺服器上。如果某台伺服器宕機了,將會自動的剔除宕機的服務。nginx預設就是輪詢其權重都預設為1,伺服器...