1. 程式人生 > >利用負載均衡優化和加速HTTP應用

利用負載均衡優化和加速HTTP應用

轉載:http://virtualadc.blog.51cto.com/3027116/580832/

1.負載均衡技術簡介

現代企業資訊化應用越來越多的採用B/S應用架構來承載企業的關鍵業務,因此,確保這些任務的可靠執行就變得日益重要。隨著越來越多的企業實施資料集中,應用的擴充套件性、安全性和可靠性也越來越受到企業的重視。

負載均衡技術通過設定虛擬伺服器IPVIP),將後端多臺真實伺服器的應用資源虛擬成一臺高效能的應用伺服器,通過負載均衡演算法,將大量來自客戶端的應用請求分配到後端的伺服器進行處理。負載均衡裝置持續的對伺服器上的應用狀態進行檢查,並自動對無效的應用伺服器進行隔離,實現了一個簡單、擴充套件性強、可靠性高的應用解決方案。解決了單臺伺服器處理效能不足,擴充套件性不夠,可靠性較低的問題。

近年來,隨著Web2.0B/S技術的迅猛發展,HTTP應用逐漸成為當今的主流應用,而負載均衡技術也有了很大的發展。從傳統的基於四層埠號進行簡單的應用請求轉發,到目前基於七層內容進行請求的轉發和處理。尤其是在HTTP協議的優化和加速方面,一些技術逐漸發展成熟,如:TCP連線複用、內容快取、TCP緩衝、HTTP壓縮、SSL加速等。這些技術的應用有助於進一步改善使用者訪問響應時間、節約廣域網鏈路頻寬和伺服器資源。

2. HTTP優化和加速特性帶來的優勢

2.1 TCP 連線複用(TCP Connection Reuse)

TCP連線複用技術通過將前端多個客戶的HTTP請求複用到後端與伺服器建立的一個

TCP連線上。這種技術能夠大大減小伺服器的效能負載,減少與伺服器之間新建TCP連線所帶來的延時,並最大限度的降低客戶端對後端伺服器的併發連線數請求,減少伺服器的資源佔用。

一般情況下,客戶端在傳送HTTP請求之前需要先與伺服器進行TCP三次握手,建立TCP連線,然後傳送HTTP請求。伺服器收到HTTP請求後進行處理,並將處理的結果傳送回客戶端,然後客戶端和伺服器互相傳送FIN並在收到FINACK確認後關閉連線。在這種方式下,一個簡單的HTTP請求需要十幾個TCP資料包才能處理完成。

採用TCP連線複用技術後,客戶端(如:ClientA)與負載均衡裝置之間進行三次握手併發送HTTP請求。負載均衡裝置收到請求後,會檢測伺服器是否存在空閒的長連線,如果不存在,伺服器將建立一個新連線。當

HTTP請求響應完成後,客戶端則與負載均衡裝置協商關閉連線,而負載均衡則保持與伺服器之間的這個連線。當有其它客戶端(如:ClientB)需要傳送HTTP請求時,負載均衡裝置會直接向與伺服器之間保持的這個空閒連線傳送HTTP請求,避免了由於新建TCP連線造成的延時和伺服器資源耗費。

圖例 1  TCP連線複用(TCP Connection Reuse

HTTP 1.0中,客戶端的每一個HTTP請求都必須通過獨立的TCP連線進行處理,而在HTTP 1.1中,對這種方式進行了改進。客戶端可以在一個TCP連線中傳送多個HTTP請求,這種技術叫做HTTP複用(HTTP Multiplexing)。它與TCP連線複用最根本的區別在於,TCP連線複用是將多個客戶端的HTTP請求複用到一個伺服器端TCP連線上,而HTTP複用則是一個客戶端的多個HTTP請求通過一個TCP連線進行處理。前者是負載均衡裝置的獨特功能;而後者是HTTP 1.1協議所支援的新功能,目前被大多數瀏覽器所支援。

有些使用者和廠商喜歡採用連線複用率來評判一個負載均衡裝置的TCP連線複用技術的好壞。一般來說,TCP連線複用率是指一段時間內負載均衡裝置成功處理的客戶端HTTP請求總數與這段時間負載均衡與伺服器之間建立的TCP連線總數的比值。但是, TCP連線複用率和應用的特點、伺服器設定、計算週期以及請求的傳送模式等也有很大的關係,不同的應用環境下計算出來的TCP連線複用率會有很大的差異。其實,連線複用效率的關鍵在於負載均衡裝置是否能夠及時釋放已經空閒的伺服器端連線。有些廠商採用傳送HTTP響應後等待一定時間,如果這段時間內無資料傳輸即釋放該連線。而等待時間往往是秒級的,對於資料往返時間的毫秒級,其複用效果明顯不會很好。最為有效的連線複用技術是在負載均衡裝置給客戶端傳送HTTP響應之後,收到客戶端確認ACK資料包即釋放該連線。這種方式避免了任何額外的等待時間,理論上沒有更高效的複用方法。

2.2 內容快取(RAM Caching)

內容快取技術將應用伺服器中的一些經常被使用者訪問的熱點內容快取在負載均衡裝置的記憶體中。當客戶端訪問這些內容時,負載均衡裝置截獲客戶端請求,從快取中讀取客戶端需要的內容並將這些內容直接返回給客戶端。由於是直接從記憶體中讀取,這種技術能夠提高網路使用者的訪問速度,並大大減輕後端伺服器的負載情況。

內容快取的工作原理非常簡單,我們將通過下圖使用者訪問logo.gif的例項來解釋內容快取的工作過程:

1)當有客戶端發起對logo.gif的第一個請求時,負載均衡首先會檢查本地快取中是否存在該物件。如果不存在這個物件,負載均衡會將這個HTTP請求轉發給後端的伺服器;

2)伺服器收到對logo.gifHTTP請求後,將圖片內容迴應給負載均衡裝置;

3)負載均衡裝置將logo.gif物件快取在內容快取中,並將其傳送給客戶端;

4)後續的其它客戶端發起對logo.gif的訪問請求時,如果負載均衡檢測到內容快取中已經存在該物件,並確認該物件並未失效的話,負載均衡直接將該物件返回給客戶端,而無需伺服器再次傳送該物件。

圖例內容快取(RAM Caching

內容快取技術採用了HTTP協議中的一些標準快取處理技術,將本應儲存在客戶端本地瀏覽器快取中的內容共享給其他使用者。因此,對於客戶端來說,內容快取技術是完全透明的。最常見的物件包括:gif/jpg圖片,靜態的css/js/html等文字檔案等。

2.3 TCP緩衝機制

TCP緩衝是為了解決後端伺服器網速與客戶的前端網路速度不匹配而造成的伺服器資源浪費的問題。由於伺服器與負載均衡裝置之間的網路頻寬速率高,時延小,通過將伺服器端的請求緩衝在負載均衡裝置的緩衝區中,防止由於客戶端緩慢的網路鏈路和較高的時延造成伺服器端連線阻塞問題。

通過採用TCP緩衝技術,可以提高伺服器端響應時間和處理效率,減少由於通訊鏈路問題給伺服器造成的連線負擔。另外,由負載均衡裝置來處理網路阻塞造成的資料包重傳,使每個客戶端的流量得到最佳的控制。

圖例 3  TCP緩衝(TCP Buffer

如上圖所示,客戶端與負載均衡之間採用的鏈路具有較高的時延和較低的頻寬,而負載均衡與伺服器之間採用時延較低和高頻寬的區域網連線。

1)負載均衡收到客戶端發來的HTTP請求並將其轉發給後端的伺服器進行處理;

2)伺服器對請求進行處理後,將響應的內容依次返回負載均衡裝置,負載均衡裝置收到響應的資料包後,會將資料包依次快取在緩衝區中,伺服器的響應速度將依據負載均衡和伺服器之間的鏈路質量;

3)當負載均衡上快取了第一個響應的資料包後,負載均衡將響應的資料包按次序返回給客戶端,此時,響應的速度將依賴於負載均衡與客戶端之間的鏈路質量;

4)當響應內容資料包依次傳送給客戶端並收到客戶端的ACK確認請求後,負載均衡將緩衝區資源釋放出來為其它TCP連線使用。

TCP緩衝技術是L7應用負載均衡的核心,它將伺服器與客戶端之間的TCP連線分成兩個獨立的TCP連線,並分別進行處理,以適應兩邊不同的網路環境。此外,通過TCP緩衝技術,將客戶端的HTTP請求完整的接收下來並進行分析,還可以提供一些高階負載均衡的應用功能,如:URL-HashingURL交換(URL-Switching),基於Cookie或會話的連線保持(Cookie/Session Persistence)等等。

2.4 HTTP壓縮(HTTP Compression)

HTTP協議在v 1.1中新增了壓縮功能,如果客戶端瀏覽器和伺服器都支援壓縮功能的話,通過客戶端和伺服器進行協商,對客戶端的響應請求進行壓縮處理。大幅節省內容傳輸時所需要的頻寬,並加快客戶端的響應速度。但是,壓縮演算法本身需要耗費大量的CPU資源,因此,負載均衡裝置通過對HTTP壓縮功能進行支援,減輕Web伺服器的資源耗費,提高其處理效率。另外,由於負載均衡一般都採用硬體的方式進行壓縮,因此,壓縮的效率更高。此外,對於一些不支援HTTP壓縮功能的老版本的Web伺服器,通過啟用負載均衡上的壓縮功能,可以實現對系統的優化和加速。

圖例 4 HTTP壓縮(HTTP Compression

如上圖所示,在負載均衡上實現HTTP壓縮功能的流程如下:

1)客戶端與負載均衡建立TCP連線後,傳送HTTP請求(如Get請求),客戶端會將自身瀏覽器所支援的功能和配置情況傳送給負載均衡,如:是否支援壓縮、支援的壓縮演算法、是否支援Keep-alive(連線保持)、連線保持的時間等;

2)負載均衡在收到HTTP請求後,會將其中的有關壓縮的標記刪除,然後將請求轉發給伺服器進行處理;

3)伺服器將響應的內容轉發給負載均衡;

4)負載均衡收到響應的內容後,依照與客戶端之間協商的壓縮演算法對響應的內容進行壓縮,然後將壓縮後的內容傳送回客戶端;

5)客戶端收到響應的內容後,由瀏覽器對網頁內容進行解壓縮並進行瀏覽。

由於HTTP壓縮採用的是HTTP v1.1協議中支援的標準壓縮演算法,因此,目前主流的瀏覽器(如:Internet ExplorerFirefoxOperaNetscape等)均預設支援HTTP v1.1中的壓縮功能。對於使用者來說,無需修改瀏覽器配置也不需要安裝任何外掛。採用負載均衡來代替伺服器做壓縮,能夠大幅節省伺服器的資源,可以使伺服器專注於應用的處理,從而提高業務處理量。另外,即使伺服器不支援HTTP壓縮,通過負載均衡也能實現壓縮功能。

壓縮能力的大小取決於被壓縮物件的性質。一般來說,HTTP壓縮演算法對於文字格式的內容有較好的壓縮效率;而對於gif等圖片格式的內容,由於本身已經進行過壓縮處理,壓縮效率並不高。所以,需要負載均衡支援選擇性壓縮,即可以根據物件的型別進行選擇性壓縮。

2.5 SSL加速(SSL Acceleration

一般情況下,HTTP採用明文的方式在網路上傳輸,有可能被非法竊聽,尤其是用於認證的口令資訊等。為了避免出現這樣的安全問題,一般採用SSL協議(即:HTTPS)對HTTP協議進行加密,以保證整個傳輸過程的安全性。在SSL通訊中,首先採用非對稱金鑰技術交換認證資訊,並交換伺服器和瀏覽器之間用於加密資料的會話金鑰,然後利用該金鑰對通訊過程中的資訊進行加密和解密。

SSL是需要耗費大量CPU資源的一種安全技術。目前,大多數負載均衡裝置均採用SSL加速晶片進行SSL資訊的處理。這種方式比傳統的採用伺服器的SSL加密方式提供更高的SSL處理效能,從而節省大量的伺服器資源,使伺服器能夠專注於業務請求的處理。另外,採用集中的SSL處理,還能夠簡化對證書的管理,減少日常管理的工作量。

圖例 5 SSL加速

SSL的處理流程如下:

1)客戶端發起HTTPS連線請求,協商傳輸的加密演算法,確認雙方身份,並交換會話金鑰。

2)負載均衡收到客戶端加密的HTTPS請求後,對請求的資訊進行解密,然後通過HTTP的方式傳送給後端的伺服器。

3)伺服器將請求的處理結果返回給負載均衡裝置。

4)負載均衡裝置利用會話金鑰對請求的結果進行加密,然後將結果返回給客戶端。

5)客戶端採用會話金鑰對返回結果進行解密,並顯示在瀏覽器上。

在負載均衡裝置中實現SSL加速功能,只需要在負載均衡裝置上匯入SSL證書和金鑰即可。當客戶端發起對虛擬伺服器的HTTPS請求時,負載均衡裝置自動和客戶端進行SSL協議的協商並交換會話金鑰。客戶端傳送的請求以及負載均衡返回的響應均採用會話金鑰進行加密,而負載均衡裝置與後端伺服器之間則採用HTTP的方式進行請求的傳送和處理。

3. 在實際環境中應用負載均衡產品需要注意的問題

負載均衡裝置提供的這些HTTP優化和加速功能,能夠大大的降低客戶端的響應時間,降低頻寬利用率,並且能降低伺服器端負載情況,節省伺服器資源。但是,目前主流的負載均衡產品在同時開啟多個HTTP優化和加速功能時,裝置的處理效能會大大降低。儘管各個廠家均宣稱自己的裝置有較高的效能處理指標,並通過第三方的測評機構公佈一些產品效能測試資料,但是,這些資料一般都是在一些特別設定的實驗環境下測試出來的,只能作為不同廠商產品之間效能對比的依據,而不能作為使用者實際應用環境的選型依據。

此外,大多數廠商都採用基本硬體平臺上加裝功能卡或購買許可證的方式提供這些HTTP的優化和加速功能。如果使用者想在應用加速的整體解決方案中採用這些功能,需要花費更多的採購成本。對於使用者來說,這些高階特性和功能如同水中之月,可望而不可及。因此,在選購負載均衡產品的時候,一定要了解自己的應用究竟需要採用哪些功能特性,而實現這些特性又需要哪些額外的費用。

A10 NetworksAX系列高階流量管理器採用目前主流的高效能多核CPU進行設計開發,通過結合四層流量處理ASIC和自主研發的ACOS系統,提供無比的效能優勢,尤其是在開啟多個優化和加速特性後,仍能保持較高的處理效能。20081月,在Tolly Group的測試中,單臺AX裝置實現了每秒百萬的交易處理量,是截至目前唯一實現每秒百萬級交易處理量的負載均衡裝置。AX以其卓越的效能為客戶提供最佳價效比,並提供最大的每瓦特效能,滿足當今綠色計算對節能的要求。此外,AX產品採用all-in-one的銷售模式,在單臺硬體裝置中提供所有的高階功能特性,如:內容快取,HTTP壓縮,SSL加速,IPv6GSLB等。這些功能已經內建在AXACOS系統之中,不需要使用者花費任何額外的費用。AX這種新的銷售模式可以為使用者帶來巨大的利益,節省使用者投資成本。