在大多數(shù)電子商務(wù)的應(yīng)用系統(tǒng)或者需要進(jìn)行用戶身份認(rèn)證的在線系統(tǒng)中,一個(gè)客戶與服務(wù)器經(jīng)常經(jīng)過好幾次的交互過程才能完成一筆交易或者是一個(gè)請(qǐng)求的完成。由于這幾次交互過程是密切相關(guān)的,服務(wù)器在進(jìn)行這些交互過程的某一個(gè)交互步驟時(shí),往往需要了解上一次交互過程的處理結(jié)果,或者上幾步的交互過程結(jié)果,服務(wù)器進(jìn)行下一步操作時(shí)需要這就要求所有這些相關(guān)的交互過程都由一臺(tái)服務(wù)器完成,而不能被負(fù)載均衡器分散到不同的服務(wù)器上。
而這一系列的相關(guān)的交互過程可能是由客戶到服務(wù)器的一個(gè)連接的多次會(huì)話完成,也可能是在客戶與服務(wù)器之間的多個(gè)不同連接里的多次會(huì)話完成。不同連接的多次會(huì)話,最典型的例子就是基于http的訪問,一個(gè)客戶完成一筆交易可能需多次點(diǎn)擊,而一個(gè)新的點(diǎn)擊產(chǎn)生的請(qǐng)求,可能會(huì)重用上一次點(diǎn)擊建立起來的連接,也可能是一個(gè)新建的連接。
會(huì)話保持就是指在負(fù)載均衡器上有這么一種機(jī)制,可以識(shí)別做客戶與服務(wù)器之間交互過程的關(guān)連性,在作負(fù)載均衡的同時(shí),還保證一系列相關(guān)連的訪問請(qǐng)求會(huì)保持分配到一臺(tái)服務(wù)器上。
F5 BigIP支持多種的會(huì)話保持方法,其中包括:簡(jiǎn)單會(huì)話保持(源地址會(huì)話保持)、HTTP Header的會(huì)話保持,基于SSL Session ID的會(huì)話保持,I-Rules會(huì)話保持以及基于 HTTP Cookie的會(huì)話保持,此外還有基于SIP ID以及Cache設(shè)備的會(huì)話保持等,但常用的是簡(jiǎn)單會(huì)話保持,HTTP Header的會(huì)話保持以及 HTTP Cookie會(huì)話保持以及基于I-Rules的會(huì)話保持。
簡(jiǎn)單會(huì)話保持也被稱為基于源地址的會(huì)話保持,是指負(fù)載均衡器在作負(fù)載均衡時(shí)是根據(jù)訪問請(qǐng)求的源地址作為判斷關(guān)連會(huì)話的依據(jù)。對(duì)來自同一IP地址的所有訪問請(qǐng)求在作負(fù)載均時(shí)都會(huì)被保持到一臺(tái)服務(wù)器上去。在BIGIP設(shè)備上可以為“同一IP地址”通過網(wǎng)絡(luò)掩碼進(jìn)行區(qū)分,比如可以通過對(duì)IP地址192.168.1.1進(jìn)行255.255.255.0的網(wǎng)絡(luò)掩碼,這樣只要是來自于192.168.1.0/24這個(gè)網(wǎng)段的流量BIGIP都可以認(rèn)為他們是來自于同一個(gè)用戶,這樣就將把來自于192.168.1.0/24網(wǎng)段的流量會(huì)話保持到特定的一臺(tái)服務(wù)器上。
簡(jiǎn)單會(huì)話保持里另外一個(gè)很重要的參數(shù)就是連接超時(shí)值,BIGIP會(huì)為每一個(gè)進(jìn)行會(huì)話保持的會(huì)話設(shè)定一個(gè)時(shí)間值,當(dāng)一個(gè)會(huì)話上一次完成到這個(gè)會(huì)話下次再來之前的間隔如果小于這個(gè)超時(shí)值,BIGIP將會(huì)將新的連接進(jìn)行會(huì)話保持,但如果這個(gè)間隔大于該超時(shí)值,BIGIP將會(huì)將新來的連接認(rèn)為是新的會(huì)話然后進(jìn)行負(fù)載平衡。
基于原地址的會(huì)話保持實(shí)現(xiàn)起來簡(jiǎn)單,只需要根據(jù)數(shù)據(jù)包三、四層的信息就可以實(shí)現(xiàn),效率也比較高。存在的問題就在于當(dāng)多個(gè)客戶是通過代理或地址轉(zhuǎn)換的方式來訪問服務(wù)器時(shí),由于都分配到同一臺(tái)服務(wù)器上,會(huì)導(dǎo)致服務(wù)器之間的負(fù)載嚴(yán)重失衡。另外一種情況上客戶機(jī)數(shù)量很少,但每個(gè)客戶機(jī)都會(huì)產(chǎn)生多個(gè)并發(fā)訪問,對(duì)這些必發(fā)訪問也要求通過負(fù)均均衡器分配到多個(gè)服器上,這時(shí)基于客戶端源地址的會(huì)話保持方法也會(huì)導(dǎo)致負(fù)載均衡失效。
在Cookie插入模式下,BigIP將負(fù)責(zé)插入cookie,后端服務(wù)器無需作出任何修改
當(dāng)客戶進(jìn)行第一次請(qǐng)求時(shí),客戶HTTP請(qǐng)求(不帶cookie)進(jìn)入BIGIP, BIGIP根據(jù)負(fù)載平衡算法策略選擇后端一臺(tái)服務(wù)器,并將請(qǐng)求發(fā)送至該服務(wù)器,后端服務(wù)器進(jìn)行HTTP回復(fù)(不帶cookie)被發(fā)回BIGIP,然后BIGIP插入cookie,將HTTP回復(fù)返回到客戶端。當(dāng)客戶請(qǐng)求再次發(fā)生時(shí),客戶HTTP請(qǐng)求(帶有上次BIGIP插入的cookie)進(jìn)入BIGIP,然后BIGIP讀出cookie里的會(huì)話保持?jǐn)?shù)值,將HTTP請(qǐng)求(帶有與上面同樣的cookie)發(fā)到指定的服務(wù)器,然后后端服務(wù)器進(jìn)行請(qǐng)求回復(fù),由于服務(wù)器并不寫入cookie,HTTP回復(fù)將不帶有cookie,恢復(fù)流量再次經(jīng)過進(jìn)入BIGIP時(shí),BIGIP再次寫入更新后的會(huì)話保持cookie。
當(dāng)客戶進(jìn)行第一次請(qǐng)求時(shí),客戶HTTP請(qǐng)求(不帶cookie)進(jìn)入BIGIP, BIGIP根據(jù)負(fù)載平衡算法策略選擇后端一臺(tái)服務(wù)器,并將請(qǐng)求發(fā)送至該服務(wù)器,后端服務(wù)器進(jìn)行HTTP回復(fù)一個(gè)空白的cookie并發(fā)回BIGIP,然后BIGIP重新在cookie里寫入會(huì)話保持?jǐn)?shù)值,將HTTP回復(fù)返回到客戶端。當(dāng)客戶請(qǐng)求再次發(fā)生時(shí),客戶HTTP請(qǐng)求(帶有上次BIGIP重寫的cookie)進(jìn)入BIGIP,然后BIGIP讀出cookie里的會(huì)話保持?jǐn)?shù)值,將HTTP請(qǐng)求(帶有與上面同樣的cookie)發(fā)到指定的服務(wù)器,然后后端服務(wù)器進(jìn)行請(qǐng)求回復(fù),HTTP回復(fù)里又將帶有空的cookie,恢復(fù)流量再次經(jīng)過進(jìn)入BIGIP時(shí),BIGIP再次寫入更新后會(huì)話保持?jǐn)?shù)值到該cookie。
當(dāng)客戶進(jìn)行第一次請(qǐng)求時(shí),客戶HTTP請(qǐng)求(不帶cookie)進(jìn)入BIGIP, BIGIP根據(jù)負(fù)載平衡算法策略選擇后端一臺(tái)服務(wù)器,并將請(qǐng)求發(fā)送至該服務(wù)器,后端服務(wù)器進(jìn)行HTTP回復(fù)一個(gè)cookie并發(fā)回BIGIP,然后BIGIP將帶有服務(wù)器寫的cookie值的HTTP回復(fù)返回到客戶端。當(dāng)客戶請(qǐng)求再次發(fā)生時(shí),客戶HTTP請(qǐng)求(帶有上次服務(wù)器寫的cookie)進(jìn)入BIGIP,然后BIGIP根據(jù)cookie里的會(huì)話保持?jǐn)?shù)值,將HTTP請(qǐng)求(帶有與上面同樣的cookie)發(fā)到指定的服務(wù)器,然后后端服務(wù)器進(jìn)行請(qǐng)求回復(fù),HTTP回復(fù)里又將帶有更新的會(huì)話保持cookie,恢復(fù)流量再次經(jīng)過進(jìn)入BIGIP時(shí),BIGIP將帶有該cookie的請(qǐng)求回復(fù)給客戶端。
當(dāng)客戶進(jìn)行第一次請(qǐng)求時(shí),客戶HTTP請(qǐng)求(不帶cookie)進(jìn)入BIGIP, BIGIP根據(jù)負(fù)載平衡算法策略選擇后端一臺(tái)服務(wù)器,并將請(qǐng)求發(fā)送至該服務(wù)器,后端服務(wù)器進(jìn)行HTTP回復(fù)一個(gè)cookie并發(fā)回BIGIP,然后BIGIP將帶有服務(wù)器寫的cookie值的HTTP回復(fù)返回到客戶端。當(dāng)客戶請(qǐng)求再次發(fā)生時(shí),客戶HTTP請(qǐng)求(帶有上次服務(wù)器寫的cookie)進(jìn)入BIGIP,然后BIGIP根據(jù)cookie里的一定的某個(gè)字節(jié)的字節(jié)數(shù)來決定后臺(tái)服務(wù)器接受請(qǐng)求,將HTTP請(qǐng)求(帶有與上面同樣的cookie)發(fā)到指定的服務(wù)器,然后后端服務(wù)器進(jìn)行請(qǐng)求回復(fù),HTTP回復(fù)里又將帶有更新后的cookie,恢復(fù)流量再次經(jīng)過進(jìn)入BIGIP時(shí),BIGIP將帶有該cookie的請(qǐng)求回復(fù)給客戶端。
在用戶的SSL訪問系統(tǒng)的環(huán)境里,當(dāng)SSL對(duì)話首次建立時(shí),用戶與服務(wù)器進(jìn)行首次信息交換以:1}交換安全證書,2)商議加密和壓縮方法,3)為每條對(duì)話建立Session ID。由于該Session ID在系統(tǒng)中是一個(gè)唯一數(shù)值,由此,BIGIP可以應(yīng)用該數(shù)值來進(jìn)行會(huì)話保持。當(dāng)用戶想與該服務(wù)器再次建立連接時(shí),BIGIP可以通過會(huì)話中的 SSL Session ID識(shí)別該用戶并進(jìn)行會(huì)話保持。
基于SSL Session ID的會(huì)話保持就需要客戶瀏覽器在進(jìn)行會(huì)話的過程中始終保持其SSL Session ID不變,但實(shí)際上,微軟Internet Explorer被發(fā)現(xiàn)在經(jīng)過特定一段時(shí)間后將主動(dòng)改變SSL Session ID,這就使基于SSL Session ID的會(huì)話保持實(shí)際應(yīng)用范圍大大縮小。
聯(lián)系客服