天天看點

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

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

1.圖示

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

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