tomcat集群环境下如何保证session一致性

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: tomcat集群环境下如何保证session一致性

为什么集群环境下,会出现session不一致问题?

答:使用nginx的负载均衡之后,不确定访问哪个tomcat,导致客户端存储的jsessionid携带到集群环境下的其他tomcat是无效的。

关于集群环境下,解决session不一致问题?


方式1:负载均衡的策略ip黏着:在nginx的default.conf配置ip_hash,这样客户端会固定的访问某一台服务器


方式2:使用redis管理集群环境的session,session对象不在存储在tomcat服务器,而是redis数据库中,如下图所示:

实现原理描述:

客户端访问nginx,分配到tomcat-1服务器,创建session对象,jsessionid,将jsessionid作为key,session对象作为value存到redis数据库中,随着响应将jsessionid返回给客户端浏览器,该客户端浏览器向nginx在次发出请求,写cookie(包含jsessionid),到nginx后被分配到tomcat-2服务器,tomcat-2获取cookie中的jsessionid,去redis数据库查找对应的session对象并且返回使用

实现步骤:

1.将下边三个jar上传到tomcat服务器中的lib目录下

要重写tomcat的session实现方法,将session管理到redis服务器中

如下图所示:

2. 修改tomcat中conf目录下的context.xml

原因1:我们上传的jar中的类,替换了tomcat中的代码,需要让tomcat知道我们的类叫什么名字

原因2:配置redis数据库所在服务器的ip地址和redis数据库的端口号

3. 重启tomcat服务

进入bin目录 ,先执行./shutdown.sh 再执行./startup.sh

注意:以上操作集群中的tomcat(有几个就操作几个)都是相同的操作

4,测试

做一个登陆页面,测试一下上面的操作有没有成功

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8月前
|
JavaScript Java 应用服务中间件
centos部署vue项目(java,tomcat环境的搭建)
centos部署vue项目(java,tomcat环境的搭建)
160 0
|
8天前
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。
|
5月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
165 0
|
3月前
apache+tomcat配置多站点集群的方法
apache+tomcat配置多站点集群的方法
53 4
|
5月前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
|
5月前
|
Java 应用服务中间件 Windows
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
|
5月前
|
Java 应用服务中间件 Windows
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
|
7月前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
96 1
|
6月前
|
Java 应用服务中间件 Linux
Tomcat安装部署[单机软件],可以让用户开发的WEB应用程序,变成可以被访问的网页,Tomcat的使用需要jdk环境
Tomcat安装部署[单机软件],可以让用户开发的WEB应用程序,变成可以被访问的网页,Tomcat的使用需要jdk环境
|
8月前
|
Java 应用服务中间件
MyEclipse和Tomcat的搭建环境与项目创建
MyEclipse和Tomcat的搭建环境与项目创建
73 1