网络:Session原理及存储

一.Session的工作流程

二.会话保持

  会话保持是负载均衡最常见的问题之一,会话保持是指在负载均衡器上实现的一种机制,可以识别客户端与服务器之间交互过程的关连性,在作负载均衡的同时还保证一系列相关连的访问请求会保持分配到一台服务器上。负载均衡希望将来自客户端的连接、请求均衡的转发至后端的多台服务器,以避免单台服务器负载过高;而会话保持机制却要求将某些请求转发至同一台服务器进行处理。因此,在实际的部署环境中,我们要根据应用环境的特点,选择适当的会话保持机制。

1.四层会话保持

  四层会话保持(也称作基于源地址的会话保持、基于IP的会话保持)是指负载均衡器在作负载均衡时根据访问请求的源地址作为判断关连会话的依据。对来自同一IP地址的所有访问请求在作负载均时都会被保持到一台服务器上去。

  四层会话保持中一个很重要的参数就是连接超时值,负载均衡器会为每一个处于保持状态中的会话设定一个时间值。若一个会话从上一次完成到下次再来之间的间隔时间小于超时值时,负载均衡器将会将新的连接进行会话保持;但如果这个间隔大于该超时值,负载均衡器会将新来的连接认为是新的会话然后进行负载平衡。四层会话保持实现简单,只需要根据数据包三、四层的信息就可以实现,效率比较高。

  但此种方式存在的问题就在于,当多个客户端通过代理或地址转换的方式访问服务器时,由于来源地址一样,请求都被分配到同一台服务器上,会导致服务器之间的负载严重失衡。另外一种情况是,同一个客户端产生大量并发,要求分配到多个服务器上处理的同时进行会话保持。这时基于客户端源地址的会话保持方法也会导致负载均衡失效。

2.Session的存储

  多台后端服务器共享session主要有以下几种形式:

  1.数据库

  2.文件系统(NFS / SMB)

  3.Memcached

  前两种方式,实现简单,但效率低,不容易扩展,适合数据库压力不大或并发量小的场景。而session数据不需要持久化,可以容忍丢失,所以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模式模式。

 

posted @ 2018-07-03 11:40  主題遠志  阅读(1051)  评论(0编辑  收藏  举报