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 服务集群的重要保障。

相关推荐
mwmbfh2 分钟前
【CentOS7环境下Redis 6.2.14 源码编译部署说明】
linux·运维·数据库·redis
智恒百亿5 分钟前
5090八卡算力服务器的技术架构与AI应用场景分析
服务器·人工智能·架构
渡我白衣5 分钟前
Acceptor模块的设计与实现
java·linux·服务器·开发语言·网络·c++·人工智能
做一个AK梦10 分钟前
DevOps
运维·devops
leagsoft_100311 分钟前
联软科技推出UniNDR,打通终端、服务器与网络侧的威胁检测链路
服务器·网络·科技
云雾J视界12 分钟前
英伟达AI服务器涨价超15%:HBM存储成本飙升,AI算力成本重构开始
服务器·人工智能·芯片·英伟达·hbm
hzxpaipai13 分钟前
杭州网站运维|企业官网上线前技术检查清单:SEO、GEO、安全、服务器与备份
运维·服务器·nginx·安全
优化Henry16 分钟前
关于“星链”互联网系统的几点认识
运维·服务器·网络·笔记·学习·信息与通信
瀚高PG实验室17 分钟前
PostgreSQL libpq lo_* 函数允许服务器超级用户覆盖客户端栈内存HGVE-2026-E011
服务器·数据库·postgresql·瀚高数据库
沫璃染墨19 分钟前
《从零入门Linux系统篇(二十八):文件篇·一——Linux为什么“万物皆文件”:从C语言文件流到系统调用》
linux·运维·服务器·开发语言·c++·文件