持久链接 (Persistent Connection):LVS 的一种特性,用于在一段时间内将来自同一源 IP 的所有请求绑定到同一台后端 RS,以维持会话。
会话粘滞 (Session Sticky):也叫会话保持,指将同一用户的多次请求路由到同一台服务器,以维护用户的会话状态。
一.概述
1.1 原理
LVS 持久链接通过在 Director 上维护一个内存中的连接表来实现会话粘滞。
· 记录调度信息:当一个新的客户端(源 IP)首次访问 VIP 时,LVS 根据调度算法(如 rr)将其分配到一台 RS,并记录下这个映射关系。
· 超时重定向:在指定的超时时间(默认 360 秒)内,该客户端的所有后续请求,LVS 都会查找连接表,强制将其再次调度到同一台 RS 上,确保会话不中断。超时后,映射关系失效,新的请求会重新进行调度。
1.2 目的
在 DR 模式下,确保来自同一客户端的一系列相关请求在一段时间内被持续路由到同一台后端服务器,从而维持会话状态,提升用户体验和业务逻辑的完整性。
1.3 适用场景
电商网站的购物车、用户登录状态等需要服务器端存储会话信息的场景。
表单提交、文件上传等需要连续交互的操作,防止因切换 RS 导致数据丢失。
二. 环境设定
2.1 环境流程图

2.2 实验环境
2.3 环境配置
完整环境设定方法已整理并发布到CSDN以下链接中,若需要可跳转查看
https://blog.csdn.net/2401_84184229/article/details/157652660
三. 实现方法
3.1 在rs主机中同时开始http和https两种协议
在RS1中
[root@RS1 ~]# dnf install mod_ssl -y
[root@RS1 ~]# systemctl restart httpd

在RS2中
[root@RS2 ~]# dnf install mod_ssl -y
[root@RS2 ~]# systemctl restart httpd

3.2 设定ipvs调度策略
[root@vsnode ~]# ipvsadm -A -f 6666 -s rr -p 1
#使用 -A 选项重新创建虚拟服务,并通过 -p 1 选项指定持久化超时时间为 1 秒
[root@vsnode ~]# ipvsadm -a -f 6666 -r 192.168.221.10 -g
#将后端真实服务器重新添加到该虚拟服务中。
[root@vsnode ~]# ipvsadm -a -f 6666 -r 192.168.221.20 -g
[root@vsnode ~]# ipvsadm -Ln
3.3 测试
[root@client ~]# curl 192.168.221.200
RS2 - 192.168.221.20
[root@client ~]# curl 192.168.221.200
RS2 - 192.168.221.20

观察:

新开一个vsnode会话:
[root@vsnode ~]# watch -n 1 ipvsadm -Lnc

四. 结论
LVS 持久链接通过在 Director 上维护一个基于源 IP 的连接映射表,在指定的超时时间内实现了会话粘滞。相较于简单的源地址哈希(sh)调度算法,它更加灵活,通过超时机制避免了客户端与 RS 的长期绑定,从而防止了负载均衡器的负载失衡。在 DR 模式下,持久链接是处理有状态应用的关键技术,它在保证高性能转发的同时,有效解决了会话一致性问题,是构建可靠、稳定的 Web 服务集群的重要保障。

