四层LVS与七层Nginx负载均衡的区别
一、四層負載均衡與七層負載均衡:
(1)四層負載均衡:
????????四層負載均衡工作在 OSI 七層模型的第四層(傳輸層),指的是負載均衡設備通過報文中的目標IP地址、端口和負載均衡算法,選擇到達的目標內(nèi)部服務器,四層負載均衡對數(shù)據(jù)包只起一個數(shù)據(jù)轉(zhuǎn)發(fā)的作用,無法修改或判斷所請求資源的具體類型,也不會干預客戶端與服務器之間應用層的通信(如三次握手等)。但在某些部署情況下,為保證服務器回包可以正確返回給負載均衡設備,在轉(zhuǎn)發(fā)報文的同時可能會對報文原來的源地址進行修改。
????????四層負載均衡單純的提供了終端到終端的可靠連接,并將請求轉(zhuǎn)發(fā)至后端,連接至始至終都是同一個。LVS就是很典型的四層負載均衡。
(2)七層負載均衡:
????????七層負載均衡工作在 OSI 模型的第七層(應用層),指的是負載均衡設備通過請求報文中的應用層信息(如URL、HTTP頭部、資源類型等信息)和負載均衡算法,選擇到達的目標內(nèi)部服務器。七層負載均衡的功能更加豐富靈活,另外七層負載均衡兩端(面向用戶端和服務器端)的連接都是獨立的,在一定程度上也提升了后端系統(tǒng)的安全性,因為像網(wǎng)絡常見的DoS攻擊,在七層負載均衡的環(huán)境下通常在負載均衡設備上就截止了,不會影響到后臺服務器的正常運行。比如常見 Nginx 就是運行在七層的負載均衡軟件
總之,四層負載均衡就是基于IP+端口實現(xiàn)的,七層負載均衡就是通過應用層資源實現(xiàn)的。
二、Lvs、Nginx 和 HAproxy 的對比:
????????目前常見的負載均衡主要分為硬件負載均衡和軟件負載均衡。硬件負載均衡比較知名的產(chǎn)品有 F5、Cirtix Netscaler等,而軟件負載均衡常見的有 Haproxy、Nginx、Lvs 等
1、LVS:
- (1)抗負載能力強、性能高,能達到硬件 F5 的 60%;對內(nèi)存和 CPU 資源消耗比較低
- (2)穩(wěn)定性、可靠性好,自身有完美的熱備方案;(如:LVS+Keepalived)
- (3)工作在網(wǎng)絡4層,通過vrrp協(xié)議轉(zhuǎn)發(fā)(僅作分發(fā)之用),具體的流量由linux內(nèi)核處理,因此沒有流量的產(chǎn)生。
- (4)支持負載均衡算法:rr(輪循)、wrr(帶權(quán)輪循)、lc(最小連接)、wlc(權(quán)重最小連接)
- (5)應用范圍比較廣,可以對所有應用做負載均衡;
- (6)不支持正則處理,不能做動靜分離。
- (7)配置復雜,對網(wǎng)絡依賴比較大。
2、Nginx:
- (1)可以穩(wěn)定承擔高負載壓力,一般能支撐超過1萬次的并發(fā),Nginx 對請求的異步處理可以減輕服務器節(jié)點負載
- (2)工作在網(wǎng)絡的7層,可以針對請求報文中的應用層信息做一些分流的策略,比如針對域名、目錄結(jié)構(gòu),但是 Nginx 僅能支持 http、https 和 Email 協(xié)議,這樣就在適用范圍較小。
- (3)支持負載均衡算法:Round-robin(輪循)、Weight-round-robin(帶權(quán)輪循)、Ip-hash(Ip哈希)
- (4)Nginx 對網(wǎng)絡的依賴小,理論上能ping通就能進行負載功能;安裝和配置簡單,測試方便;并且 Nginx還能做Web服務器即Cache功能
- (5)Nginx 對后端服務器的健康檢查只支持通過端口檢測,不支持 URL 來檢測。
- (6)不支持 Session 的直接保持,但能通過 ip_hash 來解決,對Big request header的支持不是很好
3、HAProxy:
(1)在性能上,HAProxy 的負載均衡速度比 Nginx 更出色
(2)支持兩種代理模式,TCP(四層)和 HTTP(七層),也支持虛擬主機;
(3)支持負載均衡算法:Round-robin(輪循)、Weight-round-robin(帶權(quán)輪循)、加權(quán)源地址哈希(Weighted Source Hash),加權(quán)URL哈希和加權(quán)參數(shù)哈希(Weighted Parameter Hash)、rdp-cookie(根據(jù)cookie)
(4)HAProxy 可以對 Mysql 進行負載均衡,對后端的DB節(jié)點進行檢測和負載均衡。
(5)能夠補充 Nginx 的一些缺點,比如Session的保持,Cookie的引導等工作
(6)不能做Web服務器即Cache。
參考文章:https://www.jianshu.com/p/572005e00d16
總結(jié)
以上是生活随笔為你收集整理的四层LVS与七层Nginx负载均衡的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是RPC?RPC框架dubbo的核心
- 下一篇: Java IO篇:序列化与反序列化