負(fù)載均衡器與會話保持的關(guān)聯(lián)
F5是負(fù)載均衡器產(chǎn)品中的知名者,相信很多人都不會不知道的。那么,它是如何進行會話保持的呢?這個還是讓我們從會話保持的定義談起。做一個形象的比喻:會話保持可以看做一串珍珠,那么我們把每一個珍珠拆下來放到不同的盒子里面進行保存處理,之后在拿出來穿成串,也就是一個分配的概念。那么,學(xué)術(shù)上是怎么描述的呢?還是讓我們從下文了解吧。
1.什么是會話保持?
在大多數(shù)電子商務(wù)的應(yīng)用系統(tǒng)或者需要進行用戶身份認(rèn)證的在線系統(tǒng)中,一個客戶與服務(wù)器經(jīng)常經(jīng)過好幾次的交互過程才能完成一筆交易或者是一個請求的完成。由于這幾次交互過程是密切相關(guān)的,服務(wù)器在進行這些交互過程的某一個交互步驟時,往往需要了解上一次交互過程的處理結(jié)果,或者上幾步的交互過程結(jié)果,服務(wù)器進行下一步操作時需要這就要求所有這些相關(guān)的交互過程都由一臺服務(wù)器完成,而不能被負(fù)載均衡器分散到不同的服務(wù)器上。
而這一系列的相關(guān)的交互過程可能是由客戶到服務(wù)器的一個連接的多次會話完成,也可能是在客戶與服務(wù)器之間的多個不同連接里的多次會話完成。不同連接的多次會話,最典型的例子就是基于http的訪問,一個客戶完成一筆交易可能需多次點擊,而一個新的點擊產(chǎn)生的請求,可能會重用上一次點擊建立起來的連接,也可能是一個新建的連接。
會話保持就是指在負(fù)載均衡器上有這么一種機制,可以識別做客戶與服務(wù)器之間交互過程的關(guān)連性,在作負(fù)載均衡的同時,還保證一系列相關(guān)連的訪問請求會保持分配到一臺服務(wù)器上。
2.F5支持什么樣的會話保持方法?
F5 BigIP支持多種的會話保持方法,其中包括:簡單會話保持(源地址會話保持)、HTTP Header的會話保持,基于SSL Session ID的會話保持,I-Rules會話保持以及基于 HTTP Cookie的會話保持,此外還有基于SIP ID以及Cache設(shè)備的會話保持等,但常用的是簡單會話保持,HTTP Header的會話保持以及 HTTP Cookie會話保持以及基于I-Rules的會話保持。
◆簡單會話保持
簡單會話保持也被稱為基于源地址的會話保持,是指負(fù)載均衡器在作負(fù)載均衡時是根據(jù)訪問請求的源地址作為判斷關(guān)連會話的依據(jù)。對來自同一IP地址的所有訪問請求在作負(fù)載均時都會被保持到一臺服務(wù)器上去。在BIGIP設(shè)備上可以為“同一IP地址"通過網(wǎng)絡(luò)掩碼進行區(qū)分,比如可以通過對IP地址 192.168.1.1進行255.255.255.0的網(wǎng)絡(luò)掩碼,這樣只要是來自于192.168.1.0/24這個網(wǎng)段的流量BIGIP都可以認(rèn)為他們是來自于同一個用戶,這樣就將把來自于192.168.1.0/24網(wǎng)段的流量會話保持到特定的一臺服務(wù)器上。
簡單會話保持里另外一個很重要的參數(shù)就是連接超時值,BIGIP會為每一個進行會話保持的會話設(shè)定一個時間值,當(dāng)一個會話上一次完成到這個會話下次再來之前的間隔如果小于這個超時值,BIGIP將會將新的連接進行會話保持,但如果這個間隔大于該超時值,BIGIP將會將新來的連接認(rèn)為是新的會話然后進行負(fù)載平衡。
基于原地址的會話保持實現(xiàn)起來簡單,只需要根據(jù)數(shù)據(jù)包三、四層的信息就可以實現(xiàn),效率也比較高。存在的問題就在于當(dāng)多個客戶是通過代理或地址轉(zhuǎn)換的方式來訪問服務(wù)器時,由于都分配到同一臺服務(wù)器上,會導(dǎo)致服務(wù)器之間的負(fù)載嚴(yán)重失衡。另外一種情況上客戶機數(shù)量很少,但每個客戶機都會產(chǎn)生多個并發(fā)訪問,對這些必發(fā)訪問也要求通過負(fù)載均衡器分配到多個服器上,這時基于客戶端源地址的會話保持方法也會導(dǎo)致負(fù)載均衡失效。