一、四層與七層負載均衡在原理上的區別 1.圖示 2.概述 四層負載均衡工作在 OSI 模型中的四層,即傳輸層。四層負載均衡只能根據報文中目標地址和源地址對請求進行轉發,而無法修改或判斷所請求資源的具體類型,然後經過負載均衡內部的調度演算法轉發至要處理請求的伺服器。四層負載均衡單純的提供了終端到終端的可 ...
一、四層與七層負載均衡在原理上的區別
1.圖示
2.概述
四層負載均衡工作在 OSI 模型中的四層,即傳輸層。四層負載均衡只能根據報文中目標地址和源地址對請求進行轉發,而無法修改或判斷所請求資源的具體類型,然後經過負載均衡內部的調度演算法轉發至要處理請求的伺服器。四層負載均衡單純的提供了終端到終端的可靠連接,並將請求轉發至後端,連接至始至終都是同一個。LVS 就是很典型的四層負載均衡。
七層負載均衡工作在 OSI 模型的第七層,即應用層,所以七層負載均衡可以基於請求的應用層信息進行負載均衡,例如根據請求的資源類型分配到後端伺服器,而不再是根據IP和埠選擇。七層負載均衡的功能更豐富更靈活,也能使整個網路更智能。如上圖所示,在七層負載均衡兩端(面向用戶端和伺服器端)的連接都是獨立的。
簡言之,四層負載均衡就是基於 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。