專利名稱:負(fù)載均衡系統(tǒng)及其使用方法
技術(shù)領(lǐng)域:
本發(fā)明涉及負(fù)載均衡系統(tǒng)。
背景技術(shù):
逐漸地,因特網(wǎng)作為例如在消費(fèi)者的客戶計(jì)算機(jī)和廠商的服務(wù)器計(jì)算機(jī)之間的電子事務(wù)的媒介而越來越流行。
萬維網(wǎng)(WWW)是廣域信息檢索設(shè)施,它提供對海量的可通過網(wǎng)絡(luò)訪問的信息的訪問。
參考圖1,在萬維網(wǎng)(WWW)環(huán)境(100)中,客戶計(jì)算機(jī)(105)使用超文本傳輸協(xié)議(HTTP)通過因特網(wǎng)(115)與Web服務(wù)器(即,服務(wù)器1和服務(wù)器2)進(jìn)行通信。應(yīng)該理解,服務(wù)器1和服務(wù)器2也可以是應(yīng)用服務(wù)器。Web服務(wù)器使用被稱為超文本標(biāo)記語言(HTML)的標(biāo)準(zhǔn)頁描述語言來向用戶提供對諸如文本、圖形、圖像、聲音、視頻等文件的訪問。HTML提供基本的文檔格式化,并允許開發(fā)人員規(guī)定被稱為超鏈接的到其他服務(wù)器和文件的連接。在因特網(wǎng)范例中,到Web服務(wù)器的網(wǎng)絡(luò)路徑是由具有用來定義網(wǎng)絡(luò)連接的特殊語法的統(tǒng)一資源定位符(URL)所標(biāo)識的。
Web瀏覽器(110)作為在客戶計(jì)算機(jī)(105)上運(yùn)行的應(yīng)用,使用戶能夠通過鏈接規(guī)范(即,HTTP請求)經(jīng)由URL來訪問信息并且在不同的HTML(Web)頁之間導(dǎo)航,所述Web瀏覽器例如Netscape Navigator(Netscape Navigator是Netscape Communications公司的注冊商標(biāo))或Microsoft Internet Explorer(Microsoft、Windows、Windows NT和Windows徽標(biāo)都是Microsoft公司在美國或其他國家或以上兩者內(nèi)的商標(biāo))。
隨著因特網(wǎng)上的活動層級的增加,通過安全信道交換敏感數(shù)據(jù)的需求同樣變得非常重要。安全套接層(SSL)協(xié)議是來自NetscapeCommunications公司的用來建立通過因特網(wǎng)進(jìn)行通信的安全信道的實(shí)際標(biāo)準(zhǔn),藉由該標(biāo)準(zhǔn),通過利用該信道,數(shù)據(jù)可在服務(wù)器計(jì)算機(jī)和客戶計(jì)算機(jī)之間被安全發(fā)送。后來對安全套接層的增強(qiáng)(被稱為傳輸層安全協(xié)議(TLS))也是很通用的。TLS以與SSL類似的方式操作,在此這兩種協(xié)議都將被稱為“SSL”。
SSL協(xié)議包括兩種子協(xié)議,即SSL握手協(xié)議和SSL記錄協(xié)議。SSL握手協(xié)議利用SSL記錄協(xié)議來允許Web服務(wù)器計(jì)算機(jī)和客戶計(jì)算機(jī)在任何數(shù)據(jù)被傳送之前互相驗(yàn)證并協(xié)商加密算法和密鑰。典型地,客戶計(jì)算機(jī)發(fā)送未經(jīng)加密的啟動消息(被稱為ClientHello消息)到Web服務(wù)器。作為響應(yīng),Web服務(wù)器發(fā)送包括密鑰、證書等的ServerHello消息。ServerHello消息包括未經(jīng)加密的標(biāo)識符(即,session_id)。
客戶計(jì)算機(jī)和Web服務(wù)器可在握手過程中交換若干另外的消息。一旦握手已完成,就建立使用經(jīng)協(xié)商的密鑰等來進(jìn)行加密的SSL連接。
客戶計(jì)算機(jī)和Web服務(wù)器當(dāng)前可通過使用SSL記錄協(xié)議而在SSL連接上交換應(yīng)用層數(shù)據(jù)。SSL記錄協(xié)議被分層于某種可靠的傳輸協(xié)議(例如傳輸控制協(xié)議(TCP))的頂端,并定義數(shù)據(jù)傳輸?shù)母袷?。在操作中,HTTP請求通過經(jīng)加密的SSL連接從Web服務(wù)器發(fā)送到客戶計(jì)算機(jī)。通過SSL連接對HTTP的使用被稱為HTTPS。
由于因特網(wǎng)上的通信量,網(wǎng)站典型地由被稱為Web場(Web farm)的多個Web服務(wù)器所支持。主要的性能挑戰(zhàn)是要有效地均衡Web服務(wù)器上的負(fù)載,由此最小化在系統(tǒng)上獲得的平均響應(yīng)時間。過度利用Web服務(wù)器可導(dǎo)致過度的請求延遲。另一方面,不充分利用Web服務(wù)器是浪費(fèi)的。
負(fù)載均衡器(120)負(fù)責(zé)通過網(wǎng)絡(luò)(125)把請求從客戶計(jì)算機(jī)(105)路由到Web服務(wù)器(即,服務(wù)器1或服務(wù)器2)。典型地,請求可被隨機(jī)路由到Web服務(wù)器。可替換地,請求可基于與Web服務(wù)器的狀態(tài)(例如,Web服務(wù)器的能力)相關(guān)聯(lián)的功能而被路由到Web服務(wù)器。
通常還想要把HTTP請求從給定的客戶計(jì)算機(jī)路由到Web場內(nèi)的給定Web服務(wù)器(或Web服務(wù)器組)。例如,如果特定類型的HTTP請求需要用來處理HTTP請求的特定類型的Web服務(wù)器功能,則對于該特定HTTP請求來說想要被路由到包括特定功能的Web服務(wù)器。這避免了跨Web服務(wù)器復(fù)制功能的需求、Web服務(wù)器進(jìn)行合作的需求等。
為了以這種方式路由HTTP請求,負(fù)載均衡器需要分析與HTTP請求相關(guān)聯(lián)的數(shù)據(jù)。對于不安全的HTTP請求,該HTTP請求可在兩個不同的層級被檢查。
在第一個實(shí)例中,包括HTTP請求的一個或更多TCP包可以被檢查,通過檢查在相關(guān)聯(lián)的TCP頭部中包括的數(shù)據(jù)(例如,源和目的地IP地址和/或端口)以找到TCP包中包括的數(shù)據(jù)。然而,該數(shù)據(jù)對于HTTP請求路由的目的來說是不充分的。例如,基于與HTTP頭部自身相關(guān)聯(lián)的數(shù)據(jù)做出路由決定是不可能的,因?yàn)樵摂?shù)據(jù)沒有被包括在TCP頭部中。
在第二個實(shí)例中,HTTP請求自身可以被檢查,以找到包括在HTTP請求中的數(shù)據(jù),例如,與目標(biāo)Web服務(wù)器相關(guān)聯(lián)的主機(jī)名;與被請求的資源相關(guān)聯(lián)的URI;與特定HTTP頭部相關(guān)聯(lián)的數(shù)據(jù)等等。
對于通過SSL連接發(fā)送的HTTP請求(即,HTTPS請求),僅在TCP層起作用的負(fù)載均衡器無法讀取包括在HTTPS請求中的數(shù)據(jù),并因此無法確?;谂cHTTPS請求相關(guān)聯(lián)的數(shù)據(jù)而將給定HTTPS請求引導(dǎo)到目標(biāo)Web服務(wù)器。
從而,盡管負(fù)載均衡器能夠基于與TCP頭部相關(guān)聯(lián)的數(shù)據(jù)(例如,源或目的地IP地址和/或端口)做出路由決定,但是如果負(fù)載均衡器只在TCP層起作用,那么負(fù)載均衡器無法基于與HTTPS請求相關(guān)聯(lián)的數(shù)據(jù)來路由請求。
為了使負(fù)載均衡器能夠檢查HTTPS請求,必須在負(fù)載均衡器中終止SSL連接。這允許負(fù)載均衡器來檢查HTTP請求,并且負(fù)載均衡器通過代理將HTTP請求發(fā)送到目標(biāo)Web服務(wù)器。即,在負(fù)載均衡器中創(chuàng)建HTTPS代理。
應(yīng)該了解,為了代理請求,HTTP代理創(chuàng)建新的HTTPS請求。即,在HTTPS代理和Web服務(wù)器之間創(chuàng)建新的SSL連接,以便發(fā)送HTTPS請求到Web服務(wù)器。SSL連接還被用來將響應(yīng)從Web服務(wù)器傳送到HTTPS代理。接著該響應(yīng)可從HTTPS代理發(fā)送到客戶計(jì)算機(jī)。因此,HTTPS代理對HTTPS請求執(zhí)行與SSL相關(guān)聯(lián)的加密。
這大大地提高了與處理HTTPS請求相關(guān)聯(lián)的性能負(fù)擔(dān),因?yàn)榈湫偷?,需要HTTPS代理具有與Web服務(wù)器相關(guān)聯(lián)的處理性能類似的處理性能,因?yàn)閃eb服務(wù)器和HTTPS代理兩者都將需要為給定請求執(zhí)行SSL加密/解密。
作為比較,負(fù)載均衡器的典型功能是對于包括HTTP請求的TCP包進(jìn)行路由、重寫或執(zhí)行網(wǎng)絡(luò)地址翻譯。執(zhí)行簡單TCP路由、重寫和/或網(wǎng)絡(luò)地址翻譯的負(fù)載均衡器不需要與重新建立SSL連接和處理來自Web服務(wù)器的響應(yīng)相關(guān)聯(lián)的大量處理資源。
此外,在負(fù)載均衡器終止SSL連接是一種安全風(fēng)險。這是因?yàn)?,如果?fù)載均衡器被泄密,或者如果在負(fù)載均衡器中解密HTTPS請求之后,該請求通過使用HTTP被發(fā)送,而在負(fù)載均衡器和目標(biāo)Web服務(wù)器之間的網(wǎng)絡(luò)(125)被泄密,則在客戶計(jì)算機(jī)和目標(biāo)Web服務(wù)器之間發(fā)送的所有數(shù)據(jù)都被泄密。
此外,對于一應(yīng)用來說,在負(fù)載均衡器中引入HTTPS代理可引入復(fù)雜性。這是因?yàn)镠TTPS代理可能對該應(yīng)用不透明。例如,絕對HTTP重定向技術(shù)不能再被使用。這是因?yàn)橛糜谠谀繕?biāo)Web服務(wù)器上直接訪問的內(nèi)容和用于經(jīng)由HTTPS代理在目標(biāo)Web服務(wù)器上訪問的內(nèi)容的絕對URL現(xiàn)在是不同的。
當(dāng)從客戶計(jì)算機(jī)接收到SSL連接請求時,建立得很好的用于提供路由數(shù)據(jù)的技術(shù)被用于維護(hù)將SSL會話ID關(guān)聯(lián)于目標(biāo)Web服務(wù)器的表。一旦第一SSL連接被建立,負(fù)載均衡器就將HTTP請求路由到目標(biāo)Web服務(wù)器,并將數(shù)據(jù)存儲到將SSL會話ID關(guān)聯(lián)于目標(biāo)Web服務(wù)器的表中。
當(dāng)客戶計(jì)算機(jī)創(chuàng)建新的TCP連接并請求在隨后的SSL連接上恢復(fù)現(xiàn)有SSL會話之時,客戶計(jì)算機(jī)可發(fā)送SSL會話ID到負(fù)載均衡器。負(fù)載均衡器讀取SSL會話ID(因?yàn)樵揝SL會話ID未被加密)。負(fù)載均衡器使用該SSL會話ID作為路由決定的輸入(例如,用于HTTPS請求)來查閱所述表。即,負(fù)載均衡器比較SSL會話ID和所述表,確定與SSL會話ID相關(guān)聯(lián)的目標(biāo)Web服務(wù)器,并發(fā)送HTTPS請求到目標(biāo)Web服務(wù)器。
然而,所述表被限制為,對于給定SSL會話ID,僅基于與第一SSL連接相關(guān)聯(lián)的鏈接來提供路由數(shù)據(jù)。
發(fā)明內(nèi)容
根據(jù)第一方面,提供了一種用來路由由第一計(jì)算機(jī)發(fā)送的請求的負(fù)載均衡系統(tǒng),其中所述請求可操作來啟動與第二計(jì)算機(jī)的通信協(xié)議,其中所述第二計(jì)算機(jī)可操作來處理所述請求;并且其中,所述第一計(jì)算機(jī)包括可操作來將與所述第二計(jì)算機(jī)相關(guān)聯(lián)的數(shù)據(jù)插入所述請求的插件,所述系統(tǒng)包括接收器,用于接收啟動請求;以及比較器,用于響應(yīng)于接收到啟動請求而比較所述請求中的數(shù)據(jù)與存儲組件中的數(shù)據(jù)以便確定路由決定。
優(yōu)選地,所述第一計(jì)算機(jī)可操作來發(fā)送數(shù)據(jù)到所述接收器。更優(yōu)選地,響應(yīng)于所述接收器接收到數(shù)據(jù),該數(shù)據(jù)被存儲在存儲組件中。
在優(yōu)選實(shí)施例中,響應(yīng)于建立通信協(xié)議,所述第二計(jì)算機(jī)可操作來發(fā)送標(biāo)識符到所述接收器和所述第一計(jì)算機(jī)中的至少其一。優(yōu)選地,響應(yīng)于接收到所述標(biāo)識符,與所述標(biāo)識符和相關(guān)聯(lián)第二計(jì)算機(jī)相關(guān)聯(lián)的另外的數(shù)據(jù)被存儲到存儲組件中。更優(yōu)選地,所述第一計(jì)算機(jī)可操作來通過發(fā)送包括所述標(biāo)識符的恢復(fù)請求而恢復(fù)已建立的通信協(xié)議。更優(yōu)選地,所述比較器響應(yīng)于接收到所述恢復(fù)請求,比較所述恢復(fù)請求中的標(biāo)識符與存儲組件中的另外的數(shù)據(jù)。
根據(jù)第二方面,提供了一種用于利用負(fù)載均衡系統(tǒng)來路由由第一計(jì)算機(jī)發(fā)送的請求的方法,其中所述請求可操作來啟動與第二計(jì)算機(jī)的通信協(xié)議,其中所述第二計(jì)算機(jī)可操作來處理請求;并且其中,所述第一計(jì)算機(jī)包括可操作來將與所述第二計(jì)算機(jī)相關(guān)聯(lián)的數(shù)據(jù)插入所述請求的插件。所述方法包括以下步驟由接收器接收啟動請求;以及響應(yīng)于接收到啟動請求,比較所述請求中的數(shù)據(jù)與存儲組件中的數(shù)據(jù)以便確定路由決定。
根據(jù)第三方面,提供了一種包括程序代碼工具的計(jì)算機(jī)程序,當(dāng)所述程序在計(jì)算機(jī)中運(yùn)行時,所述程序代碼工具適于執(zhí)行上述方法的所有步驟。
應(yīng)該理解,任何數(shù)據(jù)都可被插入請求中。例如,某些現(xiàn)有的密碼組數(shù)據(jù)可從請求中移除,而其余的密碼組數(shù)據(jù)可被插入請求。因此,一旦確定了不存在密碼組數(shù)據(jù),就可以做出路由決定。
有利地,不需要對Web服務(wù)器進(jìn)行改變。
現(xiàn)在將僅通過示例并參考本發(fā)明的優(yōu)選實(shí)施例來描述本發(fā)明,如以下的附圖所說明的圖1是可實(shí)現(xiàn)優(yōu)選實(shí)施例的系統(tǒng)的框圖;圖2是可實(shí)現(xiàn)優(yōu)選實(shí)施例的圖1的系統(tǒng)的更詳細(xì)的圖;圖3是示出了在與負(fù)載均衡器相關(guān)聯(lián)的過程中包括的操作步驟的流程圖;以及圖4是負(fù)載均衡環(huán)境中包括的組件和那些組件之間的流程的示意圖。
具體實(shí)施例方式
參考圖2,示出了可實(shí)現(xiàn)優(yōu)選實(shí)施例的系統(tǒng)(200)的框圖??蛻粲?jì)算機(jī)(215)包括插件(205)和Web瀏覽器(210)??蛻粲?jì)算機(jī)(215)與負(fù)載均衡器(250)通過網(wǎng)絡(luò)(220)通信。負(fù)載均衡器(250)包括接收器(225)、讀取器(230)和訪問存儲組件(240)的比較器(235)。負(fù)載均衡器(250)與Web服務(wù)器(服務(wù)器1和服務(wù)器2)通過網(wǎng)絡(luò)(245)通信?,F(xiàn)在將參考HTTP和SSL來描述優(yōu)選實(shí)施例。然而,應(yīng)該理解,優(yōu)選實(shí)施例可與任意數(shù)量的協(xié)議一同使用。
參考圖3,示出了下述流程圖,所述流程圖示出了與負(fù)載均衡器(250)相關(guān)聯(lián)的過程中包括的操作步驟??蛻粲?jì)算機(jī)(215)建立與負(fù)載均衡器(250)的TCP連接。客戶計(jì)算機(jī)(215)生成ClientHello消息。ClientHello消息的結(jié)構(gòu)的示例如下所示struct{ProtocolVersion client_Version;Random random;SessionID session_id;CipherSuite cipher_suites<2..216-1>;CompressionMethod compression_methods<1..28-1>}ClientHello;參考以上結(jié)構(gòu),字段“client_version”表示正由客戶計(jì)算機(jī)使用的SSL協(xié)議的版本。字段“random”表示客戶生成的隨機(jī)結(jié)構(gòu),例如,對于質(zhì)詢,字段“session_id”表示與SSL連接相關(guān)聯(lián)的SSL會話ID。如果沒有可用的SSL ID或者如果新的SSL連接正被客戶計(jì)算機(jī)所請求,則“session_id”為空。
字段“cipher_suites”表示由客戶計(jì)算機(jī)支持的加密選項(xiàng)。優(yōu)選地,客戶計(jì)算機(jī)(215)包括用于將“偽(dummy)”密碼組數(shù)據(jù)插入“cipher_suites”字段的插入器(205)。所述偽密碼組數(shù)據(jù)與目標(biāo)Web服務(wù)器相關(guān)聯(lián)。優(yōu)選地,此關(guān)聯(lián)被傳送給負(fù)載均衡器(250)。
字段“compression_methods”表示由客戶計(jì)算機(jī)支持的壓縮方法。
優(yōu)選地,負(fù)載均衡器(250)維護(hù)在存儲組件(240)中的表,所述表響應(yīng)于從客戶計(jì)算機(jī)(215)接收到關(guān)聯(lián)而將偽密碼組數(shù)據(jù)和目標(biāo)Web服務(wù)器相關(guān)聯(lián)。
偽密碼組數(shù)據(jù)被用作為做出初始路由決定的輸入。偽密碼組數(shù)據(jù)可被映射到多個目標(biāo)Web服務(wù)器。應(yīng)該理解,與目標(biāo)Web服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)可被添加到啟動消息中的任何其他字段(例如compression_methods字段)。此外,對于其他類型的啟動消息,與目標(biāo)Web服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)可被添加到唯一的字段中。在此所述表被稱為“密碼組表”。所述表的表示形式如下所示
表1優(yōu)選地,負(fù)載均衡器(250)通過執(zhí)行上述過程來維護(hù)在存儲組件(240)中將SSL會話ID和目標(biāo)Web服務(wù)器相關(guān)聯(lián)的表。SSL會話ID僅被映射到一個目標(biāo)Web服務(wù)器,因?yàn)橹挥性撃繕?biāo)Web服務(wù)器知道如何恢復(fù)與該SSL會話ID相關(guān)聯(lián)的SSL連接。因此,一旦SSL連接恢復(fù),SSL會話ID就被用作為做出路由決定的輸入。在此所述表被稱為“SSL ID表”。
所述表的表示形式示出如下
表2接收器(225)接收(300)ClientHello消息。負(fù)載均衡器(250)包括讀取器(230),其讀取ClientHello消息以便確定(步驟305)ClientHello消息是否包括SSL會話ID。如果ClientHello消息包括SSL會話ID,則SSL連接已經(jīng)被建立,并且該ClientHello消息正在請求恢復(fù)該連接。
在此情形中,負(fù)載均衡器(250)包括比較器(235),其比較(步驟330)SSL會話ID與表2。比較器(235)確定(步驟335)SSL會話ID是否已被發(fā)現(xiàn)。
響應(yīng)于包括SSL會話ID的條目未被發(fā)現(xiàn),負(fù)載均衡器(250)確定(步驟310)該ClientHello消息是否包括偽密碼組數(shù)據(jù)(稍后進(jìn)行描述)。
響應(yīng)于包括SSL會話ID的條目被發(fā)現(xiàn),負(fù)載均衡器(250)根據(jù)SSL會話ID來選擇(步驟340)服務(wù)器。即,讀取器(230)讀取與相關(guān)聯(lián)目標(biāo)Web服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)。
如果目標(biāo)Web服務(wù)器不可用(步驟345),則負(fù)載均衡器(250)確定(步驟310)ClientHello消息是否包括偽密碼組數(shù)據(jù)(稍后進(jìn)行描述)。
如果目標(biāo)Web服務(wù)器可用,則負(fù)載均衡器將ClientHello消息路由(步驟350)到目標(biāo)Web服務(wù)器。目標(biāo)Web服務(wù)器確定它是否識別出SSL會話ID以及它是否希望重建連接。如果是,則目標(biāo)Web服務(wù)器發(fā)送包括未經(jīng)加密的SSL會話ID的ServerHello消息到負(fù)載均衡器(250)。
ServerHello消息的結(jié)構(gòu)的示例如下所示struct{ProtocolVersion server_version;Random random;SessionID session_id;CipherSuite cipher_suites<2..216-1>;CompressionMethod compression_method<1..28-1>
}ServerHello;參考以上的結(jié)構(gòu),字段“server_version”表示正由Web服務(wù)器使用的SSL協(xié)議的版本。字段“random”表示服務(wù)器生成的隨機(jī)結(jié)構(gòu)。字段“session_id”表示與SSL連接相關(guān)聯(lián)的SSL會話ID。字段“cipher_suites”表示由客戶計(jì)算機(jī)所支持和由Web服務(wù)器所選擇的加密選項(xiàng)。字段“compression_methods”表示由客戶計(jì)算機(jī)所支持和由Web服務(wù)器所選擇的壓縮方法。
負(fù)載均衡器(250)發(fā)送包括未經(jīng)加密的SSL會話ID的ServerHello消息到客戶計(jì)算機(jī)(215)。完成握手所需的其余的SSL握手協(xié)議消息現(xiàn)在可產(chǎn)生,并且應(yīng)用層數(shù)據(jù)(例如,HTTPS請求和響應(yīng))現(xiàn)在可被交換。
應(yīng)該理解,為了負(fù)載均衡器根據(jù)SSL ID來路由消息,連接必須已經(jīng)被建立。此外,基于之前當(dāng)?shù)谝粋€SSL連接被建立時所進(jìn)行的路由,進(jìn)行根據(jù)SSL ID的路由。
響應(yīng)于ClientHello消息不包括SSL會話ID或響應(yīng)于在表2中未發(fā)現(xiàn)SSL會話ID或者如果所選擇的服務(wù)器在步驟345不可用,則讀取器(230)讀取ClientHello消息,以便確定(步驟310)ClientHello消息是否包括偽密碼組數(shù)據(jù)。
響應(yīng)于ClientHello消息包括偽密碼組數(shù)據(jù),比較器(235)比較(步驟315)偽密碼組數(shù)據(jù)和表1。比較器(235)確定(步驟320)偽密碼組數(shù)據(jù)是否已經(jīng)被發(fā)現(xiàn)。
響應(yīng)于包括偽密碼組數(shù)據(jù)的條目未被發(fā)現(xiàn),過程轉(zhuǎn)到步驟370(稍后進(jìn)行描述)。
響應(yīng)于包括偽密碼組數(shù)據(jù)的條目被發(fā)現(xiàn),負(fù)載均衡器(250)選擇(步驟325)所有與該偽密碼組數(shù)據(jù)相關(guān)聯(lián)的目標(biāo)Web服務(wù)器。即,讀取器(230)讀取與相關(guān)聯(lián)目標(biāo)Web服務(wù)器相關(guān)聯(lián)的數(shù)據(jù)。
響應(yīng)于所有目標(biāo)Web服務(wù)器不可用(步驟355),TCP連接被關(guān)閉(360)。
響應(yīng)于一個或多個所選擇的目標(biāo)Web服務(wù)器可用,優(yōu)選地,負(fù)載均衡器使用另外的技術(shù)來選擇(步驟365)目標(biāo)服務(wù)器。例如,消息被路由到隨機(jī)服務(wù)器;消息基于服務(wù)器負(fù)載被路由;消息基于TCP數(shù)據(jù)被路由等等。負(fù)載均衡器將ClientHello消息路由(步驟350)到所選擇的目標(biāo)Web服務(wù)器。握手過程可以繼續(xù),并且一旦握手過程結(jié)束,就建立SSL連接并且可以交換應(yīng)用層數(shù)據(jù)。
因此,應(yīng)該理解,當(dāng)SSL連接將被啟動時,偽密碼組數(shù)據(jù)被用作為做出路由決定的輸入。當(dāng)SSL連接將被恢復(fù)時,SSL ID被用作為做出路由決定的輸入,而如果SSL連接不能被恢復(fù),則偽密碼組數(shù)據(jù)被用作輸入。
響應(yīng)于ClientHello消息不包括偽密碼組數(shù)據(jù),負(fù)載均衡器(250)選擇所有服務(wù)器(步驟370),并且過程轉(zhuǎn)到步驟355。
現(xiàn)在將參考圖4描述第一示例,其中示出了在負(fù)載均衡環(huán)境中包括的組件和那些組件之間的流程的示意圖。在第一示例中,初始ClientHello消息被客戶計(jì)算機(jī)(215)發(fā)送,以便建立新的SSL連接(即,之前尚未建立過SSL連接)。
客戶計(jì)算機(jī)(215)生成初始的未經(jīng)加密的ClientHello消息和將偽密碼組數(shù)據(jù)插入ClientHello消息的插件(205)。在第一示例中,所述消息來自公司(即,XYZ銀行),并且所述消息被指向處理來自具有以字母“M-Z”為開頭的公司名稱的銀行的請求的服務(wù)器。偽密碼組數(shù)據(jù)是“{0x99,0x99}”,并且目標(biāo)Web服務(wù)器是“服務(wù)器1”。優(yōu)選地,關(guān)聯(lián)被傳送到負(fù)載均衡器(250)。可替換地,客戶計(jì)算機(jī)(215)和負(fù)載均衡器(250)可以協(xié)商關(guān)聯(lián)。
以下示出ClientHello消息的示例。應(yīng)該理解,session_id為空,因?yàn)镾SL連接以前還未被建立。應(yīng)該理解,在cipher_suites字段中,呈現(xiàn)了實(shí)際密碼組數(shù)據(jù)(即,{0x00,0x0A}{0x00,0x09}),并且呈現(xiàn)了偽密碼組數(shù)據(jù)(即,{0x99,0x99})。
struct{ProtocolVersion 3.0;Random 1234567890123456789012345678;SessionID<empty>;CipherSuite{0x00,0x0A}{0x00,0x09}{0x99,0x99};compressionMethod<empty>;}ClientHello;在步驟400,客戶計(jì)算機(jī)(215)建立與負(fù)載均衡器(250)的TCP連接。接著,客戶計(jì)算機(jī)(215)發(fā)送(步驟405)ClientHello消息到負(fù)載均衡器(250)。響應(yīng)于接收到ClientHello消息,讀取器(230)讀取ClientHello消息,以便確定ClientHello消息是否包括SSL ID。在第一示例中,ClientHello消息不包括SSL ID,并因此讀取器(230)讀取ClientHello消息,以便確定ClientHello消息是否包括偽密碼組數(shù)據(jù)。
響應(yīng)于ClientHello消息包括偽密碼組數(shù)據(jù),負(fù)載均衡器確定(步驟410)目標(biāo)Web服務(wù)器。即,比較器(235)比較(步驟315)偽密碼組數(shù)據(jù)和密碼組表。所述表的表示形式如下所示
表3比較器(235)確定(步驟320)偽密碼組數(shù)據(jù)是否已被發(fā)現(xiàn)。比較器(235)在表3中發(fā)現(xiàn)包括偽密碼組數(shù)據(jù)的條目。響應(yīng)于偽密碼組數(shù)據(jù)被發(fā)現(xiàn),讀取器(230)讀取與目標(biāo)Web服務(wù)器(即,服務(wù)器1)相關(guān)聯(lián)的數(shù)據(jù)。
服務(wù)器1可用,并且負(fù)載均衡器(250)建立(步驟415)與服務(wù)器1的TCP連接。負(fù)載均衡器(250)將ClientHello消息路由(步驟350和420)到服務(wù)器1。響應(yīng)于接收到ClientHello消息,服務(wù)器1生成ServerHello消息。ServerHello消息的示例如下所示應(yīng)該理解,SSL會話ID現(xiàn)在被包括在session_id字段中。應(yīng)該理解,服務(wù)器1從由客戶計(jì)算機(jī)(215)呈現(xiàn)的選項(xiàng)中選擇密碼組。優(yōu)選地,偽密碼組不是由服務(wù)器1所選擇的,因?yàn)閮?yōu)選地,服務(wù)器1沒有將偽密碼組配置為可選擇選項(xiàng)。因此,由服務(wù)器1從密碼組的其余集合中選擇密碼組。服務(wù)器1可選擇由客戶呈現(xiàn)的加密性最強(qiáng)的密碼組,或可使用任何其他策略來選擇任何密碼組。所選擇的密碼組為{0x00,0x0A}。
struct{ProtocolVersion 3.0;Random 1234567890123456789012345678;SessionID 12345678901234567890123456789012;CipherSuite{0x00,0x0A};CompressionMethod<empty>;}ServerHello;服務(wù)器1發(fā)送(步驟425)ServerHello消息到負(fù)載均衡器(250)。
響應(yīng)于接收到ServerHello消息,負(fù)載均衡器(250)發(fā)送(步驟430)ServerHello消息到客戶計(jì)算機(jī)(215)??梢越粨Q另外的消息,直至握手進(jìn)程完成(步驟435和440)。當(dāng)前典型的SSL功能被采用,并且應(yīng)用層數(shù)據(jù)可被交換(步驟445和450)。
如上所述,負(fù)載均衡器(250)將數(shù)據(jù)存儲到SSL表中。所述表的表示形式如下所示
表4
在連接恢復(fù)消息中,客戶計(jì)算機(jī)(215)發(fā)送SSL會話ID。連接恢復(fù)消息的示例如下所示struct{ProtocolVersion 3.0;Random 0123456789012345678901;SessionID 12345678901234567890123456789012;CipherSuite{0x00,0x0A}{0x00,0x09}{0x99,0x99};CompressionMethod<empty>;}ClientHello;因此,在連接恢復(fù)上,負(fù)載均衡器將連接恢復(fù)消息中的SSL會話ID與表4進(jìn)行比較,以便將連接恢復(fù)消息路由到目標(biāo)Web服務(wù)器(即,服務(wù)器1),如圖3所述。
應(yīng)該理解,通過添加與路由決定相關(guān)聯(lián)的數(shù)據(jù)到未經(jīng)加密的啟動消息,數(shù)據(jù)在通信的最早階段被提供給負(fù)載均衡器。相反地,使用SSL ID作為做出路由決定的輸入需要首先建立SSL連接。
權(quán)利要求
1.一種用來路由由第一計(jì)算機(jī)發(fā)送的請求的負(fù)載均衡系統(tǒng),其中所述請求可操作來啟動與第二計(jì)算機(jī)的通信協(xié)議,其中所述第二計(jì)算機(jī)可操作來處理所述請求;并且其中,所述第一計(jì)算機(jī)包括可操作來將與所述第二計(jì)算機(jī)相關(guān)聯(lián)的數(shù)據(jù)插入所述請求的插件,所述系統(tǒng)包括接收器,用于接收啟動請求;以及比較器,用于響應(yīng)于接收到啟動請求而比較所述請求中的數(shù)據(jù)與存儲組件中的數(shù)據(jù)以便確定路由決定。
2.如權(quán)利要求1所述的系統(tǒng),其中所述第一計(jì)算機(jī)可操作來發(fā)送數(shù)據(jù)到所述接收器。
3.如權(quán)利要求2所述的系統(tǒng),其中響應(yīng)于所述接收器接收到數(shù)據(jù),該數(shù)據(jù)被存儲在存儲組件中。
4.如前述任一權(quán)利要求所述的系統(tǒng),其中響應(yīng)于建立通信協(xié)議,所述第二計(jì)算機(jī)可操作來發(fā)送標(biāo)識符到所述接收器和所述第一計(jì)算機(jī)中的至少其一。
5.如權(quán)利要求4所述的系統(tǒng),響應(yīng)于接收到所述標(biāo)識符,與所述標(biāo)識符和相關(guān)聯(lián)第二計(jì)算機(jī)相關(guān)聯(lián)的另外的數(shù)據(jù)被存儲到存儲組件中。
6.如權(quán)利要求4或權(quán)利要求5所述的系統(tǒng),其中所述第一計(jì)算機(jī)可操作來通過發(fā)送包括所述標(biāo)識符的恢復(fù)請求而恢復(fù)已建立的通信協(xié)議。
7.如權(quán)利要求6所述的系統(tǒng),其中所述比較器響應(yīng)于接收到所述恢復(fù)請求,比較所述恢復(fù)請求中的標(biāo)識符與存儲組件中的另外的數(shù)據(jù)。
8.一種用于利用負(fù)載均衡系統(tǒng)來路由由第一計(jì)算機(jī)發(fā)送的請求的方法,其中所述請求可操作來啟動與第二計(jì)算機(jī)的通信協(xié)議,其中所述第二計(jì)算機(jī)可操作來處理請求;并且其中,所述第一計(jì)算機(jī)包括可操作來將與所述第二計(jì)算機(jī)相關(guān)聯(lián)的數(shù)據(jù)插入所述請求的插件,所述方法包括以下步驟由接收器接收啟動請求;以及響應(yīng)于接收到啟動請求,比較所述請求中的數(shù)據(jù)與存儲組件中的數(shù)據(jù)以便確定路由決定。
9.如權(quán)利要求8所述的方法,還包括以下步驟由所述第一計(jì)算機(jī)發(fā)送數(shù)據(jù)到所述接收器。
10.如權(quán)利要求9所述的方法,還包括以下步驟響應(yīng)于接收到數(shù)據(jù)的步驟,將該數(shù)據(jù)存儲在存儲組件中。
11.如權(quán)利要求8至10中任一項(xiàng)所述的方法,還包括以下步驟響應(yīng)于建立通信協(xié)議,由所述第二計(jì)算機(jī)發(fā)送標(biāo)識符到所述接收器和所述第一計(jì)算機(jī)中的至少其一。
12.如權(quán)利要求11所述的方法,還包括以下步驟響應(yīng)于接收到所述標(biāo)識符,將與所述標(biāo)識符和相關(guān)聯(lián)第二計(jì)算機(jī)相關(guān)聯(lián)的另外的數(shù)據(jù)存儲到存儲組件中。
13.如權(quán)利要求11或權(quán)利要求12所述的方法,還包括以下步驟由所述第一計(jì)算機(jī)通過發(fā)送包括所述標(biāo)識符的恢復(fù)請求而恢復(fù)已建立的通信協(xié)議。
14.如權(quán)利要求13所述的方法,還包括以下步驟響應(yīng)于接收到所述恢復(fù)請求,比較所述恢復(fù)請求中的標(biāo)識符與存儲組件中的另外的數(shù)據(jù)。
15.一種包括程序代碼工具的計(jì)算機(jī)程序,當(dāng)所述程序在計(jì)算機(jī)中運(yùn)行時,所述程序代碼工具適于執(zhí)行權(quán)利要求8至14中任一項(xiàng)所述的所有步驟。
全文摘要
一種用來路由由第一計(jì)算機(jī)發(fā)送的請求的負(fù)載均衡系統(tǒng),其中所述請求可操作來啟動與第二計(jì)算機(jī)的通信協(xié)議,其中所述第二計(jì)算機(jī)可操作來處理所述請求;并且其中,所述第一計(jì)算機(jī)包括可操作來將與所述第二計(jì)算機(jī)相關(guān)聯(lián)的數(shù)據(jù)插入所述請求的插件。所述系統(tǒng)包括接收器,用于接收啟動請求;以及比較器,用于響應(yīng)于接收到啟動請求而比較所述請求中的數(shù)據(jù)與存儲組件中的數(shù)據(jù)以便確定路由決定。
文檔編號H04L29/02GK1976298SQ20061011599
公開日2007年6月6日 申請日期2006年8月22日 優(yōu)先權(quán)日2005年11月29日
發(fā)明者C·K·馬丁 申請人:國際商業(yè)機(jī)器公司