先提下咱們所說的四層,七層,你們都知道咱們網絡七層協議(OSI):7:應用層、6:表示層、5:會話層、4:傳輸層、3:網絡層、2:數據鏈路層、1:物理層。 前端
應用層(Application Layer) 程序員
與其它計算機進行通信的一個應用,它是對應應用程序的通訊服務的。例如,一個沒有通訊功能的字處理程序就不能執行通訊的代碼,從事字處理工 做的程序員也不關心OSI的第7層。可是,若是添加了一個傳輸文件的選項,那麼字處理器的程序員就須要實現OSI的第7層。示 例:telnet,HTTP,FTP,NFS,SMTP等。 後端
表示層(Presentation Layer) 瀏覽器
這一層的主要功能是定義數據格式及加密。例如,FTP容許你選擇以二進制或ASCII格式傳輸。若是選擇二進制,那麼發送方和接收方不改變 文件的內容。若是選擇ASCII格式,發送方將把文本從發送方的字符集轉換成標準的ASCII後發送數據。在接收方將標準的ASCII轉換成接收方計算機 的字符集。示例:加密,ASCII等。 緩存
會話層(Session Layer) 安全
它定義瞭如何開始、控制和結束一個會話,包括對多個雙向消息的控制和管理,以便在只完成連續消息的一部分時能夠通知應用,從而使表示層看到的數據是連續的,在某些狀況下,若是表示層收到了全部的數據,則用數據表明表示層。示例:RPC,SQL等。 服務器
傳輸層(Transport Layer) 網絡
這層的功能包括是否選擇差錯恢復協議仍是無差錯恢復協議,及在同一主機上對不一樣應用的數據流的輸入進行復用,還包括對收到的順序不對的數據包的從新排序功能。示例:TCP,UDP,SPX。 負載均衡
網絡層(Network Layer) 學習
這層對端到端的包傳輸進行定義,它定義了可以標識全部結點的邏輯地址,還定義了路由實現的方式和學習的方式。爲了適應最大傳輸單元長度小於包長度的傳輸介質,網絡層還定義瞭如何將一個包分解成更小的包的分段方法。示例:IP,IPX等。
數據鏈路層(Data Link Layer)
它定義了在單個鏈路上如何傳輸數據。這些協議與被討論的各類介質有關。示例:ATM,FDDI等。
物理層(Physical Layer)
OSI的物理層規範是有關傳輸介質的特性標準,這些規範一般也參考了其餘組織制定的標準。鏈接頭、幀、幀的使用、電流、編碼及光調製等都屬於各類物理層規範中的內容。物理層經常使用多個規範完成對全部細節的定義。示例:Rj45,802.3等。
簡單瞭解了網絡協議七層結構以後咱們在簡單看了解四層和七層負載均衡。
顧名思義:
L4 switch(四層交換)負載均衡:即在OSI第四層工做,就是傳輸層。即基於IP+端口的負載均衡,如LVS,F5。其實還有基於MAC地址的二層負載 均衡和基於IP地址的三層負載均衡。換句話說,二層負載均衡會經過一個虛擬的MAC地址接收請求,而後分配到真是的MAC地址;三層負載均衡會經過一個虛 擬IP地址接收請求,而後再分配到真實的IP地址;四層經過虛擬IP+端口接收請求,而後再分配到真實的服務器;七層經過虛擬的URL或主機名接收請求, 而後再分配到真實的服務器。
L7 switch(七層交換)負載均衡:OSI的最高層,應用層。如haproxy,MySQL Proxy。即基於URL等應用層信息的負載均衡。
所謂的4、七層負載均衡,就是在對後臺的服務器進行負載均衡時,依據四層的信息或七層的信息來決定怎麼樣轉發流量。 好比四層的負載均衡,就是經過發佈三層的IP地址(VIP),而後加四層的端口號,來決定哪些流量須要作負載均衡,對須要處理的流量進行NAT處理,轉發 至後臺服務器,並記錄下這個TCP或者UDP的流量是由哪臺服務器處理的,後續這個鏈接的全部流量都一樣轉發到同一臺服務器處理。七層的負載均衡,就是在 四層的基礎上(沒有四層是絕對不可能有七層的),再考慮應用層的特徵,好比同一個Web服務器的負載均衡,除了根據VIP加80端口辨別是否須要處理的流 量,還可根據七層的URL、瀏覽器類別、語言來決定是否要進行負載均衡。舉個例子,若是你的Web服務器分紅兩組,一組是中文語言的,一組是英文語言的, 那麼七層負載均衡就能夠當用戶來訪問你的域名時,自動辨別用戶語言,而後選擇對應的語言服務器組進行負載均衡處理。
負載均衡器一般稱爲四層交換機或七層交換機。四層交換機主要分析IP層及TCP/UDP層,實現四層流量負載均衡。七層交換機除了支持四層負載均衡之外,還有分析應用層的信息,如HTTP協議URI或Cookie信息。
第一,技術原理上的區別。
所謂四層負載均衡,也就是主要經過報文中的目標地址和端口,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。
以常見的TCP爲例,負載均衡設備在接收到第一個來自客戶端的SYN 請求時,即經過上述方式選擇一個最佳的服務器,並對報文中目標IP地址進行修改(改成後端服務器IP),直接轉發給該服務器。TCP的鏈接創建,即三次握 手是客戶端和服務器直接創建的,負載均衡設備只是起到一個相似路由器的轉發動做。在某些部署狀況下,爲保證服務器回包能夠正確返回給負載均衡設備,在轉發 報文的同時可能還會對報文原來的源地址進行修改。
所謂七層負載均衡,也稱爲「內容交換」,也就是主要經過報文中的真正有意義的應用層內容,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。
以常見的TCP爲例,負載均衡設備若是要根據真正的應用層內容再選擇服務器,只能先代理最終的服務器和客戶端創建鏈接(三次握手)後,纔可能接 受到客戶端發送的真正應用層內容的報文,而後再根據該報文中的特定字段,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。負載均衡設 備在這種狀況下,更相似於一個代理服務器。負載均衡和前端的客戶端以及後端的服務器會分別創建TCP鏈接。因此從這個技術原理上來看,七層負載均衡明顯的 對負載均衡設備的要求更高,處理七層的能力也必然會低於四層模式的部署方式。
第二,應用場景的需求。
七層應用負載的好處,是使得整個網絡更"智能化"。例如訪問一個網站的用戶流量,能夠經過七層的方式,將對 圖片類的請求轉發到特定的圖片服務器並可使用緩存技術;將對文字類的請求能夠轉發到特定的文字服務器並可使用壓縮技術。固然這只是七層應用的一個小案 例,從技術原理上,這種方式能夠對客戶端的請求和服務器的響應進行任意意義上的修改,極大的提高了應用系統在網絡層的靈活性。不少在後臺,例如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等服務器上的調度功能。可以提供一個七層應 用開發接口的負載均衡設備,可讓客戶根據需求任意設定功能,才真正有可能提供強大的靈活性和智能性。
部分摘自:http://kb.cnblogs.com/page/188170/