会话保持

1、会话和连接的区别

简单来说,经过三次握手后,如果客户端需要不再需要登录,直接进行数据传递,此时就叫连接,如果客户端再三次握手后需要登录,就叫会话。

2、什么是会话保持?

它是负载均衡中的一种机制,可以识别客户端与服务器之间交互过程的关联性,在做负载均衡的同时还能保证一系列的相关联的访问请求会被分配到同一台后端server上。

场景理解:

在大多数电子商务的应用系统或者需要进行用户身份认证的在线系统中,一个客户与服务器经常经过好几次的交互过程才能完成一笔交易或者是一个请求的完成。由于这几次交互过程是密切相关的,服务器在进行这些交互过程的某一个交互步骤时往往需要了解上一次或上几次的交互过程处理结果,这就要求所有这些相关的交互过程都由一台服务器完成,而不能被负载均衡器分散到不同的服务器上。否则可能出现异常情景:

  • 客户端输入了正确的用户名和口令,但却反复跳到登录页面;
  • 用户输入了正确的验证码,但是总提示验证码错误;
  • 客户端放入购物车的物品丢A失

3、会话保持的意义

在合适的场景下,将来自相同客户端的多个请求都分配到相同的后端服务器上,方便进行一次性处理

4、会话保持的弊端

负载均衡的目的是将高并发的请求分配到后台的多个真实服务器上进行并行处理,以减轻单个后台服务器的负载压力。而会话保持要达成的目的是将有关联性的多个请求分配到同一个后台服务器上。
因此,我们要根据应用环境的特点来选择合适的会话保持。

5、会话保持的分类

简单会话保持

它是基于源地址IP(IP_HASH)来实现的会话保持,所以又称为四层会话保持,TCP,UDP层实现
将来自于同一个IP地址的请求分配到一个特定的后端serve上
在这里插入图片描述
优点:实现时简单,效率高
缺点:当多个客户端通过代理或者NAT地址转换的方式访问服务器时,对于负载均衡器来说,这些客户端所有的请求都来自于同一个IP地址,这样的话,所有的i请求就都会分配到同一台后端server上,造成严重的负载失衡

存会话保持

通过后端服务器共享session来实现
1)数据库存放
优点:实现简单
缺点:当数据库的访问量较大时,如果将session存放到数据库中,频繁的session读取操作会严重影响数据库本身的业务
适用场景:数据库访问量不大的场景
2)文件系统存放
通过NFS实现,后端server只需要挂载NFS中存放session的共享目录即可
缺点:高并发场景下,NFS本身在硬盘IO性能和网络带宽上存在较大 的瓶颈
3)Memcacheed存放
优点:读写效率高
缺点:Memcached会删除不常用的内容,如果用户过了一段时间后继续访问,就会出现读取失败的问题

基于cookie的会话保持(七层会话保持)

http、https实现,是目前应用最广泛的会话保持方式
客户端第一次请求时,V-server(负载均衡器)会在后端server返回给客户端的数据包中插入cookie,相当于标记了此台real-server(后端服务器),当客户端请求再次发生时,会带有这个cookie,那么V-server就会根据这个cookie来将这个请求分配给之前的那台real-server上
注意:cookie是由V-server写入的,real-server并不写入cookie,所以real-server每次把数据包返回给客户端的时候,V-server都会插入更新后的cookie。

在HAProxy中进行会话保持可以通过使用Cookie或基于源IP的方法来实现。 1. 使用Cookie进行会话保持:HAProxy可以通过在响应中设置Cookie来实现会话保持。当客户端发送请求时,HAProxy会检查请求中是否包含有效的会话Cookie。如果存在,它将根据Cookie的值将请求路由到相应的后端服务器。如果不存在,HAProxy可以选择一个后端服务器,并在响应中设置一个新的会话Cookie,以便客户端在后续请求中使用。 以下是一个示例配置: ``` frontend my_frontend bind 0.0.0.0:80 mode http default_backend my_backend backend my_backend mode http balance roundrobin cookie JSESSIONID prefix server backend1 192.168.0.1:8080 cookie server1 server backend2 192.168.0.2:8080 cookie server2 ``` 在上述配置中,HAProxy使用名为"JSESSIONID"的Cookie来进行会话保持。"cookie"关键字指定了Cookie的名称,并使用"prefix"参数表示Cookie值由HAProxy自动生成。 2. 使用基于源IP的方法进行会话保持:另一种常见的方法是基于源IP的会话保持。HAProxy可以根据客户端的源IP地址将请求路由到同一台后端服务器,从而实现会话保持。这种方法适用于无状态的应用,其中会话信息不需要存储在后端服务器上。 以下是一个示例配置: ``` frontend my_frontend bind 0.0.0.0:80 mode http default_backend my_backend backend my_backend mode http balance source server backend1 192.168.0.1:8080 server backend2 192.168.0.2:8080 ``` 在上述配置中,"balance source"指示HAProxy使用源IP地址进行负载均衡,并实现会话保持。 无论使用哪种方法,都可以根据具体需求进行配置。请注意,会话保持可能会增加服务器的负载和复杂性,因此需要根据实际情况进行权衡和调优。 希望能对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值