Tomcat集群及Session共享

article/2025/9/23 16:01:06

Tomcat集群

由于单台Tomcat的承载能力是有限的,当我们的业务系统用户量比较大,请求压力比较大时,单台Tomcat是扛不住的,这个时候,就需要搭建Tomcat的集群,而目前比较流行的做法就是通过Nginx 来实现Tomcat集群的负载均衡

1、准备工作

1、准备Tomcat
在服务器上,安装两台tomcat(这里记得要改tomcat服务器端口号)
2、安装配置Nginx
在当前服务器上,安装Nginx
Nginx和服务器在同一个文件夹安装完Nginx后,配置Nginx,修改配置文件conf/nginx.conf
加入代码:

upstream serverpool {server localhost:8888;server localhost:9999;
}server {listen  99;server_name  localhost;# 后端搜索服务localhost / {proxy_pass http://serverpool/;}
}

2、Session共享

在tomcat集群中,如果应用需要用户进行登录,这个时候,由于tomcat做了负载均衡,则用户登录并访问应用系统时,就会出现问题

解决方案一:ip_hash 策略

一个用户发起的请求,只会请求到tomcat1上进行操作,另一个用户发起的请求只在tomcat2上进行操作。那么这个时候,同一个用户发起的请求,都会通过nginx的ip_hash策略,将请求转发到其中一台tomcat上

在这里插入图片描述
假设用户发送请求的ip为192.180.0.100,因为此时的负载均衡策略是ip_hash策略,那么nginx就会对192.180.0.100这个ip地址进行hash算法,算出的hash值指向了tomcat1,tomcat1存储了该用户的登录信息,再进行查询操作,nginx算出的hash值还是指向了tomcat1。所以,该用户的登录和查询都是在同一台tomcat,这样就不会出现登录成功而查询失败的问题

解决方案二:Session复制
在tomcat中修改配置文件,修改文件名为conf/server.xml,添加代码,这段代码加在 <Engine> 或者 <Host> 里面

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster/>

然后,在tomcat部署的应用中(放在webapps中),修改WEB-INF/web.xml,在web.xml中加入代码:<distributable/>.即可

方案二是通过广播的形式进行session复制,当tomcat服务器的数量有很多时,方案二会对session复制很多次,就会浪费很多的资源

解决方案三:SSO单点登录

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。sso的定义是在多个应用系统中,用户只需要登录一次就可以访问所以相互信任的应用系统,也是用来解决集群环境session共享的方案之一
客户端发起一次请求,请求到达nginx,nginx会去后端请求应用服务器tomcat1(假设请求到了tomcat1),如果应用需要登录,tomcat1会将这个请求重定向到认证服务,在认证服务中进行登录,然后认证服务会将登录的信息保存在redis数据库当中。下一次,用户再一次发起查询请求,请求到达nginx,nginx请求到了tomcat2,这时候,tomcat2中是没有用户登录的信息,它就会到认证系统中进行验证,然后认证系统就会去redis中查询有没有用户登录的信息,如果有,就可以在tomcat2中进行查询操作


http://chatgpt.dhexx.cn/article/6kcQ5xPm.shtml

相关文章

Windows中部署Tomcat集群

1.新建文件夹tomcats 准备3台tomcat 测试&#xff1a; 错点&#xff1a; 使用的是7无缓存版本&#xff0c;但是扔显示8。解决&#xff1a;将环境变量中的catalina删掉。 ~~删除线格式~~ 2.修改配置文件 第一台8005 第二台8006 第三台8007 此位置第一台8091&#xff…

Nginx+Tomcat集群环境搭建

Tomcat集群能带来什么&#xff1f; 提高服务的性能、并发能力、以及高可用性提高项目架构的横向扩展能力 提高服务的性能 实际公司线上生产环境都会选择一台机器部署一个tomcat&#xff0c;多台机器完成集群&#xff0c;毕竟一台机器部署多个tomcat还是有一些共享瓶颈的&…

tomcat集群

tomcat集群 什么是集群 集群是一组协同工作的服务实体&#xff0c;用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来&#xff0c;一个集群就象是一个服务实体&#xff0c;但 事实上集群由一组服务实体组成。 集群的特性 与单一服务实体相比较&#xff0c;…

tomcat集群部署

tomcat集群部署 1 创建2个 tomcat 2 将 tomcat 官网文档的配置示例复制到 server.xml文件中 3 修改 server.xml 文档中的参数配置 3.1 Cluster    className表示tomcat集群时,之间相互传递信息使用那个类来实现信息之间的传递。channelSendOptions可以设置为2、4、8、10&a…

Nginx+tomcat集群

Nginxtomcat集群 定义&#xff1a;在测试环境中有多个tomcat运行这一个项目&#xff0c;需要nginx管理 2特点&#xff1a;1&#xff0c;增加项目访问能力 2&#xff0c;增加服务器性能 3&#xff0c;实现不同负载均衡 3负载均衡&#xff1a;根据每台服务器的性能分配其能承受住…

Tomcat集群配置

1.Tomcat集群 多个 Tomcat 服务器构成了一个集群&#xff08;Cluster&#xff09;系统&#xff0c;共同为客户提供服务。集群系统具有以下优点&#xff1a; 高可靠性高性能计算负载平衡 图1-1显示了由 JK插件和两个 Tomcat服务器构成的集群系统。集群系统的正常运作离不开以…

Tomcat 集群搭建入门

简介 由于单台Tomcat的承载能力是有限的&#xff0c;当我们的业务系统用户量比较大&#xff0c;请求压力比较大时&#xff0c;单台Tomcat是扛不住的&#xff0c;这个时候&#xff0c;就需要搭建Tomcat的集群&#xff0c;而目前比较流程的做法就是通过Nginx来实现Tomcat集群的负…

Tomcat 集群部署

Tomcat快速入门 Tomca基本介绍 环境准备 JVM介绍Java业务都是运行在java虚拟机上&#xff0c;java虚拟机简称JVM( java virtual machine) ​ 虚拟机是通过软件模拟出具有完整硬件系统的功能 ​ 为什么Java需要JVM虚拟机 ​ 早期C语言不支持跨平台&#xff0c;如果C语言想…

Tomcat系列之五:Tomcat集群

基于mod_proxy实现负载均衡 在httpd.conf中启用httpd-proxy.conf配置文件&#xff0c; Include /etc/httpd/extra/httpd-proxy.conf 修改httpd-proxy.conf文件&#xff1a; ProxyRequests Off <proxy balancer://lbcluster1>BalancerMember ajp://192.168.1.211:8009 loa…

集群与jetspeed

1 、 集群背景介绍 1.1 术语定义服务软体是b/s或c/s结构的s部分&#xff0c;是为b或c提供服务的服务性软件系统。 服务硬体指提供计算服务的硬件、比如pc机、pc服务器。 服务实体通指服务软体和服务硬体。 客户端指接受服务实体服务的软件或硬件。 1.2 两大关键特性集…

Tomcat集群搭建超详细

TOMCAT集群 目录 TOMCAT集群 1 1 集群 1 1.1 什么是集群 1 1.2 集群的特性 1 1.3 集群的分类 1 1.4 TOMCAT集群配置的优缺点 2 1.5 APACHETOMCAT 2 1.6 环境说明 2 2 软件安装 3 2.1 安装说明 3 2.2 JDK安装 3 2.3 APACHE安装 4 2.4 TOMCAT安装 4 3 集群配置 6 …

JAXB元素详解

JAXB简介 JAXB&#xff08;Java Architecture for XML Binding) 是一个业界的标准&#xff0c;是一项可以根据XML Schema产生Java类的技术。该过程中&#xff0c;JAXB也提供了将XML实例文档反向生成Java对象树的方法&#xff0c;并能将Java对象树的内容重新写到XML实例文档。从…

xml java jaxb_【Java】JAXB操作XML用法详解

什么是JAXB? JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。在JAX-WS(Java的WebService规范之一)中,JAXB可以实现对象和XML之间相互转换。Unmarshaller类管理将XML数据反序列化为新创建的Java内容树的进程,并可在解…

java jaxb 注解_一、JAXB注解的使用详解

一、首先先上一段测试的代码下面的说明和测试都已这一段代码为主 package shiqingxue.cn.itcast.utils.xml; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax…

JAXB应用实例

博文目录 一 JavaBean和XML相互转换初体验二 JAXB使用基础介绍三 应用实际四 问题补充 正文 过往的项目中数据存储都离不开数据库&#xff0c;不过最近做的一个项目的某些数据&#xff08;比如人员信息、菜单、权限等等&#xff09;却完全没有涉及任何数据库操作&#xff0c;直…

JAXB常用注解讲解(超详细)

简介&#xff1a; JAXB&#xff08;Java Architecture for XML Binding) 是一个业界的标准&#xff0c;是一项可以根据XML Schema产生Java类的技术。该过程中&#xff0c;JAXB也提供了将XML实例文档反向生成Java对象树的方法&#xff0c;并能将Java对象树的内容重新写到XML实例…

OpenCV-Python (Canny边缘检测)

Canny边缘检测是一种非常流行的边缘检测算法&#xff0c;是John Canny在1986年提出的。它是一个多阶段的算法&#xff0c;即由多个步骤构成。 图像降噪计算图像梯度非极大值抑制阈值筛选 原型 OpenCV-Python中Canny函数的原型为&#xff1a; edge cv2.Canny(image, thresh…

python-opencv之边缘检测(cv2.Canny)

理论 Canny边缘检测是一种常用的边缘检测算法&#xff0c;并且他是一个多阶段的算法&#xff0c;分成如下几个阶段&#xff1a; 1. 消除噪声 由于边缘检测容易受到图像中噪声的影响&#xff0c;第一步是用5x5高斯滤波器去除图像中的噪声。 2. 寻找图像的强度梯度 然后对平滑后…

Canny边缘检测算法及实现

Canny边缘检测算法及实现 微信公众号&#xff1a;幼儿园的学霸 目录 文章目录 Canny边缘检测算法及实现目录前言原理步骤实现参考资料 前言 提取图片的边缘信息是底层数字图像处理的基本任务之一.边缘信息对进一步提取高层语义信息有很大的影响. 对图像提取边缘可以通过图像的…

Canny边缘检测算法

Canny是目前最优秀的边缘检测算法&#xff0c;其目标为找到一个最优的边缘&#xff0c;其最优边缘的定义为&#xff1a; 好的检测&#xff1a;算法能够尽可能的标出图像中的实际边缘好的定位&#xff1a;标识出的边缘要与实际图像中的边缘尽可能接近最小响应&#xff1a;图像中…