LVS -- 持久链接(Persistent Connection)实现会话粘滞

  • 持久链接 (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 服务集群的重要保障。

相关推荐
Agent产品评测局4 小时前
企业数据处理自动化落地,抓取分析全流程实现方案 —— 2026企业级智能体选型与技术路径深度解析
运维·人工智能·ai·自动化
autumn20054 小时前
Flutter 框架跨平台鸿蒙开发 - 历史人物对话
服务器·flutter·华为·harmonyos
我科绝伦(Huanhuan Zhou)4 小时前
分享一个网络智能运维系统
运维·网络
鬼先生_sir4 小时前
Spring Cloud 微服务监控实战:SkyWalking + Prometheus+Grafana 全栈解决方案
运维·spring cloud·grafana·prometheus·skywalking
信创DevOps先锋5 小时前
DevOps工具链选型新趋势:本土化适配与安全可控成企业核心诉求
运维·安全·devops
xyz5995 小时前
如何在 WSL 中删除指定版本的 Ubuntu 以及安装
linux·运维·ubuntu
linux修理工5 小时前
Claude code与CC-switch安装使用
运维·人工智能
小叶lr5 小时前
jenkins打包前端样式丢失/与本地不一致问题
运维·前端·jenkins
Agent产品评测局5 小时前
互联网行业自动化平台选型,运营全流程提效指南:2026企业级智能体架构与实战全解析
运维·人工智能·ai·chatgpt·架构·自动化
亚空间仓鼠5 小时前
OpenEuler系统常用服务(五)
linux·运维·服务器·网络