這是作為備忘做個記錄
Session mode中共有5種會話保持方式:
1、Regular,是普通的會話保持,形成的表項是:Client ip+Server ip的形式
2、EntryPerSession(EPS),是端口與ip的形式:Client ip:port+Server ip:port,因此這種方式在會話表中占用的空間比較Regular大很多
3、ServerPerSession(SPS),其實從英文中也可以看出,這個是以Server為中心進行保持,其主的會話保持就是給每一個Server去分配一個會話,這樣方式盡管可以充分利用Server的集群優勢,但其劣勢也非常明顯,那就是不會做源ip的會話保持,是一種一次性分配會話的方式,如Client A到達LB后被分配給Server A處理,當請求再到LB時可能會再被分配給Server B,這樣,對于用戶而言可能會輸入2次用戶名、密碼之類的標識,沒有做到同一源在會話時間內應該被分配給同一Server的目的
4、RemoveOnSessionEnd-EPS,這個其實就是F5中的源會話保持,與第2種形成的表項相同,唯一不同的是,如果在該Farm中收到Server或Client發出的Fin包并最終完成會話斷開,就會打破Aging Time(會話保持)時間,在默認5~60s內清除該會話,姑且認為這是為了源會話保持,又帶著打破會話保持的一種特性吧。其目的是在短連接的訪問中可以極大的減少會話表的開銷
5、RemoveOnSessionEnd-SPS,這個其實是第3種會話模式的延伸,與第3種形成的表項相同,唯一的不是與第4項中收到Fin就清會話是一樣的,就是說這是第3種會話+第4種打破會話保持的特性的一種會話模式,一般也不用這種
在這里順便提一下,這個打破會話保持的特性是不可以調整的,因此相對F5也是不靈活的
作為比較可以用F5做例子來這個對比
在F5中的Local Traffic->Virtual Servers->Profiles->Persistence中就有源會話保持
該方式默認是180s,被調用后就是用于形成源會話表,但沒有打破的規則,所以對于業務一定要了解是否有源會話保持的需求
另一個需要記住的是在Local Traffic->Virtual Servers->Profiles->Protocol->FastL4中的參數默認是300s,表示Client與LB之間的4層會話保持,與源會話保持分屬不同的表,大致如下表:
源會話保持:
Client ip:port<->LB<->Server ip:port,默認180s清除表項
tcp會話保持:
Client ip:port<->LB,默認:300s清除表項
由以上可以看到,源會話保持與4層會話保持盡管分屬不同的表,但會間接受到影響,例如:把源會話保持設置為300s,把4層會話保持設為180s,這時,當4層正常超時清表后,181~300s之間,源同樣的源又來建立會話,因源會話保持還在,還會被發到相同的Server,這樣就有可能沒起到負載的作用,甚至會導致分發不致的情況