一、四層與七層負載均衡在原理上的差別
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。
原文連結:https://www.cnblogs.com/readygood/p/9757951.html