这是作为备忘做个记录
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,这样就有可能没起到负载的作用,甚至会导致分发不致的情况