Tomcat session复制及session共享技术

目录

1、环境

2、配置测试页面

3、配置session共享


前言:

为什么要做session复制或共享

实现Session复制或Session共享的目的是为了在多个Tomcat实例之间实现Session的无缝转移和共享,以提供更高的可伸缩性、负载均衡和容错性。以下是一些原因:

  1. 高可用性和容错性:通过复制或共享Session,当一个Tomcat实例发生故障或停机时,其他实例可以接管并继续处理用户请求,而不会丢失Session数据。这确保了应用程序的高可用性和容错性。

  2. 负载均衡:当有多个Tomcat实例运行时,Session复制或共享可以实现负载均衡。用户的请求可以分散到不同的实例上,提高系统的整体性能和吞吐量。

  3. 无状态化应用设计:通过将Session数据从应用服务器中移出,可以使应用程序变得更加无状态化。这意味着每个请求可以独立处理,不依赖于特定的服务器状态,从而提高应用程序的可扩展性。

  4. 保持用户会话状态:通过Session复制或共享,用户的会话状态可以在多个请求之间得到保持。这对于需要跨页面或多个请求保持用户身份、购物车信息、用户首选项等状态非常重要。

1、环境

服务 IP
nginx 10.12.153.203
tomcat 10.12.153.203
tomcat2 10.12.153.203
tomcat3 10.12.153.203

注:我这里是在一台服务器配置的tomcat多实例做实验,基于Tomcat运维-CSDN博客最后的环境,也可以部署在不同服务器

2、配置测试页面

sql 复制代码
vim /usr/local/tomcat/webapps/ROOT/session.jsp   #编写一个测试页面

cd /usr/local/

cp tomcat/webapps/ROOT/session.jsp tomcat2/webapps/ROOT/session.jsp  

cp tomcat/webapps/ROOT/session.jsp tomcat3/webapps/ROOT/session.jsp

浏览器访问:

10.12.153.203/session.jsp (可以看到每刷新一次网页都会生成一个新的ID)

3、配置session共享

在官网找文档:Apache Tomcat® - Welcome!

sql 复制代码
vim tomcat/conf/server.xml

然后找到这一部分(在server.xml里面配置,所有tomcat实例)

sql 复制代码
vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml 

其他实例相同配置,4000端口不同

然后重新启动服务浏览器访问即可

可以看到ID不变了,只有主机名在变

官方建议,不超过四个节点可以使用这个方法,因为他是all-to-all的模式,频繁的广播session信息会造成负载过高

cookie 和 session 到底是什么 - 知乎

nginx+tomcat+redis实现session共享_nginx tomcat redis实现session共享-CSDN博客

相关推荐
dllmayday17 分钟前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛1392462567328 分钟前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
极客先躯1 小时前
高级java每日一道面试题-2025年11月24日-容器与虚拟化题[Dockerj]-runc 的作用是什么?
java·oci 的命令行工具·最小可用·无守护进程·完全标准·创建容器的核心流程·runc 核心职责思维导图
用户60648767188961 小时前
AI 抢不走的技能:用 Claude API 构建自动化工作流实战
java
我命由我123452 小时前
Kotlin 开发 - lateinit 关键字
android·java·开发语言·kotlin·android studio·android-studio·android runtime
峥无2 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
aXin_ya2 小时前
微服务第八天 Sentinel 四种分布式事务模式
java·数据库·微服务
Halo_tjn2 小时前
Java Set集合相关知识点
java·开发语言·算法
用户2367829801682 小时前
从 chmod 755 说起:Unix 文件权限到底是怎么算的?
linux
Linsk2 小时前
Java和JavaScript的关系真是雷峰和雷峰塔的关系吗?
java·javascript·oracle