Nginx 負載均衡是什麼以及該如何配置

2022-09-21 18:15:10 字數 2783 閱讀 3311

負載均衡主要通過專門的硬體裝置或者通過軟體演算法實現。通過硬體裝置實現的負載均衡效果好、效率高、效能穩定,但是成本比較高。通過軟體實現的負載均衡主要依賴於均衡演算法的選擇和程式的健壯性。均衡演算法也是多種多樣的,常見的有兩大類:即靜態負載均衡演算法和動態負載均衡演算法。靜態演算法實現比較簡單,在一般網路環境下也能達到比較好的效果,主要有一般輪詢演算法、基於比率的加權輪詢演算法以及基於優先順序的加權輪詢演算法等。動態負載均衡演算法在較為複雜的網路環境中適應性更強,效果更好,主要有基於任務量的最少連線優先演算法、基於效能的最快響應優先演算法、**演算法及動態效能分配演算法等。

網路負載均衡技術的大致原理是利用一定的分配策略將網路負載平衡地分攤到網路集群的各個操作單元上,使得單個重負載任務能夠分擔到多個單元上並行處理,或者使得大量併發訪問或資料 流量分擔到多個單元上分別處理,從而減少使用者的等待響應時間。

nginx伺服器實現了靜態的基於優先順序的加權輪詢演算法,主要使用的配置是proxy_pass指令和upstream指令,這些內容實際上很容易理解,關鍵點在於nginx伺服器的配置靈活多樣,如何在配置負載均衡的同時合理地整合其他功能,形成一套可以滿足實際需求的配置方案。

下面的有一些基礎示例片段,當然不可能將所有的配置情況包括在內,希望能夠起到拋磚引玉的效果,同時也需要大家在實際應用過程中多總結多積累。在配置中需要注意的地方將以注釋的形式新增。

在以下例項片段中,backend伺服器組中所有伺服器的優先順序全部配置為預設的weight=1,這樣它們會按照一般輪詢策略依次接收請求任務。該配置是乙個最簡單的實現nginx伺服器負載均衡的配置。所有訪問www.myweb.name 的請求都會在backend伺服器組中實現負載均衡。例項**如下:

...upstream backend                    #配置後端伺服器組

server

...}

與「配置例項一」相比,在該例項片段中,backend伺服器組中的伺服器被賦予了不同的優先級別,weight變數的值就是輪詢策略中的「權值」。其中,192.168.1.2:80的級別最高,優先接收和處理客戶端請求;192.168.1.4:80的級別最低,是接收和處理客戶端請求最少的伺服器,192.168.1.3:80將介於以上兩者之間。所有訪問www.myweb的請求都會在backend伺服器組中實現加權負載均衡。例項**如下:

...upstream backend                    #配置後端伺服器組

server

...}

在該例項片段中,我們設定了兩組被**的伺服器組,名為「videobackend」的一組用於對請求video資源的客戶端請求進行負載均衡,另一組用於對請求filed資源的客戶端請求進行負載均衡。所有對「 」的請求都會在videobackend伺服器組中獲得均衡效果,所有對「 」的請求都會在filebackend伺服器組中獲得均衡效果。該例項中展示的是實現一般負載均衡的配置,對於加權負載均衡的配置可以參考「配置例項二」。

在location /file/ 塊中,我們將客戶端的真實資訊分別填充到了請求頭中的「host」、「x-real-ip」和「x-forwareded-for」頭域,這樣後端伺服器組收到的請求中就保留了客戶端的真實資訊,而不是nginx伺服器的資訊。例項**如下:

...upstream videobackend                    #配置後端伺服器組1

upstream filebackend                    #配置後端伺服器組2

server

location /file/

}在該例項片段中,我們設定了兩個虛擬伺服器和兩組後端**的伺服器組,分別用來接收不同的網域名稱請求和對這些請求進行負載均衡處理。如果客戶端請求網域名稱為「home.myweb.name」,則伺服器server1接收並轉向homebackend伺服器組進行負載均衡處理;如果客戶端請求網域名稱為「bbs.myweb.name」,則由伺服器server2接收bbsbackend伺服器級進行負載均衡處理。這樣就實現了對不同網域名稱的負載均衡。

需要注意兩組後端伺服器組中有一台伺服器server 192.168.1.4:80是公用的。在該伺服器上需要部署兩個網域名稱下的所有資源才能保證客戶端請求不會出現問題。例項**如下:

...upstream bbsbackend                    #配置後端伺服器組1

upstream homebackend                    #配置後端伺服器組2

#開始配置server 1

server

...}                                        #開始配置server 2

server

...}

首先,我們來看具體的原始碼,這是在例項一的基礎上做的修改:

...upstream backend                    #配置後端伺服器組

server

location /

...}

該例項片段與「配置一」相比,增加了對uri包含「/file/」的url重寫功能。例如客戶端請求的url為「 」時,該虛擬伺服器首先使用location file/ 塊**到後端的backend伺服器組中實現負載均衡。這樣,就車輕而易舉地實現了帶有url重寫功能的負載均衡。在該配置方案中,一定要掌握清楚rewrite指令中last標記和break標記的區別,才能達到預計的效果。

以上5個配置例項展示了nginx伺服器實現不同情況下負載均衡配置的基本方法。由於nginx伺服器的功能在結構上是增量式的,因此 ,我們可以在這些配置的基礎上繼續新增更多功能,比如web快取等功能,以及gzip壓縮技術、身份認證、許可權管理等。同時在使用upstream指令配置伺服器組時,可以充分發揮各個指令的功能,配置出滿足需求、高效穩定、功能豐富的nginx伺服器。

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

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

nginx安裝以及配置負載均衡

2 安裝依賴包 先更新源 apt get update apt get install libpcre3 libpcre3 dev apt get install zlib1g dev apt get install openssl libssl dev 3 配置makefile,進入nginx解壓...

Nginx做負載均衡,以及方式

1.輪詢 down 檢查伺服器是否有down,如果有電腦伺服器不做負載。upstream myhtml 2.權重 weight 分配伺服器訪問的次數,越大代表請求次數越多 upstream myhtml 3.session問題 ip hash 同乙個ip只請求同一臺伺服器 upstream myht...