負載均衡比較:LVS,HAProxy和Nginx

負載均衡(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服務器負責單機內多實例的負載均衡,或負責目錄結構分流和靜態資源緩存等需求。

 

所謂的四層與七層負載均衡,就是在對後臺服務器進行負載均衡時,依據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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章