当前位置: 首页 > news >正文

Tomcat Session ID---会话保持

 简单拓补图

一、负载均衡、反向代理

7-1nginx代理服务器配置

[root@dlnginx ~]#yum  install epel-release.noarch -y  ###安装额外源[root@dlnginx ~]#yum install nginx -y[root@dlnginx ~]#systemctl start  nginx.service[root@dlnginx ~]#systemctl status  nginx.service

[root@dlnginx ~]#vim /etc/nginx/nginx.conf          ###主配置文件upstream tomcat {server 192.168.10.101:8080;server 192.168.10.102:8080;}location ~* \.jsp$ {proxy_pass http://tomcat;}

7-2和7-3同时进行配置

[root@Tomcat1 ~]#cd /data/上传[root@Tomcat1 data]#ls
apache-tomcat-9.0.16.tar(1).gz  jdk-8u291-linux-x64.tar(1).gz[root@Tomcat1 data]#tar xf jdk-8u291-linux-x64.tar\(1\).gz  -C /usr/local/[root@Tomcat1 data]#ls /usr/local/
bin  etc  games  include  jdk1.8.0_291  lib  lib64  libexec  sbin  share  src[root@Tomcat1 data]#cd /usr/local/[root@Tomcat1 local]#ls
bin  etc  games  include  jdk1.8.0_291  lib  lib64  libexec  sbin  share  src[root@Tomcat1 local]#ln -s jdk1.8.0_291/ jdk[root@Tomcat1 local]#ls
bin  etc  games  include  jdk  jdk1.8.0_291  lib  lib64  libexec  sbin  share  src[root@Tomcat1 local]#vim /etc/profile.d/env.shexport JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/[root@Tomcat1 local]#. /etc/profile.d/env.sh [root@Tomcat1 local]#java -version

[root@Tomcat1 data]#tar xf apache-tomcat-9.0.16.tar\(1\).gz -C /usr/local/
[root@Tomcat1 data]#cd /usr/local/
[root@Tomcat1 local]#ls
apache-tomcat-9.0.16  bin  etc  games  include  jdk  jdk1.8.0_291  lib  lib64  libexec  sbin  share  src
[root@Tomcat1 local]#ln -s apache-tomcat-9.0.16/ tomcat
[root@Tomcat1 local]#ls
apache-tomcat-9.0.16  bin  etc  games  include  jdk  jdk1.8.0_291  lib  lib64  libexec  sbin  share  src  tomcat
[root@Tomcat1 local]#useradd -s /sbin/nologin tomcat
[root@Tomcat1 local]#chown tomcat:tomcat tomcat/ -R
[root@Tomcat2 local]#cat > /usr/lib/systemd/system/tomcat.service <<EOF
> [Unit]
> Description=Tomcat
> After=syslog.target network.target
> 
> [Service]
> Type=forking
> ExecStart=/usr/local/tomcat/bin/startup.sh
> ExecStop=/usr/local/tomcat/bin/shutdown.sh
> RestartSec=3
> PrivateTmp=true
> User=tomcat
> Group=tomcat
> 
> [Install]
> WantedBy=multi-user.target
> 
> EOF[root@Tomcat2 local]#systemctl daemon-reload
[root@Tomcat2 local]#systemctl start tomcat.service 
[root@Tomcat2 local]#ss -ntap |grep 8080
LISTEN     0      100         :::8080                    :::*                   users:(("java",pid=2767,fd=54))
[root@Tomcat2 local]#systemctl status tomcat.service

进入主页面进行配置

检测:

去访问代理服务器会发现,每次调度到192.168.246.8和192.168.246.9上面,sessionID都会改变,我们要让他保持会话连接(sessionID不会变)

客户端访问代理服务器,第一次访问被调度到tomcat1服务器,由于是第一次访问,客户的cookie缓存中不会有sessionid,服务器会生成sessionid 1给 c1客户,c1客户会把sessionid  记录下来客户端第二次访问代理服务器,由于调度器的原因,不能保证一直去访问tomcat1,如果被调度到tomcat2, tomcat2服务器是没有sessionid 1, 它会认为我要生成新的sessionid 给c1客户,c1客户会更新自己的sessionid变成sessionid21.当客户端去访问代理服务器;代理服务器调度给Tomcat1;如果是第一次访问:客户端cookie里面没有sessionID,Tomcat1服务器就给给客户端生成一个sessionID并且发给客户端;客户端会将sessionID存在cookie中;当客户端第二次去访问Tomcat1时,会带着Tomcat1的sessionID,第二次,Tomcat1就不会给客户端生成新的sessionID2.由于代理服务器调度的原因;不会每次都调度给Tomcat1;当调度给Tomcat2时;cookie带的是sessionID1;Tomcat2上要用sessionID2,他就会生成一个新的ID给客户端3.所以,来回调度的时候,每次都是新的sessionID

二、会话保持 

方法一:

检验: 访问代理服务器

 session id固定了,但是服务器也固定了不调度了

方法二:

Apache Tomcat 9 (9.0.87) - Clustering/Session Replication How-To

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"channelSendOptions="8"><Manager className="org.apache.catalina.ha.session.DeltaManager"expireSessionsOnShutdown="false"notifyListenersOnReplication="true"/><Channel className="org.apache.catalina.tribes.group.GroupChannel"><Membership className="org.apache.catalina.tribes.membership.McastService"address="228.0.0.4"port="45564"frequency="500"dropTime="3000"/><Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"address="auto"port="4000"autoBind="100"selectorTimeout="5000"maxThreads="6"/><Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"><Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/></Sender><Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/><Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/></Channel><Valve className="org.apache.catalina.ha.tcp.ReplicationValve"filter=""/><Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/><Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/"watchEnabled="false"/><ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/></Cluster>

把官网中的这个页面内容加入到主配置文件中,把前面写入nginx的ip_hash给删除了,不影响方法二

tomcat2进行配置

 在子配置文件中加入下面的阴影部分

7-3  Tomcat2进行配置

和tomcat1是一样的配置方法

检测:访问代理服务器192.168.246.7/index.jsp

不管调度7-2还是7-3,sessionID都保持一致,都不变化了。

相关文章:

Tomcat Session ID---会话保持

简单拓补图 一、负载均衡、反向代理 7-1nginx代理服务器配置 [rootdlnginx ~]#yum install epel-release.noarch -y ###安装额外源[rootdlnginx ~]#yum install nginx -y[rootdlnginx ~]#systemctl start nginx.service[rootdlnginx ~]#systemctl status nginx.service [ro…...

Session会话绑定

1.需求原因 用户的请求,登录的请求,经过负载均衡后落到后面的web服务器上,登录的状态/信息也会记录在web服务器上,就会导致不通的web服务器上,登录状态不统一,造成用户频繁需要登录 2.目标&#xff1a;如何实现会话保持/会话共享 方案一&#xff1a;登录状态写入cookie中.(wor…...

win7、win10、win11 系统能安装的.net framework 版本以

win7、win10、win11 系统能安装的.net framework 版本分别是多少&#xff1f;以及能安装的最高版本是多少&#xff1f; 以下是各Windows系统能够安装和支持的.NET Framework版本及其最高可安装版本的概述&#xff1a; Windows 7&#xff1a; 自带 .NET Framework 3.5.1&#x…...

RediSearch比Es搜索还快的搜索引擎

1、介绍 RediSearch是一个Redis模块&#xff0c;为Redis提供查询、二次索引和全文搜索。要使用RediSearch&#xff0c;首先要在Redis数据上声明索引。然后可以使用重新搜索查询语言来查询该数据。RedSearch使用压缩的反向索引进行快速索引&#xff0c;占用内存少。RedSearch索…...

mybatis-plus 的saveBatch性能分析

Mybatis-Plus 的批量保存saveBatch 性能分析 目录 Mybatis-Plus 的批量保存saveBatch 性能分析背景批量保存的使用方案循环插入使用PreparedStatement 预编译优点&#xff1a;缺点&#xff1a; Mybatis-Plus 的saveBatchMybatis-Plus实现真正的批量插入自定义sql注入器定义通用…...

python异常:pythonIOError异常python打开文件异常

1.python读取不存在的文件时&#xff0c;抛出异常 通过 open()方法以读“r”的方式打开一个 abc.txt 的文件&#xff08;该文件不存在&#xff09;&#xff0c;执行 open()打开一个不存在的文件时会抛 IOError 异常&#xff0c;通过 Python 所提供的 try...except...语句来接收…...

电话机器人语音识别用哪家更好精准度更高。

语音识别系统的选择取决于你的具体需求&#xff0c;包括但不限于识别精度、速度、易用性、价格等因素。以下是一些在语音识别领域表现较好的公司和产品&#xff1a; 科大讯飞&#xff1a;科大讯飞是中国最大的语音识别技术提供商之一&#xff0c;其语音识别技术被广泛应用于各…...

【Unity动画】Unity如何导入序列帧动画(GIF)

Unity 不支持GIF动画的直接播放&#xff0c;我们需要使用序列帧的方式 01准备好序列帧 02全部拖到Unity 仓库文件夹中 03全选修改成精灵模式Sprite 2D ,根据需要修改尺寸&#xff0c;点击Apply 04 创建一个空物体 拖动序列上去 然后全选所有序列帧&#xff0c;拖到这个空物体…...

uniapp APP 上传文件

/*** 上传文件*/uploadPhoneFile:function(callback,params {}) {let fileType [.pdf,.doc,.xlsx,.docx,.xls]// #ifdef APP-PLUSplus.io.chooseFile({title: 选择文件, filetypes: [doc, docx], // 允许的文件类型 multiple: false, // 是否允许多选 },(e)>{const tem…...

arcgis数据导出到excel

将arcgis属性数据导出到excel&#xff1a; 1&#xff09; 工具箱\系统工具箱\Conversion Tools.tbx\Excel\Excel 转表 2&#xff09;用excel打开导出的图层文件中后缀为.dbf的数据&#xff08;方便快捷&#xff0c;但是中文易乱码&#xff09;...

吴恩达深度学习环境本地化构建wsl+docker+tensorflow+cuda

Tensorflow2 on wsl using cuda 动机环境选择安装步骤1. WSL安装2. docker安装2.1 配置Docker Desktop2.2 WSL上的docker使用2.3 Docker Destop的登陆2.4 测试一下 3. 在WSL上安装CUDA3.1 Software list needed3.2 [CUDA Support for WSL 2](https://docs.nvidia.com/cuda/wsl-…...

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包:第七:trans_network class

# 网络是研究微生物生态共现模式的常用方法。在这一部分中&#xff0c;我们描述了trans_network类的所有核心内容。 # 网络构建方法可分为基于关联的和非基于关联的两种。有几种方法可以用来计算相关性和显著性。 #我们首先介绍了基于关联的网络。trans_network中的cal_cor参数…...

ubuntu下在vscode中配置matplotlibcpp

ubuntu下在vscode中配置matplotlibcpp 系统&#xff1a;ubuntu IDE&#xff1a;vscode 库&#xff1a;matplotlib-cpp matplotlibcpp.h文件可以此网址下载&#xff1a;https://github.com/lava/matplotlib-cpp 下载的压缩包中有该头文件&#xff0c;以及若干实例程序。 参考…...

Vue面试题,背就完事了

1.vue的生命周期有哪些及每个生命周期做了什么? Vue.js 的生命周期可以分为以下几个核心阶段&#xff0c;每个阶段都伴随着特定的钩子函数&#xff08;生命周期钩子&#xff09;来执行相应的操作&#xff1a; 创建阶段&#xff1a; beforeCreate&#xff1a;实例被创建后、数…...

centos创建并运行一个redis容器 并支持数据持久化

步骤 : 创建redis容器命令 docker run --name mr -p 6379:6379 -d redis redis-server --appendonly yes 进入容器 : docker exec -it mr bash 链接redis : redis-cli 查看数据 : keys * 存入一个数据 : set num 666 获取数据 : get num 退出客户端 : exit 再退…...

nvm安装和使用保姆级教程(详细)

一、 nvm是什么 &#xff1a; nvm全英文也叫node.js version management&#xff0c;是一个nodejs的版本管理工具。nvm和npm都是node.js版本管理工具&#xff0c;为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 二、卸载之前安装的node: …...

跳绳计数,YOLOV8POSE

跳绳计数&#xff0c;YOLOV8POSE 通过计算腰部跟最初位置的上下波动&#xff0c;计算跳绳的次数...

阿里云ecs服务器配置反向代理上传图片

本文所有软件地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/12OSFilS-HNsHeXTOM47iaA 提取码&#xff1a;dqph 为什么要使用阿里云服务器&#xff1f; 项目想让别人通过外网进行访问就需要部署到我们的服务器当中 1.国内知名的服务器介绍 国内比较知名的一些…...

免费阅读篇 | 芒果YOLOv8改进110:注意力机制GAM:用于保留信息以增强渠道空间互动

&#x1f4a1;&#x1f680;&#x1f680;&#x1f680;本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 该专栏完整目录链接&#xff1a; 芒果YOLOv8深度改进教程 该篇博客为免费阅读内容&#xff0c;直接改进即可&#x1f680;&#x1f680;&#x1f…...

GetLastError()返回值及含义

https://www.cnblogs.com/ericsun/archive/2012/08/10/2631808.html 〖0〗-操作成功完成。 〖1〗-功能错误。 〖2〗-系统找不到指定的文件。 〖3〗-系统找不到指定的路径。 〖4〗-系统无法打开文件。 〖5〗-拒绝访问。 〖6〗-句柄无效。 〖7〗-存储控制块被损坏。 〖8〗-存储空…...

k8s admin 用户生成token

k8s 版本 1.28 创建一个admin的命名空间 admin-namespce.yaml kind: Namespace apiVersion: v1 metadata: name: admin labels: name: admin 部署进k8s kubectl apply -f admin-namespce.yaml 查看k8s namespace 的列表 kubectl get namespace查看当前生效的…...

【vscode】vscode重命名变量后多了很多空白行

这种情况&#xff0c;一般出现在重新安装 vscode 后出现。 原因大概率是语言服务器没设置好或设置对。 以 Python 为例&#xff0c;到设置里搜索 "python.languageServer"&#xff0c;将 Python 的语言服务器设置为 Pylance 即可。...

深度学习实战模拟——softmax回归(图像识别并分类)

目录 1、数据集&#xff1a; 2、完整代码 1、数据集&#xff1a; 1.1 Fashion-MNIST是一个服装分类数据集&#xff0c;由10个类别的图像组成&#xff0c;分别为t-shirt&#xff08;T恤&#xff09;、trouser&#xff08;裤子&#xff09;、pullover&#xff08;套衫&#xf…...

vue实现element-UI中table表格背景颜色设置

目前在style中设置不了&#xff0c;那么就在前面组件给设置上 :header-cell-style"{ color: #ffffff, fontSize: 14px, backgroundColor: #0E2152 }" :cell-style"{ color: #ffffff, fontSize: 14px, backgroundColor: #0E2152 }"...

RabbitMQ学习总结-消息的可靠性

保证MQ消息的可靠性&#xff0c;主要从三个方面&#xff1a;发送者确认可靠性&#xff0c;MQ确认可靠性&#xff0c;消费者确认可靠性。 1.发送者可靠性&#xff1a;主要依赖于发送者重试机制&#xff0c;发送者确认机制&#xff1b; 发送者重试机制&#xff0c;其实就是配置…...

2024蓝桥杯每日一题(BFS)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;母亲的奶牛 试题二&#xff1a;走迷宫 试题三&#xff1a;八数码1 试题四&#xff1a;全球变暖 试题五&#xff1a;八数码2 试题一&#xff1a;母亲的奶牛 【题目描述】 农夫约…...

力扣思路题:最长特殊序列1

int findLUSlength(char * a, char * b){int alenstrlen(a),blenstrlen(b);if (strcmp(a,b)0)return -1;return alen>blen?alen:blen; }...

c# 的ref 和out

在C#中&#xff0c;ref和out是用于方法参数的关键字&#xff0c;它们都允许在方法调用中对参数进行修改。 ref关键字用于传递参数的引用。当使用ref关键字声明一个参数时&#xff0c;实际上是在告诉编译器此参数在调用方法之前必须被赋值。ref参数传递的是参数的引用地址&…...

ONLYOFFICE文档8.0全新发布:私有部署、卓越安全的协同办公解决方案

ONLYOFFICE文档8.0全新发布&#xff1a;私有部署、卓越安全的协同办公解决方案 文章目录 ONLYOFFICE文档8.0全新发布&#xff1a;私有部署、卓越安全的协同办公解决方案摘要&#x1f4d1;引言 &#x1f31f;正文&#x1f4da;一、ONLYOFFICE文档概述 &#x1f4ca;二、ONLYOFFI…...

Mar 14 | Datawhale 01~04 打卡 | Leetcode面试下

第一阶段主要就是学习字符串的处理和二叉树的遍历。前一段时间学习了二叉树的遍历&#xff0c;记忆还比较深刻&#xff0c;这几个题还是比较轻松的做出来了&#xff1b;但是像Longest Palindromic Substring这样的题除了简单的字符串处理&#xff08;回文判断&#xff09;&…...

网站设计连接数据库怎么做/企业推广宣传文案

1、添加钩子文件 进入对应Git仓库 cd /home/myrepo.git 创建post-receive touch hooks/post-receive 使用vim打开post-receive将如下shell写入文件中 #!/bin/sh #author: embbnux #Blog of Embbnux: http://www.embbnux.com #判断是不是远端仓库 IS_BARE$(git rev-par…...

网站同时做竞价和优化可以/无锡百度推广代理商

单结晶体E2E-X5F1-Z管有三个电极&#xff0c;两个基极(第一基极bl、第二基极b2)和一个发射极e&#xff0c;因此也称为双基极二极管&#xff0c;其结构、等效电路、图形符号及其引脚如图6-55所示。在一块高电阻率的N型硅半导体基片上&#xff0c;引出两个欧姆接触极&#xff1a;…...

青岛网站制作服务/开鲁网站seo不用下载

https://www.cnblogs.com/wenyule/p/9740926.html转载于:https://www.cnblogs.com/sunxiuwen/p/10230380.html...

提升神马seo关键词自然排名/北京seo课程培训

mysql中的时间戳是10位数。利用java取值后在页面上展示会显示为1970年的某个时间&#xff0c;这是因为前端展示的时间戳是13位数的。需要将从mysql中取到的时间乘以1000然后去返回给前端。再由前端将时间戳转换为时间。...

淘宝图片做链接的网站/百度竞价排名是以什么形式来计费的广告?

1、摘要 本文主要讲解&#xff1a;cnn-bigru-attention对电池寿命进行预测 主要思路&#xff1a; 建立cnn-bigru-attention模型读取数据&#xff0c;将数据截成时序块训练模型&#xff0c;调参&#xff0c;评估模型&#xff0c;保存模型 2、数据介绍 电池寿命数据 3、相关…...

网站怎么上传ftp/快速建站工具

OTA(在线升级)模块的车载测试工程师的具体工作内容主要包括&#xff1a;1.负责OTA产品的设计、开发和维护&#xff1b;2.负责与汽车软件和硬件的OTA集成&#xff1b;3.负责OTA产品的性能和可靠性测试&#xff1b;4.负责OTA产品的安全性测试&#xff1b;5.负责OTA系统的性能调优…...