nginx和lvs各自的優劣以及適合的使用環境

2022-09-24 11:27:13 字數 2362 閱讀 8326

在最開始呢,咱們先說一下什麼叫負載均衡,負載均衡呢,就是將一批請求,根據請求的內容,分發到不同的後端去進行相應的處理,從而提供負載分擔,主備切換等功能。  

&nb程式設計客棧sp;      對於不同的負載均衡軟體,有不同的流量分發演算法,今天,我們最市面上比較主流的兩種負載均衡做乙個對比,看看他們分別的優缺點,以及在很多情況下如何去做配合。

【四層和七層】

首先,說說四層和七層的區別;   

四層負載均衡,指的是ip+埠的負載均衡;

七層負載均衡,指的是基於web請求,url等應用層資訊的負載均衡。

當然,同理,還有基於mac位址的二層負載均衡和基於ip位址的三層負載均衡。

四層負載均衡,主要分析ip層和tcp/udp層。

七層負載均衡,要分析應用層協議,比如http協議,url,cookie等資訊。

【關於lvs】

lvs的負載能力很強,因為其工作模式非常簡單,僅進行請求的分發,而且其工作在第四層,沒有流量,在效率方面最高。

lvs是在四層,可以對幾乎所有的應用作負載均衡。

但是lvs對於故障後端感知並不敏感,比如在dr模式下,要是有乙個後端伺服器沒有配置vip,就會導致請求的一部分資料會直接丟失。

且程式設計客棧lvs對於網路環境的穩定性要求較高,如果請求失敗了,只能依賴於前端的應用自身的重試機制,負載均衡不對請求進行重新下發。

而且lvs也很受限於網路架構,在設計之初就要考慮到網路架構是否滿足lvs負載的前置條件。 

【關於nginx】

同樣的,nginx也可以用於負載均衡,但是由於nginx需要對源端/目的端都建立連線,所以處理流量的速度受限於機器i/o,cpu記憶體等一系列配置,所以nginx的負載能力相對較差。

nginx安裝,配置都比較簡單,與lvs對比,nginx不需要很嚴格的網路架構,只要網路可以聯通即可。

且nginx自身的重試機制,可以保證請求下發失敗之後,會重新下發到健康的後端上。

但是,nginx因為沒有現成的熱備機制,所以,存在單點故障的問題,一般需要搭配keepalived使用。

不過,nginx作為一款應用層負載均衡(後來引入stream模組之後,四層也支援了),可以提供負載分擔,貯備切換,https寫在,頻寬限速,隱藏真實ip,隱藏真實埠,遮蔽攻擊等能力,這是lvs所不能提供的。

【對比】

lvs和nginx都是現在很主流的負載均衡方式,他們各有優缺點,在生產環境需要根據其特點做選擇。

lvsnginx

四層四層/七層

抗負載能力

強 弱

配置性可配置性低

同時也減少了人為出錯的概率

可配置性高

可以配置一些高階功能

穩定性穩定性高

有完整的雙機熱備方案

穩定性低,有單機故障

無現成的雙機熱備方案

網路架構依賴

強依賴非常依賴網路架構設計

當然可以採用比較簡單的nat方式解決此問題

無依賴網路穩定性依賴

依賴資料報分發到壞的後端,不會重新分發,會直接返回錯誤

不依賴資料報分發到壞的後端並返回錯誤後,會嘗試重新分發到健康的後端

網路流量

僅請求流量經過lvs的網路,響應流量由後端伺服器的網路返回。

full_nat同nginx。

所有的請求和響應流量都會經過nginx

宿www.cppcns.com主機效能要求

要求較低

lvs僅僅做分發請求,流量並不從它本身出去,所以瓶頸僅僅受限於網路頻寬和網絡卡效能

要求較高

因為nginx需要對源端和目的端都單獨建立連線,中間還涉及到一些資料報的解析處理,所以依賴宿主機的i/o效能和cpu記憶體

**方式

同步**

lvs伺服器接收到請求之後,立即redirect到乙個後端伺服器,由客戶端直接和後端伺服器建立連線。

非同步**

在保持客戶端連線的同時,發起乙個相同內容的新請求到後端,等後端返回結果後,由nginx返回給客戶端

其他支援rewrite重寫規則:能夠根據網域名稱、url的不同,將http請求分到不同的後端伺服器群組。

節省頻寬:支援gzip壓縮,可以新增瀏覽器本地快取的header頭。

【兩者配合】

在使用上,一般最前端所採取的的策略應是lvs,也就是dns的指向應為lvs均衡器,主要原因在於nginx雖然功能強大,但是當作為後端的伺服器規模龐大時,nginx的網路頻寬就成了乙個巨大的瓶頸。

但是當lvs作為負載均衡的話,一旦後端接受到請求的伺服器出了問題,那麼這次請求就失敗了。        

所以在很多情況下,nginx會作為lvs的節點進行負載均衡,這樣,既可以避免nginx的效能造成很嚴重的頻寬瓶頸,也可以利用nginx的錯誤重傳避免lvs一錘子買賣,還能利用nginx的各種高階功能,包括https解除安裝,報文頭修改等。

談談nginx和lvs各自的優缺點以及使用

在最開始呢,咱們先說一下什麼叫負載均衡,負載均衡呢,就是將一批請求,根據請求的內容,分發到不同的後端去進行相應的處理,從而提供負載分擔,主備切換等功能。對於不同的負載均衡軟體,有不同的流量分發演算法,今天,我們最市面上比較主流的兩種負載均衡做乙個對比,看看他們分別的優缺點,以及在很多情況下如何去做配...

LVS和Nginx的區別

nginx工作在網路的第7層,所以它可以針對http應用本身來做分流策略,比如針對網域名稱 目錄結構等,相比之下lvs並不具備這樣的功能,所以nginx單憑這點可以利用的場合就遠多於lvs了 但nginx有用的這些功能使其可調整度要高於lvs,所以經常要去觸碰觸碰,由lvs的第2條優點來看,觸碰多了...

nginx和apache的優劣分析

1 nginx相對於apache的優點 輕量級,同樣起web 服務,比apache 占用更少的記憶體及資源 抗併發,nginx 處理請求是非同步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高效能 高度模組化的設計,編寫模組相對簡單 社群活躍,各種高效能模組出品迅速...