1. 程式人生 > >(轉發)三大主流軟體負載均衡器對比(LVS VS Nginx VS Haproxy)

(轉發)三大主流軟體負載均衡器對比(LVS VS Nginx VS Haproxy)

相對於Ngnix,我們公司最終選擇了HA。

LVS:
1、抗負載能力強。抗負載能力強、效能高,能達到F5硬體的60%;對記憶體和cpu資源消耗比較低
2、工作在網路4層,通過vrrp協議轉發(僅作分發之用),具體的流量由linux核心處理,因此沒有流量的產生。
2、穩定性、可靠性好,自身有完美的熱備方案;(如:LVS+Keepalived)
3、應用範圍比較廣,可以對所有應用做負載均衡;
4、不支援正則處理,不能做動靜分離。
5、支援負載均衡演算法:rr(輪循)、wrr(帶權輪循)、lc(最小連線)、wlc(權重最小連線)
6、配置 複雜,對網路依賴比較大,穩定性很高。

Ngnix:
1、工作在網路的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構;
2、Nginx對網路的依賴比較小,理論上能ping通就就能進行負載功能;
3、Nginx安裝和配置比較簡單,測試起來比較方便;
4、也可以承擔高的負載壓力且穩定,一般能支撐超過1萬次的併發;
5、對後端伺服器的健康檢查,只支援通過埠來檢測,不支援通過url來檢測。
6、Nginx對請求的非同步處理可以幫助節點伺服器減輕負載;
7、Nginx僅能支援http、https和Email協議,這樣就在適用範圍較小。
8、不支援Session的直接保持,但能通過ip_hash來解決。、對Big request header的支援不是很好,
9、支援負載均衡演算法:Round-robin(輪循)、Weight-round-robin(帶權輪循)、Ip-hash(Ip雜湊)
10、Nginx還能做Web伺服器即Cache功能。

HAProxy的特點是:
1、支援兩種代理模式:TCP(四層)和HTTP(七層),支援虛擬主機;
2、能夠補充Nginx的一些缺點比如Session的保持,Cookie的引導等工作
3、支援url檢測後端的伺服器出問題的檢測會有很好的幫助。
4、更多的負載均衡策略比如:動態加權輪循(Dynamic Round Robin),加權源地址雜湊(Weighted Source Hash),加權URL雜湊和加權引數雜湊(Weighted Parameter Hash)已經實現
5、單純從效率上來講HAProxy更會比Nginx有更出色的負載均衡速度。
6、HAProxy可以對Mysql進行負載均衡,對後端的DB節點進行檢測和負載均衡。
9、支援負載均衡演算法:Round-robin(輪循)、Weight-round-robin(帶權輪循)、source(原地址保持)、RI(請求URL)、rdp-cookie(根據cookie)
10、不能做Web伺服器即Cache。

三大主流軟體負載均衡器適用業務場景:
1、網站建設初期,可以選用Nigix/HAproxy作為反向代理負載均衡(或者流量不大都可以不選用負載均衡),因為其配置簡單,效能也能滿足一般的業務場景。如果考慮到負載均衡器是有單點問題,可以採用Nginx+Keepalived/HAproxy+Keepalived避免負載均衡器自身的單點問題。
2、網站併發達到一定程度之後,為了提高穩定性和轉發效率,可以使用LVS、畢竟LVS比Nginx/HAproxy要更穩定,轉發效率也更高。不過維護LVS對維護人員的要求也會更高,投入成本也更大。

注:Niginx與Haproxy比較:Niginx支援七層、使用者量最大,穩定性比較可靠。Haproxy支援四層和七層,支援更多的負載均衡演算法,支援session儲存等。具體選型看使用場景,目前來說Haproxy由於彌補了一些Niginx的缺點使用者量也不斷在提升。


衡量負載均衡器好壞的幾個重要因素: 
1、會話率 :單位時間內的處理的請求數 
2、會話併發能力:併發處理能力 
3、資料率:處理資料能力 
經過官方測試統計,haproxy 單位時間處理的最大請求數為20000個,可以同時維護40000-50000個併發連線,最大資料處理能力為10Gbps。綜合上述,haproxy是效能優越的負載均衡、反向代理伺服器。

總結HAProxy主要優點:
一、免費開源,穩定性也是非常好,這個可通過我做的一些小專案可以看出來,單Haproxy也跑得不錯,穩定性可以與LVS相媲美;
二、根據官方文件,HAProxy可以跑滿10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),這個作為軟體級負載均衡,也是比較驚人的;
三、HAProxy可以作為MySQL、郵件或其它的非web的負載均衡,我們常用於它作為MySQL(讀)負載均衡;
四、自帶強大的監控伺服器狀態的頁面,實際環境中我們結合Nagios進行郵件或簡訊報警,這個也是我非常喜歡它的原因之一;
五、HAProxy支援虛擬主機。