天天看點

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

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

1、負載均衡技術簡介

負載均衡技術通過設定虛拟伺服器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連接配接造成的延時和伺服器資源耗費。

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

2.2、内容緩存(RAM Caching)

内容緩存技術将應用伺服器中的一些經常被使用者通路的熱點内容緩存在負載均衡裝置的記憶體中。當用戶端通路這些内容時,負載均衡裝置截獲用戶端請求,從緩存中讀取用戶端需要的内容并将這些内容直接傳回給用戶端。由于是直接從記憶體中讀取,這種技術能夠提高網絡使用者的通路速度,并大大減輕後端伺服器的負載情況。

内容緩存技術采用了HTTP協定中的一些标準緩存處理技術,将本應儲存在用戶端本地浏覽器緩存中的内容共享給其他使用者。是以,對于用戶端來說,内容緩存技術是完全透明的。最常見的對象包括:gif/jpg圖檔,靜态的css/js/html等文本檔案等。

2.3、TCP緩沖機制

TCP緩沖是為了解決後端伺服器網速與客戶的前端網絡速度不比對而造成的伺服器資源浪費的問題。由于伺服器與負載均衡裝置之間的網絡帶寬速率高,時延小,通過将伺服器端的請求緩沖在負載均衡裝置的緩沖區中,防止由于用戶端緩慢的網絡鍊路和較高的時延造成伺服器端連接配接阻塞問題(用戶端網絡慢會導緻單個用戶端的請求和響應時間增長,用戶端一多起來就會導緻伺服器連接配接阻塞)。

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

TCP緩存流程如下:

  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伺服器,通過啟用負載均衡上的壓縮功能,可以實作對系統的優化和加速。

在負載均衡上實作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處理,還能夠簡化對證書的管理,減少日常管理的工作量。

SSL的處理流程如下:

  1. 用戶端發起HTTPS連接配接請求,協商傳輸的加密算法,确認雙方身份,并交換會話密鑰。
  2. 負載均衡收到用戶端加密的HTTPS請求後,對請求的資訊進行解密,然後通過HTTP的方式發送給後端的伺服器。
  3. 伺服器将請求的處理結果傳回給負載均衡裝置。
  4. 負載均衡裝置利用會話密鑰對請求的結果進行加密,然後将結果傳回給用戶端。
  5. 用戶端采用會話密鑰對傳回結果進行解密,并顯示在浏覽器上。

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

繼續閱讀