負(fù)載均衡和會話保持_第1頁
負(fù)載均衡和會話保持_第2頁
負(fù)載均衡和會話保持_第3頁
負(fù)載均衡和會話保持_第4頁
負(fù)載均衡和會話保持_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、A10 負(fù)載均衡和會話保持在大多數(shù)的企業(yè)級應(yīng)用中, 客戶端與服務(wù)器經(jīng)常需要通過多次的交互才能完成一次事務(wù)處理 或一筆交易。 由于這些交互與用戶的身份是緊密相關(guān)的, 因此, 與這個客戶端相關(guān)的應(yīng)用請 求,往往需要轉(zhuǎn)發(fā)至一臺服務(wù)器完成, 而不能被負(fù)載均衡器轉(zhuǎn)發(fā)至不同的服務(wù)器上進行處理。 為了實現(xiàn)這一機制,我們需要在負(fù)載均衡上配置會話保持( Session Persistence )機制, 以確保客戶端與應(yīng)用系統(tǒng)之間的交互不會因為部署了負(fù)載均衡而發(fā)生問題。實際上, 會話保持機制與負(fù)載均衡的基本功能是完全矛盾的。 負(fù)載均衡希望將來自客戶端的 連接、 請求均衡的轉(zhuǎn)發(fā)至后端的多臺服務(wù)器, 以避免單臺服務(wù)器

2、負(fù)載過高; 而會話保持機制 卻要求將某些請求轉(zhuǎn)發(fā)至同一臺服務(wù)器進行處理。 因此, 在實際的部署環(huán)境中, 我們要根據(jù) 應(yīng)用環(huán)境的特點,選擇適當(dāng)?shù)臅挶3謾C制。連接和會話的區(qū)別在介紹會話保持技術(shù)之前, 我們必須先花點時間弄清楚一些概念: 什么是連接 ( Connection )、 什么是會話( Session ),以及這二者之間的區(qū)別。需要特別強調(diào)的是, 如果我們僅僅是談?wù)撠?fù)載均衡, 會話和連接往往具有相同的含義。 但是, 如果我們和開發(fā)人員溝通這些術(shù)語時, 這兩個術(shù)語卻具有截然不同的含義。 希望廣大讀者能 夠注意這其中的區(qū)別。在本文中,我想著重說明的是開發(fā)人員眼中的連接及會話的含義。通常,在普通

3、的客戶端或服務(wù)器上,我們把具有相同源地址:端口 ,和相同目的地址:端口 的數(shù)據(jù)包定義為一個連接。下表是Windows系統(tǒng)中用命令netstat- an輸出的部分系統(tǒng)連接狀態(tài)。1. C:>netstat -an2.3.活動連接.協(xié)議. 省本地地址孑略部分輸岀內(nèi)容.外部地址狀態(tài)8.TCP3:4766940:80ESTABLISHED9.TCP3:4767040:80ESTABLISHED10.TCP3:4767140:80ESTABLISH

4、ED11.TCP3:4767238:80TIME_WAIT12.TCP3:4767338:80TIME_WAIT13.TCP3:4767438:80TIME_WAIT14.TCP3:4767540:80ESTABLISHED15.TCP3:4767640:80ESTABLISHED16.TCP3:4767740:80ESTAB

5、LISHED17.TCP3:4767905:80ESTABLISHED18.TCP3:4768140:80ESTABLISHED19.TCP3:4768240:80ESTABLISHED20.TCP3:4768340:80ESTABLISHED21.TCP3:4768440:80ESTABLISHED22.TCP:18231

6、9:443CLOSE_WAIT23.省略部分輸出內(nèi)容.對于負(fù)載均衡來說,情況則稍微發(fā)生了一些變化。負(fù)載均衡會將來自相同源IP :端口 ,發(fā)送到相同目的IP :端口 的數(shù)據(jù)包,通過 NAT技術(shù)做一些轉(zhuǎn)換后,轉(zhuǎn)發(fā)至后端的某臺固定的服務(wù)器。如下表所示,雖然兩個TCP連接具有相同的源地址,但源端口不同,AX負(fù)載均衡仍然將其識別為兩個不同的連接,并且轉(zhuǎn)發(fā)至兩臺不同的服務(wù)器進行處理。1. AX#show session2. < 省略部分輸出內(nèi)容>3.4. Prot Forward SourceForward DestReverse SourceReverse Dest Age Hash5. 6

7、. Tcp 22:1619 51:80172.30283:8022:1619 6017.7. Tcp 22:1621 51:804:8022:1621 12039.10.省略部分輸出內(nèi)容.對于同一個連接中的數(shù)據(jù)包,負(fù)載均衡會將其進行NAT轉(zhuǎn)換后,轉(zhuǎn)發(fā)至后端固定的服務(wù)器進行處理,這是負(fù)載均衡最基本、最原始的功能。負(fù)載均衡系統(tǒng)內(nèi)部會專門有一張表來記錄這些連接的狀況,包括:源IP:端口 、目的IP:端口 、服務(wù)器IP:端口 、空閑超時

8、時 間(Idle Timeout )等等。這里需要特別說明一下超時時間的意義和定義。由于負(fù)載均衡內(nèi)部記錄連接狀態(tài)的這張表需要消耗系統(tǒng)的內(nèi)存資源,因此,這張表不可能無限大,所有廠家都會有一定的限制。這張表的大小一般稱之為最大并發(fā)連接數(shù),也就是系統(tǒng)同時能夠容納的連接數(shù)量。考慮到建立這些連接的客戶端或服務(wù)器會發(fā)生一些異常狀況,導(dǎo)致這些連接不能被正常終結(jié)掉,因此,負(fù)載均衡的當(dāng)前連接狀態(tài)表項中,設(shè)計了一個空閑超時時間的參數(shù)。這個參數(shù)定義為,當(dāng)該連接在一定時間內(nèi)無流量通過時,負(fù)載均衡會自動刪除該連接條目,釋放系統(tǒng)資源。在AX中,這個空閑超時時間一般設(shè)置為120秒。也就是說,如果在120秒內(nèi),對于某個連接,

9、AX沒有收到任何來自客戶端或服務(wù)器端的數(shù)據(jù)包,AX會主動刪除該連接,以釋放系統(tǒng)資源。之所以在這里強調(diào)這個參數(shù),是為了和后面介紹會話保持機制時提到的會話保持時間有所區(qū)別。理解了連接的概念,那么對于會話的概念就會比較容易理解一些。在開發(fā)人員眼中,會話一般是指從用戶登錄應(yīng)用系統(tǒng),進行事務(wù)處理,直至退出應(yīng)用系統(tǒng)的整個過程。因此,對于相同的會話,客戶端可能會建立多個連接進行處理。如果在客戶端和服務(wù)器之間部署了負(fù)載均衡設(shè)備, 很有可能, 這多個連接會被轉(zhuǎn)發(fā)至不同的服務(wù)器進行處理。 如果服務(wù)器之間沒有會 話信息的同步機制, 會導(dǎo)致其他服務(wù)器無法識別用戶身份, 造成用戶在和應(yīng)用系統(tǒng)發(fā)生交互 時出現(xiàn)異常。常見的

10、異常場景包括: 客戶端輸入了正確的用戶名和口令,但卻反復(fù)跳到登錄頁面,要求用戶進行登錄, 客戶端放入購物籃的物品丟失。因此, 會話保持機制的意義就在于, 確保將來自相同客戶端的請求, 轉(zhuǎn)發(fā)至后端相同的服務(wù) 器進行處理。 換句話說, 就是將客戶端與服務(wù)器之間建立的多個連接, 都發(fā)送到相同的服務(wù) 器進行處理。常見的會話保持機制介紹源地址會話保持 源地址會話保持利用客戶端的源地址信息,負(fù)載均衡會將所有來源于相同源 IP 的連接認(rèn)為 是相同的客戶端, 并將這些連接轉(zhuǎn)發(fā)至相同的服務(wù)器進行處理。 當(dāng)我們啟用了源地址會話保 持機制后,AX負(fù)載均衡在收到新的連接請求時,會首先查詢系統(tǒng)的源地址會話保持表,如 果

11、查詢到該 IP 地址對應(yīng)的服務(wù)器表項,則根據(jù)當(dāng)前表項對應(yīng)的服務(wù)器建立連接,如果沒有 查詢到該源 IP 對應(yīng)的服務(wù)器,則根據(jù)當(dāng)前配置的算法選擇服務(wù)器。同時,會將當(dāng)前連接對 應(yīng)的服務(wù)器記入源地址會話保持表。這樣,當(dāng)該源 IP 有新的連接請求時,就會根據(jù)該表項 選擇后端的服務(wù)器資源。源地址會話保持機制是一種非常簡單但又十分高效的會話保持機制。但是,正是這種簡單, 又造成負(fù)載均衡無法很準(zhǔn)確的識別客戶端, 造成后端服務(wù)器負(fù)載分配不均勻。 尤其是當(dāng)大量的客戶端共享同一個 NAT地址訪問服務(wù)器資源時,會造成某臺服務(wù)器的負(fù)載分配過高。同時, 由于負(fù)載均衡系統(tǒng)內(nèi)部保存會話保持表也會占用一定的資源, 因此,當(dāng)客戶

12、端數(shù)量巨大的時 候,可能會造成會話保持表被耗盡的問題。Cookie 會話保持Cookie會話保持是利用 HTTP協(xié)議中的cookie功能來實現(xiàn)會話保持功能。當(dāng)客戶端的請求 中帶有負(fù)載均衡設(shè)置的 cookie 信息,則負(fù)載均衡根據(jù) cookie 中的信息來選擇服務(wù)器; 當(dāng)客 戶端的請求中沒有 cookie 信息,則負(fù)載均衡按照算法選擇服務(wù)器,同時,在服務(wù)器響應(yīng)的 response 頭部中,插入 cookie 信息。這樣,當(dāng)該客戶端再次訪問服務(wù)器時,可以確保該客 戶端的請求會被轉(zhuǎn)發(fā)到相同的服務(wù)器進行處理。相較于源地址會話保持機制來說, cookie 會話保持能夠更加精準(zhǔn)的識別客戶端,避免了大量客戶

13、端共享同一個 NAT地址訪問服務(wù)器資源時,源地址會話保持造成的單臺服務(wù)器負(fù)載過 高的問題。 此外,負(fù)載均衡通過分析客戶端請求中的 cookie 信息來決定服務(wù)器選擇, 因此, 負(fù)載均衡無需在系統(tǒng)中維護會話表項,因此,沒有會話表項數(shù)量的限制。但是,cookie 會話保持機制卻比源地址會話保持存在更多的限制。首先, cookie 會話保持只能夠在 B/S 架構(gòu)的應(yīng)用中使用,也就是說, cookie 會話保持只能 夠工作在HTTP協(xié)議下。道理很簡單一一非HTTP協(xié)議并不支持cookie插入。其次, 如果瀏覽器不支持 cookie ,即便配置了 cookie 會話保持機制, cookie 會話保持機制

14、 也不會起到應(yīng)有的效果。第三,由于 cookie 會話保持機制中,需要根據(jù)負(fù)載均衡當(dāng)前的系統(tǒng)時間來計算一個過期時間,并把該時間設(shè)置為 cookie 失效的時間,因此,負(fù)載均衡的系統(tǒng)時間不能有太大誤差, 否則,會話保持機制有可能會失效。對于第三個問題,我們考慮一種場景,當(dāng)負(fù)載均衡的系統(tǒng)時間比正常的時鐘慢20分鐘,而會話保持的超時時間設(shè)置為15分鐘,則客戶端在收到負(fù)載均衡插入的cookie后,會認(rèn)為該cookie已經(jīng)失效,則在后續(xù)的http請求中,不會帶有負(fù)載均衡插入的用于會話保持的cookie。注意:這里的cookie是A10插入的,不是應(yīng)用服務(wù)器返回HTTP響應(yīng)時插入的!在用loadrunne

15、r測試A10負(fù)載均衡功能和性能時,需要增加A10插入的的cookie。在錄制LR腳本時,可以先打開應(yīng)用頁面,然后在頁面上進行幾次其他操作,然后錄制好的腳本里會自動加上 cookie,包括應(yīng)用返回的和 A10插入的:web_add_cookie("sto-id-1053仁EOMKJDAKCJCD; DOMAIN=38"); web_add_cookie("PHPSESSID=7d52ff757b92; DOMAIN=12O.21O.236.238");測試時保留A10插入的cookie ( sto-id-10531 )就可以進行負(fù)

16、載均衡測試。由于A10上插入cookie后,會有時效性,因此在A10上把過期時間改大并且要盡快測試;另外,A10插入的cookie中"sto-id-1053仁EOMKJDAKCJCD"的值不是會話級的(不是每個會話對應(yīng)一個值,而是可以看成服務(wù)器主機的標(biāo)識),每個主機對應(yīng)一個 sto-id-10531 的值。首次訪問請求到達 A10時,A10會根據(jù)一系列負(fù)載均衡策略選擇服務(wù)器主機,并且在響應(yīng)時 插入cookie (即插入主機標(biāo)識),后續(xù)該客戶端再發(fā)送請求時,會帶上這個cookie (主機標(biāo)識),A10收到后直接按照這個標(biāo)識進行轉(zhuǎn)發(fā)。簡單總結(jié)一下這兩種常見的會話保持機制的優(yōu)缺點:方法優(yōu)點缺點

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論