天天看點

負載均衡比較:LVS,HAProxy和NginxNginx、HAProxy、LVS三者的優缺點

負載均衡(Load Balance)是應用于網際網路背景系統架構設計中的各層,它将請求均勻分攤到多個操作單元上執行。

目前,線上上環境中應用較多的負載均衡器硬體有F5 BIG-IP,但是硬體裝置昂貴,不如軟體适應網際網路公司的快速發展。最常用的負載均衡軟體有LVS、HAProxy和Nginx,結合高可用軟體有Heartbeat、Keepalived,可以搭建出承載海量請求的成熟架構如LVS+Keepalived、HAProxy+keepalived等.

專長

三種負載均衡軟體LVS、HAProxy和Nginx的優缺點說明如下:

LVS的優點:

1、性能最強、僅工作在第4層,TUN和DR模式下回包不經過LVS,保證了均衡器IO的性能受大流量的影響最小;

2、工作穩定,自身有完整的雙機熱備方案,如LVS+Keepalived和LVS+Heartbeat;

3、應用範圍比較廣,可以對所有應用做負載均衡;

LVS的缺點:

1、軟體本身不支援正則處理,不能做動靜分離,這就凸顯了Nginx/HAProxy+Keepalived的優勢。

2、配置性比較低,如果網站應用比較龐大,配置和維護過程就比較麻煩。

HAProxy的優點:

1、HAProxy是支援虛拟主機的,可以工作在4、7層(支援多網段);

2、支援url檢測後端的伺服器;

3、它跟LVS一樣,本身僅僅就隻是一款負載均衡軟體;單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度,在并發處理上也是優于Nginx的;

4、HAProxy的算法較多,達到8種;

Nginx的優點:

1、工作在OSI第7層,可以針對http應用做一些分流的政策。比如針對域名、目錄結構。它的正則比HAProxy更為強大和靈活;

2、Nginx對網絡的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢所在;

3、Nginx安裝和配置比較簡單,測試起來比較友善;

4、Nginx可以通過端口檢測到伺服器内部的故障,比如根據伺服器處理網頁傳回的狀态碼、逾時等等,并且會把傳回錯誤的請求重新送出到另一個節點;

5、Nginx不僅僅是一款優秀的負載均衡器/反向代理軟體,它同時也是功能強大的Web應用伺服器。LNMP現在也是非常流行的web環境,大有和LAMP環境分庭抗禮之勢,Nginx在處理靜态頁面、特别是抗高并發方面相對apache有優勢;

6、Nginx現在作為Web反向加速緩存越來越成熟了,速度比傳統的Squid伺服器更快,有需求的朋友可以考慮用其作為反向代理加速器;

Nginx的缺點:

1、Nginx不支援url來檢測;

2、Nginx僅能支援http和Email,這個它的弱勢;

應用

簡單地不負責任地說,性能上LVS>HA>Nginx,功能性和便利性上Nginx>HA>LVS。

對于一個大型背景系統來說,LVS、HAProxy和Nginx常常可以配合使用在不同的層級,LVS用在接入層的最前端,承擔最大規模的流量分發;HAProxy負責按域名分流;而Nginx隻需要作為Web伺服器負責單機内多執行個體的負載均衡,或負責目錄結構分流和靜态資源緩存等需求。

負載均衡比較:LVS,HAProxy和NginxNginx、HAProxy、LVS三者的優缺點

所謂的四層與七層負載均衡,就是在對背景伺服器進行負載均衡時,依據OSI四層的資訊或七層的資訊來決定怎麼樣轉發流量。比如四層負載均衡通過封包中的目标IP位址和端口,七層負載均衡通過封包中的應用層資訊(URL、HTTP頭部等資訊),選擇到達目的的内部伺服器。四層負載均衡在解包上的消耗更少,可以達到更高的性能。而七層負載算法可以通過更多的應用層資訊分發請求,功能性上更強大。

七層負載均衡軟體可以通過URL、Cookie和HTTP head等資訊,而不僅僅是IP端口分發流量,還可以修改用戶端的請求和伺服器的響應(例如HTTP請求中的Header的重寫),極大提升了應用系統在網絡層的靈活性。

在網絡中常見的SYN Flood,黑客會對同一目标大量發送SYN封包,耗盡伺服器上的相關資源,以達到Denial of Service(DoS)的目的。四層模式下這些SYN都會被轉發到後端的伺服器上;而在七層模式下這些SYN在負載均衡裝置上就截止,不會影響背景伺服器的正常營運。另外負載均衡裝置可以在七層層面設定多種政策,過濾SQL Injection等應用層面的特定手段,進一步提高系統整體安全。

詳細對比:

Nginx、HAProxy、LVS三者的優缺點

https://blog.csdn.net/qlj324513/article/details/81541282

繼續閱讀