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

原文:http://kb.cnblogs.com/page/104894/

1. 負載均衡技術簡介

  現代企業信息化應用越來越多的採用B/S應用架構來承載企業的關鍵業務,因此,確保這些任務的可靠運行就變得日益重要。隨着越來越多的企業實施數據集中,應用的擴展性、安全性和可靠性也越來越受到企業的重視。

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

  近年來,隨着Web2.0和B/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並在收到FIN的ACK確認後關閉連接。在這種方式下,一個簡單的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.gif的HTTP請求後,將圖片內容迴應給負載均衡設備;

  3、負載均衡設備將logo.gif對象緩存在內容緩存中,並將其發送給客戶端;

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

圖例 2  內容緩存(RAM Caching)

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

  2.3. TCP緩衝(TCP Buffer)

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

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

圖例 3  TCP緩衝(TCP Buffer)

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

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

  2、服務器對請求進行處理後,將響應的內容依次返回負載均衡設備,負載均衡設備收到響應的數據包後,會將數據包依次緩存在緩衝區中,服務器的響應速度將依據負載均衡和服務器之間的鏈路質量;

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

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

  TCP緩衝技術是L7應用負載均衡的核心,它將服務器與客戶端之間的TCP連接分成兩個獨立的TCP連接,並分別進行處理,以適應兩邊不同的網絡環境。此外,通過TCP緩衝技術,將客戶端的HTTP請求完整的接收下來並進行分析,還可以提供一些高級負載均衡的應用功能,如:URL-Hashing,URL交換(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 Explorer,Firefox,Opera,Netscape等)均默認支持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 Networks的AX系列高級流量管理器採用目前主流的高性能多核CPU進行設計開發,通過結合四層流量處理ASIC和自主研發的ACOS系統,提供無比的性能優勢,尤其是在開啓多個優化和加速特性後,仍能保持較高的處理性能。2008年1月,在Tolly Group的測試中,單臺AX設備實現了每秒百萬的交易處理量,是截至目前唯一實現每秒百萬級交易處理量的負載均衡設備。AX以其卓越的性能爲客戶提供最佳性價比,並提供最大的每瓦特性能,滿足當今綠色計算對節能的要求。此外,AX產品採用all-in-one的銷售模式,在單臺硬件設備中提供所有的高級功能特性,如:內容緩存,HTTP壓縮,SSL加速,IPv6,GSLB等。這些功能已經內置在AX的ACOS系統之中,不需要用戶花費任何額外的費用。AX這種新的銷售模式可以爲用戶帶來巨大的利益,節省用戶投資成本。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章