Nginx負載均衡配置(一)

2021-10-14 07:17:25 字數 2469 閱讀 6621

目錄

負載均衡的意義

負載策略

內建策略

輪詢策略

加權輪詢策略

ip_hash策略

擴充套件策略

url_hash策略

fair策略

sticky策略

負載均衡的目的是為了解決單個節點壓力過大,造成web服務響應過慢,嚴重的情況下導致服務癱瘓,無法正常提供服務的問題。通常乙個訪問量非常大的web**(比如:**、京東、12306等),由於乙個web服務同時能處理的使用者併發請求的數量有限,同時還存在機器故障的情況,所以乙個web站點通常會在n臺機器上各部署同一套程式。當某乙個服務掛掉的時候,還有第二個、第三個、第n個服務。。。繼續為使用者提供服務,給使用者的感覺,你的服務還在正常的執行!在這些提供同樣服務的機器當中,在硬體配置方面也各不相同,這樣就會存在部分機器效能非常好,能快速計算並響應使用者的請求,另外一部份機器可能配置差點,響應使用者的請求的時間會長一些。

這就需要我們思考乙個問題?如果有乙個服務正在同時處理1000個使用者的請求,這個服務的上限可能最多能同時處理1000個使用者的請求,這時它已經很忙了,如果此時又有乙個新請求過來,我們仍然把這個請求分配給這台機器,這時候這個請求就只能在幹等著,等這個服務處理完那些請求後,再繼續處理它。這樣在瀏覽器中的反應就像12306我們在春節買票一樣,卡在那不動了,讓使用者眼巴巴的乾著急。而能提供同樣服務的其它機器,這時確很空閒。這樣不僅是對伺服器資源的浪費,也充分發揮不出弄多台伺服器裝同乙個服務的最**值。我們通常稱對某一台機器的訪問量為負載量,如何將乙個使用者的請求,合理的分配到一台能快速響應使用者請求的伺服器上,我們就需要用到一些負載策略。

負載均衡將使用者的所有http請求均衡的分配到每一台機器上,充分發揮所有機器的效能,提高服務的質量和使用者體驗。負載均衡可以通過負載均衡網路硬體裝置(硬負載)和web伺服器軟體(軟負載)來實現,前者裝置成本較高,小公司通常負擔不起,所以後者一般是我們的首選。實現負載均衡常用的web伺服器軟體有nginx、haproxy、lvs、apache,本文主要介紹nginx的負載均衡策。

nginx的upstream目前支援的6種方式的分配,分別是:輪詢策略,權重輪詢策略,ip_hash策略,fair策略,url_hash策略,sticky策略等。

這裡將nginx負載策略分為兩大類,分別是:內建策略擴充套件策略

nginx負載均衡是通過upstream模組來實現的,內建實現了三種負載策略。官網負載均衡配置說明:

顧名思義,該策略就是伺服器將每個前端請求按順序(時間順序和排列次序)逐一分配到不同的後端伺服器節點。如果後端伺服器出現問題,即down掉,那麼就會被自動剔除。配置示例如下:

upstream loadserver
該策略在輪詢策略的基礎上考慮各後端伺服器節點接受請求的權重,指定後端各伺服器節點**詢到的機率,主要應用於後端伺服器節點效能不均的情況。

通過直接配置weight來設定訪問機率,weight的大小和訪問比率成正比,如果不配置weight,則預設配置為weight=1

upstream loadserver
注:因為weight是內建,所以可以直接和其他策略配合使用。

該策略通過將前端的訪問ip進行hash操作,然後根據hash結果將請求分配到不同的伺服器節點。當第一次請求時,根據該客戶端的ip算出乙個hash值,將請求分配到集群中的某一台伺服器上。後面該客戶端的所有請求,都將通過hash演算法,找到之前處理這台客戶端請求的伺服器,然後將請求交給它來處理,配置示例如下:

upstream loadserver
擴充套件策略需要依賴第三方完成,有以下3種:

該策略將前端請求的url位址進行hash操作,根據hash結果將請求定向到同一後端伺服器節點上,一般url_hash需要配合緩衝命中來使用。

upstream loadserver
該策略將請求**到負載最小的後端伺服器節點上。nginx通過後端伺服器節點對響應時間來判斷負載情況,響應時間最短的節點負載就相對較輕,nginx就會將前端請求**到此後端伺服器節點上。

由於fair模組是第三方提供的,在使用fair負載策略的時候需要先安裝fair模組,具體可以參考:

upstream loadserver
注:這種策略具有很強的自適應性,但實際的網路環境往往比較複雜,因此需要慎用。

該策略在多台伺服器的環境下,為了確保乙個客戶端只和一台伺服器通訊,它會保持長連線,並在結束會話後再次選擇乙個伺服器,保證了壓力均衡。

upstream loadserver
注:如果瀏覽器不支援cookie,那麼sticky不生效,畢竟整個模組是基於cookie實現。另外,sticky模組和ip_hash模組不能夠同時使用。

nginx負載均衡配置

curl nginx upstream fair.zip unzip nginx upstream fair.zip cd nginx 1.6.2 檢視當前nginx 編譯引數 nginx v 輸出 configure arguments prefix usr local nginx configu...

Nginx負載均衡配置

負載均衡是我們大流量 要做的乙個東西,下面我來給大家介紹在nginx伺服器上進行負載均衡配置方法,希望對有需要的同學有所幫助哦。負載均衡 先來簡單了解一下什麼是負載均衡,單從字面上的意思來理解就可以解釋n臺伺服器平均分擔負載,不會因為某台伺服器負載高宕機而某台伺服器閒置的情況。那麼負載均衡的前提就是...

Nginx負載均衡配置

nginx安裝請參考 nginx原始碼安裝 nginx負載均衡是通過upstream模組來實現的,內建實現了三種負載策略,配置還是比較簡單的。官網負載均衡配置說明 省略其它配置 根據伺服器的響應時間來分配請求,響應時間短的優先分配,即負載壓力小的優先會分配。由於fair模組是第三方提供的,所以在編譯...