1. 程式人生 > >四層和七層負載均衡的特點及常用負載均衡Nginx、Haproxy、LVS對比

四層和七層負載均衡的特點及常用負載均衡Nginx、Haproxy、LVS對比

web服務器 keepaliv 保持 obi 負載均衡 ted 根據 方案 面向

一、四層與七層負載均衡在原理上的區別

圖示:

四層負載均衡與七層負載均衡在工作原理上的簡單區別如下圖:

技術分享圖片

概述:

1.四層負載均衡工作在OSI模型中的四層,即傳輸層。四層負載均衡只能根據報文中目標地址和源地址對請求進行轉發,而無法修改或判斷所請求資源的具體類型,然後經過負載均衡內部的調度算法轉發至要處理請求的服務器。四層負載均衡單純的提供了終端到終端的可靠連接,並將請求轉發至後端,連接至始至終都是同一個。LVS就是很典型的四層負載均衡。

2.七層負載均衡工作在OSI模型的第七層應用層,所以七層負載均衡可以基於請求的應用層信息進行負載均衡,例如根據請求的資源類型分配到後端服務器,而不再是根據IP和端口選擇。七層負載均衡的功能更豐富更靈活,也能使整個網絡更智能。如上圖所示,在七層負載均衡兩端(面向用戶端和服務器端)的連接都是獨立的。

3.簡言之,四層負載均衡就是基於IP+端口實現的。七層負載均衡就是通過應用層資源實現的。

二、常用負載均衡軟件對比

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來解決。
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

四層和七層負載均衡的特點及常用負載均衡Nginx、Haproxy、LVS對比