什么是四層和七層負載均衡?他們之間的區(qū)別是什么?
在網(wǎng)站創(chuàng)立初期,我們一般都使用單臺機器對臺提供集中式服務,但是隨著業(yè)務量越來越大,無論是性能上還是穩(wěn)定性上都有了更大的挑戰(zhàn)。這時候我們就會想到通過擴容的方式來提供更好的服務。
我們一般會把多臺機器組成一個集群對外提供服務。然而,我們的網(wǎng)站對外提供的訪問入口都是一個的,比如www.taobao.com。那么當用戶在瀏覽器輸入www.taobao.com的時候如何將用戶的請求分發(fā)到集群中不同的機器上呢,這就是負載均衡在做的事情。
網(wǎng)絡技術
(一)簡單理解四層和七層負載均衡:
① 所謂四層就是基于IP+端口的負載均衡;七層就是基于URL等應用層信息的負載均衡;同理,還有基于MAC地址的二層負載均衡和基于IP地址的三層負載均衡。 換句換說,二層負載均衡會通過一個虛擬MAC地址接收請求,然后再分配到真實的MAC地址;三層負載均衡會通過一個虛擬IP地址接收請求,然后再分配到真實的IP地址;四層通過虛擬IP+端口接收請求,然后再分配到真實的服務器;七層通過虛擬的URL或主機名接收請求,然后再分配到真實的服務器。
② 所謂的四到七層負載均衡,就是在對后臺的服務器進行負載均衡時,依據(jù)四層的信息或七層的信息來決定怎么樣轉發(fā)流量。 比如四層的負載均衡,就是通過發(fā)布三層的IP地址(VIP),然后加四層的端口號,來決定哪些流量需要做負載均衡,對需要處理的流量進行NAT處理,轉發(fā)至后臺服務器,并記錄下這個TCP或者UDP的流量是由哪臺服務器處理的,后續(xù)這個連接的所有流量都同樣轉發(fā)到同一臺服務器處理。七層的負載均衡,就是在四層的基礎上(沒有四層是絕對不可能有七層的),再考慮應用層的特征,比如同一個Web服務器的負載均衡,除了根據(jù)VIP加80端口辨別是否需要處理的流量,還可根據(jù)七層的URL、瀏覽器類別、語言來決定是否要進行負載均衡。舉個例子,如果你的Web服務器分成兩組,一組是中文語言的,一組是英文語言的,那么七層負載均衡就可以當用戶來訪問你的域名時,自動辨別用戶語言,然后選擇對應的語言服務器組進行負載均衡處理。
③ 負載均衡器通常稱為四層交換機或七層交換機。四層交換機主要分析IP層及TCP/UDP層,實現(xiàn)四層流量負載均衡。七層交換機除了支持四層負載均衡以外,還有分析應用層的信息,如HTTP協(xié)議URI或Cookie信息。
- 負載均衡分為L4 switch(四層交換),即在OSI第4層工作,就是TCP層啦。此種Load Balance不理解應用協(xié)議(如HTTP/FTP/MySQL等等)。例子:LVS,F(xiàn)5。
- 另一種叫做L7 switch(七層交換),OSI的頂層,應用層。此時,該Load Balancer能理解應用協(xié)議。例子: haproxy,MySQL Proxy。
注意:上面的很多Load Balancer既可以做四層交換,也可以做七層交換。
(二)負載均衡設備也常被稱為”四到七層交換機”,那么四層和七層兩者到底區(qū)別在哪里?
一是,技術原理上的區(qū)別。
所謂四層負載均衡,也就是主要通過報文中的目標地址和端口,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。
以常見的TCP為例,負載均衡設備在接收到一個來自客戶端的SYN 請求時,即通過上述方式選擇一個合適的服務器,并對報文中目標IP地址進行修改(改為后端服務器IP),直接轉發(fā)給該服務器。TCP的連接建立,即三次握手是客戶端和服務器直接建立的,負載均衡設備只是起到一個類似路由器的轉發(fā)動作。在某些部署情況下,為保證服務器回包可以正確返回給負載均衡設備,在轉發(fā)報文的同時可能還會對報文原來的源地址進行修改。
所謂七層負載均衡,也稱為“內容交換”,也就是主要通過報文中的真正有意義的應用層內容,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。
以常見的TCP為例,負載均衡設備如果要根據(jù)真正的應用層內容再選擇服務器,只能先代理最終的服務器和客戶端建立連接(三次握手)后,才可能接受到客戶端發(fā)送的真正應用層內容的報文,然后再根據(jù)該報文中的特定字段,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器。負載均衡設備在這種情況下,更類似于一個代理服務器。負載均衡和前端的客戶端以及后端的服務器會分別建立TCP連接。所以從這個技術原理上來看,七層負載均衡明顯的對負載均衡設備的要求更高,處理七層的能力也必然會低于四層模式的部署方式。
第二,應用場景的需求。
七層應用負載的好處,是使得整個網(wǎng)絡更”智能化“。例如訪問一個網(wǎng)站的用戶流量,可以通過七層的方式,將對圖片類的請求轉發(fā)到特定的圖片服務器并可以使用緩存技術;將對文字類的請求可以轉發(fā)到特定的文字服務器并可以使用壓縮技術。當然這只是七層應用的一個小案例,從技術原理上,這種方式可以對客戶端的請求和服務器的響應進行任意意義上的修改,極大的提升了應用系統(tǒng)在網(wǎng)絡層的靈活性。很多在后臺,例如Nginx或者Apache上部署的功能可以前移到負載均衡設備上,例如客戶請求中的Header重寫,服務器響應中的關鍵字過濾或者內容插入等功能。
另外一個常常被提到功能就是安全性。網(wǎng)絡中最常見的SYN Flood,即黑客控制眾多源客戶端,使用虛假IP地址對同一目標發(fā)送SYN,通常這種威脅會大量發(fā)送SYN報文,耗盡服務器上的相關資源,以達到Denial of Service(DoS)的目的。從技術原理上也可以看出,四層模式下這些SYN都會被轉發(fā)到后端的服務器上;而七層模式下這些SYN自然在負載均衡設備上就截止,不會影響后臺服務器的正常運營。另外負載均衡設備可以在七層層面設定多種策略,過濾特定報文,例如SQL Injection等應用層面的特定威脅手段,從應用層面進一步提高系統(tǒng)整體安全。
現(xiàn)在的7層負載均衡,主要還是著重于應用HTTP協(xié)議,所以其應用范圍主要是眾多的網(wǎng)站或者內部信息平臺等基于B/S開發(fā)的系統(tǒng)。 4層負載均衡則對應其他TCP應用,例如基于C/S開發(fā)的ERP等系統(tǒng)。
第三,七層應用需要考慮的問題。
1:是否真的必要,七層應用的確可以提高流量智能化,同時必不可免的帶來設備配置復雜,負載均衡壓力增高以及故障排查上的復雜性等問題。在設計系統(tǒng)時需要考慮四層七層同時應用的混雜情況。
2:是否真的可以提高安全性。例如SYN Flood攻擊,七層模式的確將這些流量從服務器屏蔽,但負載均衡設備本身要有強大的抗DDoS能力,否則即使服務器正常而作為中樞調度的負載均衡設備故障也會導致整個應用的崩潰。
3:是否有足夠的靈活度。七層應用的優(yōu)勢是可以讓整個應用的流量智能化,但是負載均衡設備需要提供完善的七層功能,滿足客戶根據(jù)不同情況的基于應用的調度。最簡單的一個考核就是能否取代后臺Nginx或者Apache等服務器上的調度功能。能夠提供一個七層應用開發(fā)接口的負載均衡設備,可以讓客戶根據(jù)需求任意設定功能,才真正有可能提供強大的靈活性和智能性。
(三)負載均衡四七層介紹:
負載均衡(Load Balance)建立在現(xiàn)有網(wǎng)絡結構之上,它提供了一種廉價有效透明的方法擴展網(wǎng)絡設備和服務器的帶寬、增加吞吐量、加強網(wǎng)絡數(shù)據(jù)處理能力、提高網(wǎng)絡的靈活性和可用性。
負載均衡有兩方面的含義:首先,大量的并發(fā)訪問或數(shù)據(jù)流量分擔到多臺節(jié)點設備上分別處理,減少用戶等待響應的時間;其次,單個重負載的運算分擔到多臺節(jié)點設備上做并行處理,每個節(jié)點設備處理結束后,將結果匯總,返回給用戶,系統(tǒng)處理能力得到大幅度提高。
本文所要介紹的負載均衡技術主要是指在均衡服務器群中所有服務器和應用程序之間流量負載的應用,目前負載均衡技術大多數(shù)是用于提高諸如在Web服務器、FTP服務器和其它關鍵任務服務器上的Internet服務器程序的可用性和可伸縮性。
負載均衡技術分類
目前有許多不同的負載均衡技術用以滿足不同的應用需求,下面從負載均衡所采用的設備對象、應用的網(wǎng)絡層次(指OSI參考模型)及應用的地理結構等來分類。
軟/硬件負載均衡
軟件負載均衡解決方案是指在一臺或多臺服務器相應的操作系統(tǒng)上安裝一個或多個附加軟件來實現(xiàn)負載均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的優(yōu)點是基于特定環(huán)境,配置簡單,使用靈活,成本低廉,可以滿足一般的負載均衡需求。
軟件解決方案缺點也較多,因為每臺服務器上安裝額外的軟件運行會消耗系統(tǒng)不定量的資源,越是功能強大的模塊,消耗得越多,所以當連接請求特別大的時候,軟件本身會成為服務器工作成敗的一個關鍵;軟件可擴展性并不是很好,受到操作系統(tǒng)的限制;由于操作系統(tǒng)本身的Bug,往往會引起安全問題。
硬件負載均衡解決方案是直接在服務器和外部網(wǎng)絡間安裝負載均衡設備,這種設備我們通常稱之為負載均衡器,由于專門的設備完成專門的任務,獨立于操作系統(tǒng),整體性能得到大量提高,加上多樣化的負載均衡策略,智能化的流量管理,可達到最佳的負載均衡需求。
負載均衡器有多種多樣的形式,除了作為獨立意義上的負載均衡器外,有些負載均衡器集成在交換設備中,置于服務器與Internet鏈接之間,有些則以兩塊網(wǎng)絡適配器將這一功能集成到PC中,一塊連接到Internet上,一塊連接到后端服務器群的內部網(wǎng)絡上。
一般而言,硬件負載均衡在功能、性能上優(yōu)于軟件方式,不過成本昂貴。