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

負載均衡(Load Balance)是應用於互聯網後臺系統架構設計中的各層,它將請求均勻分攤到多個操做單元上執行。
目前,在線上環境中應用較多的負載均衡器硬件有F5 BIG-IP,可是硬件設備昂貴,不如軟件適應互聯網公司的快速發展。最經常使用的負載均衡軟件有LVS、HAProxy和Nginx,結合高可用軟件有Heartbeat、Keepalived,能夠搭建出承載海量請求的成熟架構如LVS+Keepalived、HAProxy+keepalived等.
專長
三種負載均衡軟件LVS、HAProxy和Nginx的優缺點說明以下:
LVS的優勢:
一、性能最強、僅工做在第4層,TUN和DR模式下回包不通過LVS,保證了均衡器IO的性能受大流量的影響最小;
二、工做穩定,自身有完整的雙機熱備方案,如LVS+Keepalived和LVS+Heartbeat;
三、應用範圍比較廣,能夠對全部應用作負載均衡;
LVS的缺點:
一、軟件自己不支持正則處理,不能作動靜分離,這就凸顯了Nginx/HAProxy+Keepalived的優點。
二、配置性比較低,若是網站應用比較龐大,配置和維護過程就比較麻煩。
HAProxy的優勢:
一、HAProxy是支持虛擬主機的,能夠工做在四、7層(支持多網段);
二、支持url檢測後端的服務器;
三、它跟LVS同樣,自己僅僅就只是一款負載均衡軟件;單純從效率上來說HAProxy更會比Nginx有更出色的負載均衡速度,在併發處理上也是優於Nginx的;
四、HAProxy的算法較多,達到8種;
Nginx的優勢:
一、工做在OSI第7層,能夠針對http應用作一些分流的策略。好比針對域名、目錄結構。它的正則比HAProxy更爲強大和靈活;
二、Nginx對網絡的依賴很是小,理論上能ping通就就能進行負載功能,這個也是它的優點所在;
三、Nginx安裝和配置比較簡單,測試起來比較方便;
四、Nginx能夠經過端口檢測到服務器內部的故障,好比根據服務器處理網頁返回的狀態碼、超時等等,而且會把返回錯誤的請求從新提交到另外一個節點;
五、Nginx不只僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器。LNMP如今也是很是流行的web環境,大有和LAMP環境平起平坐之勢,Nginx在處理靜態頁面、特別是抗高併發方面相對apache有優點;
六、Nginx如今做爲Web反向加速緩存愈來愈成熟了,速度比傳統的Squid服務器更快,有需求的朋友能夠考慮用其做爲反向代理加速器;
Nginx的缺點:
一、Nginx不支持url來檢測;
二、Nginx僅能支持http和Email,這個它的弱勢;
應用
簡單地不負責任地說,性能上LVS>HA>Nginx,功能性和便利性上Nginx>HA>LVS。
對於一個大型後臺系統來講,LVS、HAProxy和Nginx經常能夠配合使用在不一樣的層級,LVS用在接入層的最前端,承擔最大規模的流量分發;HAProxy負責按域名分流;而Nginx只須要做爲Web服務器負責單機內多實例的負載均衡,或負責目錄結構分流和靜態資源緩存等需求。

fu_zai_jun_heng_01.jpg
所謂的四層與七層負載均衡,就是在對後臺服務器進行負載均衡時,依據OSI四層的信息或七層的信息來決定怎麼樣轉發流量。好比四層負載均衡經過報文中的目標IP地址和端口,七層負載均衡經過報文中的應用層信息(URL、HTTP頭部等信息),選擇到達目的的內部服務器。四層負載均衡在解包上的消耗更少,能夠達到更高的性能。而七層負載算法能夠經過更多的應用層信息分發請求,功能性上更強大。
七層負載均衡軟件能夠經過URL、Cookie和HTTP head等信息,而不只僅是IP端口分發流量,還能夠修改客戶端的請求和服務器的響應(例如HTTP請求中的Header的重寫),極大提高了應用系統在網絡層的靈活性。
在網絡中常見的SYN Flood,***會對同一目標大量發送SYN報文,耗盡服務器上的相關資源,以達到Denial of Service(DoS)的目的。四層模式下這些SYN都會被轉發到後端的服務器上;而在七層模式下這些SYN在負載均衡設備上就截止,不會影響後臺服務器的正常運營。另外負載均衡設備能夠在七層層面設定多種策略,過濾SQL Injection等應用層面的特定手段,進一步提升系統總體安全。前端

相關文章
相關標籤/搜索