1. 程式人生 > >網絡:Session原理及存儲

網絡:Session原理及存儲

簡單 處理 gin .com smb 均衡 pla 失效 ons

一.Session的工作流程

技術分享圖片

二.會話保持

  會話保持是負載均衡最常見的問題之一,會話保持是指在負載均衡器上實現的一種機制,可以識別客戶端與服務器之間交互過程的關連性,在作負載均衡的同時還保證一系列相關連的訪問請求會保持分配到一臺服務器上。負載均衡希望將來自客戶端的連接、請求均衡的轉發至後端的多臺服務器,以避免單臺服務器負載過高;而會話保持機制卻要求將某些請求轉發至同一臺服務器進行處理。因此,在實際的部署環境中,我們要根據應用環境的特點,選擇適當的會話保持機制。

1.四層會話保持

  四層會話保持(也稱作基於源地址的會話保持、基於IP的會話保持)是指負載均衡器在作負載均衡時根據訪問請求的源地址作為判斷關連會話的依據。對來自同一IP地址的所有訪問請求在作負載均時都會被保持到一臺服務器上去?

  四層會話保持中一個很重要的參數就是連接超時值,負載均衡器會為每一個處於保持狀態中的會話設定一個時間值。若一個會話從上一次完成到下次再來之間的間隔時間小於超時值時,負載均衡器將會將新的連接進行會話保持;但如果這個間隔大於該超時值,負載均衡器會將新來的連接認為是新的會話然後進行負載平衡。四層會話保持實現簡單,只需要根據數據包三?四層的信息就可以實現,效率比較高。

  但此種方式存在的問題就在於,當多個客戶端通過代理或地址轉換的方式訪問服務器時,由於來源地址一樣,請求都被分配到同一臺服務器上,會導致服務器之間的負載嚴重失衡。另外一種情況是,同一個客戶端產生大量並發,要求分配到多個服務器上處理的同時進行會話保持。這時基於客戶端源地址的會話保持方法也會導致負載均衡失效。

2.Session的存儲

  多臺後端服務器共享session主要有以下幾種形式:

  1.數據庫

  2.文件系統(NFS / SMB)

  3.Memcached

  前兩種方式,實現簡單,但效率低,不容易擴展,適合數據庫壓力不大或並發量小的場景。

3.七層會話保持(基於Cookie)

  在基於cookie模式下負載均衡器負責插入cookie,後端服務器無需作出任何修改,和F5 Big-IP的Cookie插入模式是一樣的。

技術分享圖片

  當客戶端進行第一次請求時,客戶端的HTTP request(不帶cookie)進入負載均衡器, LB根據負載平衡算法策略選擇後端一臺服務器,並將請求發送至該服務器;後端服務器的HTTP response(不帶cookie)被發回給負載均衡器。接下來負載均衡器將向該後端服務器插入cookie並將HTTP response返回到客戶端。

  當客戶請求再次發生時,客戶HTTP request(帶有上次負載均衡器插入的cookie)進入LB,然後LB讀出cookie裏的會話保持數值,將HTTP request(帶有與上面同樣的cookie)發到指定的服務器,然後後端服務器進行請求回復;由於服務器並不寫入cookie,HTTP response將不帶cookie,該HTTP response再次經過進入LB時,LB將寫入更新後的會話保持cookie。

  在F5中,還支持Cookie 重寫模式和Cookie Hash模式模式。

技術分享圖片

網絡:Session原理及存儲