四層與七層負載均衡的區別
轉自:http://blog.chinaunix.net/space.php?uid=20583479&do=blog&id=2982433
負載均衡裝置也常被稱為"四到七層交換機",那麼四層和七層兩者到底區別在哪裡?
七層就是基於URL等應用層資訊的負載均衡;
同理,還有基於MAC地址的二層負載均衡和基於IP地址的三層負載均衡。換句換說,二層負載均衡會通過一個虛擬MAC地址接收請求,然後再分配到真實的MAC地址;
三層負載均衡會通過一個虛擬IP地址接收請求,然後再分配到真實的IP地址;
四層通過虛擬IP+埠接收請求,然後再分配到真實的伺服器;
七層通過虛擬的URL或主機名接收請求,然後再分配到真實的伺服器。
第一,技術原理上的區別。
所謂四層負載均衡,也就是主要通過報文中的目標地址和埠,再加上負載均衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。
以常見的TCP為例,負載均衡裝置在接收到第一個來自客戶端的SYN 請求時,即通過上述方式選擇一個最佳的伺服器,並對報文中目標IP地址進行修改(改為後端伺服器IP),直接轉發給該伺服器。TCP的連線建立,即三次握手是客戶端和伺服器直接建立的,負載均衡裝置只是起到一個類似路由器的轉發動作。在某些部署情況下,為保證伺服器回包可以正確返回給負載均衡裝置,在轉發報文的同時可能還會對報文原來的源地址進行修改。
所謂七層負載均衡,也稱為“內容交換”,也就是主要通過報文中的真正有意義的應用層內容,再加上負載均衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。
以常見的TCP為例,負載均衡裝置如果要根據真正的應用層內容再選擇伺服器,只能先代理最終的伺服器和客戶端建立連線(三次握手)後,才可能接受到客戶端傳送的真正應用層內容的報文,然後再根據該報文中的特定欄位,再加上負載均衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。負載均衡裝置在這種情況下,更類似於一個代理伺服器。負載均衡和前端的客戶端以及後端的伺服器會分別建立TCP連線。所以從這個技術原理上來看,七層負載均衡明顯的對負載均衡裝置的要求更高,處理七層的能力也必然會低於四層模式的部署方式。那麼,為什麼還需要七層負載均衡呢?
第二,應用場景的需求。
七層應用負載的好處,是使得整個網路更"智慧化", 參考我們之前的另外一篇專門針對HTTP應用的優化的介紹 ,就可以基本上了解這種方式的優勢所在。例如訪問一個網站的使用者流量,可以通過七層的方式,將對圖片類的請求轉發到特定的圖片伺服器並可以使用快取技術;將對文字類的請求可以轉發到特定的文字伺服器並可以使用壓縮技術。當然這只是七層應用的一個小案例,從技術原理上,這種方式可以對客戶端的請求和伺服器的響應進行任意意義上的修改,極大的提升了應用系統在網路層的靈活性。很多在後臺,(例如Nginx或者Apache)上部署的功能可以前移到負載均衡裝置上,例如客戶請求中的Header重寫,伺服器響應中的關鍵字過濾或者內容插入等功能。
另外一個常常被提到功能就是安全性。網路中最常見的SYN Flood攻擊,即黑客控制眾多源客戶端,使用虛假IP地址對同一目標傳送SYN攻擊,通常這種攻擊會大量傳送SYN報文,耗盡伺服器上的相關資源,以達到Denial of Service (DoS )的目的。從技術原理上也可以看出,四層模式下這些SYN攻擊都會被轉發到後端的伺服器上;而七層模式下這些SYN攻擊自然在負載均衡裝置上就截止,不會影響後臺伺服器的正常運營。另外負載均衡裝置可以在七層層面設定多種策略,過濾特定報文,例如SQL Injection等應用層面的特定攻擊手段,從應用層面進一步提高系統整體安全。
現在的7層負載均衡,主要還是著重於應用廣泛的HTTP協議,所以其應用範圍主要是眾多的網站或者內部資訊平臺等基於B/S開發的系統。 4層負載均衡則對應其他TCP應用,例如基於C/S開發的ERP等系統。
第三,七層應用需要考慮的問題。
1:是否真的必要,七層應用的確可以提高流量智慧化,同時必不可免的帶來裝置配置複雜,負載均衡壓力增高以及故障排查上的複雜性等問題。在設計系統時需要考慮四層七層同時應用的混雜情況。
2:是否真的可以提高安全性。例如SYN Flood攻擊,七層模式的確將這些流量從伺服器遮蔽,但負載均衡裝置本身要有強大的抗DDoS能力,否則即使伺服器正常而作為中樞排程的負載均衡裝置故障也會導致整個應用的崩潰。
3:是否有足夠的靈活度。七層應用的優勢是可以讓整個應用的流量智慧化,但是負載均衡裝置需要提供完善的七層功能,滿足客戶根據不同情況的基於應用的排程。最簡單的一個考核就是能否取代後臺Nginx或者Apache等伺服器上的排程功能。能夠提供一個七層應用開發介面的負載均衡裝置,可以讓客戶根據需求任意設定功能,才真正有可能提供強大的靈活性和智慧性。
相關文章
- 四層和七層負載均衡的區別負載
- 四層/七層負載均衡裝置(-)負載
- 【知識分享】四層負載均衡和七層負載均衡負載
- 四七層負載均衡的區別負載
- linux負載均衡總結性說明(四層負載/七層負載)Linux負載
- 網路七層模型與四層模型區別模型
- Azure上七層負載均衡APP Gateway負載APPGateway
- windows第七層負載均衡 基於IIS的ARR負載均衡詳解Windows負載
- Nginx如何實現四層負載均衡?Nginx負載
- 負載均衡4層負載
- HAProxy 7層 負載均衡負載
- 網路七層模型(四層模型)及其區別模型
- windows伺服器第四層負載均衡_基於NLB負載均衡詳解Windows伺服器負載
- LVS#MySQL+Keepalived四層負載均衡MySql負載
- LB 負載均衡的層次結構負載
- B站邊緣網路四層負載均衡器的探索與應用負載
- 雲端中間層負載均衡工具 Eureka負載
- Nginx基於TCP/UDP埠的四層負載均衡(stream模組)配置梳理NginxTCPUDP負載
- 負載均衡7層nginx(提供軟體包)負載Nginx
- 網路的四層五層七層網路
- 【Nginx】面試官:給我講講Nginx如何實現四層負載均衡?Nginx面試負載
- 二層交換機 三層交換機 四層交換機的區別
- 二層、三層交換機和四層交換機的區別(轉)
- 基於滴滴雲部署 HAProxy 實現 7 層和 4 層負載均衡負載
- 四. SpringCloud負載均衡與呼叫SpringGCCloud負載
- 叢集、負載均衡、分散式的區別與聯絡負載分散式
- 網路是七層、五層還是四層?
- 四層反向代理和七層反向代理
- 簡述OSI七個層次與TCP/IP四個層次TCP
- 深入分析四層/七層閘道器
- OSI七層模型與TCP/IP五層模型TCP
- MVC與三層架構區別MVC架構
- OSI 七層模型與 TCP IP 五層模型模型TCP
- OSI七層模型與TCP/IP五層模型模型TCP
- 負載均衡和動態負載均衡分別是什麼?-VeCloud負載Cloud
- 計算機網路的七層結構、五層結構和四層結構計算機網路
- net三層架構與MVC的區別架構MVC
- 大白話聊OSI七層模型和TCP/IP四層模型模型TCP