Nginx服务器对session的处理策略

Nginx(反向代理,负载均衡,动静分离,tomcat集群session共享) nginx的反向代理,负载均衡,动静分离,tomcat集群session共享 阅读详情

Nginx除了通过绑定IP地址即ip_hash策略这种黏性session外,

还有其他两种策略,分别为session复制方案与使用memcached或其他的额外空间方案。

这里我们先讨论下ip_hash方案。

ip_hash策略好不好,其实,这确实是一种简单粗暴但很高效的方式,不需要做过多的配置工作,不过不好之处在于其容错性差,一旦所绑定的Tomcat服务器或者其他后端服务器出现了故障,那么用户的所有session将面临丢失。不过这个也因应用而异吧,毕竟每台服务器会出现故障的情况概率也是很小的,如果应用能过允许这样的一种错误概率,其实ip_hash策略也是一个不错的选择。

session复制方案
session复制方案,即只要某台服务器的session发生了改变,则他会向他所有其他的在服务器群上的服务器发出广播事件,让他们也把相应的session做出改变。已达到所有服务器群上的服务器的session保持一致的目的。优点,首先是具有容错性,另外就是不同服务器上保留着相同的session,用户如果发生切换服务器时session响应非常及时;但这样做也有一个致命的缺点,这个缺点是来自于服务器群间的网络广播事件,如果后端服务器群组比较多或者当session比较大时,网络广播会极大地消耗网络性能,甚至造成整个网络的瘫痪。

关于如何设置的问题,第一是先在Tomcat.server.xml中开启该复制选项,如下图所示,第二则是在应用中指定应用处于分布式部署环境之下。即在应用中,在web.xml代码中指定分布式环境,添加字段;

这里我们可能得注意两个问题,一个是如端口号的问题,也就是说需要指明端口号,另外一个就是Tomcat服务器的内网地址与外网地址问题,我们知道,一个服务器一般至少都会存在两个ip地址,即内网地址与外网地址。如果我们的服务器群上绑定的是内网地址,那么我们需要进行说明,不然可能会出现错误的现象,这个时候我们可以在Channel中的Receiver进行说明,命令配置如下:

使用memcached或其他的额外空间方案:
每个服务器需要session时都去该空间读取信息。如可以使用memcached(依赖于libevent库)

Memcached方案也可以分为两种,一种是基于黏性session的memcached方案,(如图一)一种则是基于非黏性session的memcached方案(如图二)

黏性session的memcached方案的工作原理,假如用户的sessionA存入了Tomcat1,那么Tomcat1会把A存入自己的内存中,同时复制一份,提交给自己的memcached,(图中的memcached之间是互相广播的,他们之间的session值是相同的),假如Tomcat1发生了宕机现象,请求被转移到了Tomcat2上,那么Tomcat2会根据传过来的cookie去自己的内存中寻找sessionA,找不到时便会从自己依赖的memcached上进行读取,读取下来后便同样会做复制,将值存入自己的内存中,下次便可以直接从自己的内存中读取了。也就是说,在这种黏性session的memcached中,如果不发生宕机,memcached只扮演了一个备份的角色,读取修改操仍然在Tomcat中进行。
非黏性session的memcached方案的工作原理:假如用户的sessionA操作的是Tomcat1,那么Tomcat1会把值直接存入自己的备份memcached中,另一个用户访问Tomcat2,那么Tomcat2也会把值直接存入自己的备份memcached中。这些备份memcached会以广播的形式通知自己的主存储memcached,使得主存储memcached具有全部的session,当用户再次Tomcat1时,他会去主存储memcached中读取sessionA。也就是说,在这样一种模式下,Tomcat1并不起存储session的功能,所有的读取修改操作的关键依赖于主存储memcached,这就是非黏性session。

在配置时只需要去官网下载相关的Jar包即可,然后再Tomcat中配置Context即可,再哪里配置Context这个问题上,个人的看法是:

关于Context配置:
1.conf/context.xml下,属于全局配置,作用于所有应用;
2.conf/[enginename]/[hostname]/context.xml.default 全局配置,作用于指定host下全部应用;
3.conf/[enginename]/[hostname]/[contextpath].xml 只作用于contextpath指定的应用;
4.应用META-INF/context.xml只作用于本应用;
5.conf/server.xml 下,作用于Context docBase指定的应用

所有,只希望session管理作用于特定应用,最好用3,4 方式设置,希望能够作用于全体,可用于1,2,5设置

作者:东湖散人
来源:优快云
原文:https://blog.youkuaiyun.com/shadema/article/details/76038831
版权声明:本文为博主原创文章,转载请附上博文链接!

【SSO单点登录】分布式Session存在问题&& spring-session的设计之妙 session存在的问题token取代session,实现服务端到客户端的跨变。 阅读详情

相关推荐

nginx实现session共享

兼容Tomcat7 与tomcat8 +memcached做session共享 , 解决了tomcat7与Tomcat8的 java.lang.NoSuchFieldError: attributes 错误。

Nginx——Session共享

Session共享

zhouhengzhe的博客 4424

HWSD2.0土壤数据处理实战:从下载到属性提取全流程解析

本文详细解析了HWSD2.0全球土壤数据库从数据下载、属性筛选到GIS空间连接与提取的全流程实战方法。重点介绍了如何利用ArcGIS Pro等工具,将土壤单元编码与黏粒含量等属性表关联,最终生成全球土壤属性专题栅格图,为农业规划与生态研究提供关键数据支撑。

weixin_29214691的博客 610

nginx负载均衡的session问题

查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享 PHP服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态,下面提供了几种方式来解决session共享的问题: 1、不使用session,换用cookie session是存放在服务器端的,cookie是存放在客户端的,我们可以把用户访问页面产生的session放到cookie里面,就是以cookie为中转站。

qq_38119124的博客 3403

【实验】Linux下完全卸载oracle单实例(亲身体验完整版)

停止oracle数据库服务 停止监听 卸载数据库实例 因为自己懒得再弄dbca图形化界面啥的,直接采用dbca静默删除数据库实例,命令如下 dbca -silent -deleteDatabase -sourcedb orclhq -sid orcl -sysDBAUserName orcl -sysDBAPassword zte [oracle@slave ~]$ dbca -silent ...

萝卜吃鱼914的博客 1945

2024年上市公司ESG评级全解析:六大权威数据源横向对比与应用指南

本文深度解析2024年国内主流ESG评级数据源,包括华证、商道融绿、Wind、富时罗素和彭博,横向对比其覆盖范围、评分逻辑与应用侧重点。文章提供实战指南,帮助投资者与企业根据投资决策、风险管理和学术研究等不同场景,精准选择并有效应用ESG数据,实现从概念到实用分析工具的转变。

weixin_29229055的博客 312

Nginx session会话问题、缓存问题探讨

Nginx本身是一个高性能的Web服务器和反向代理服务器,并不直接处理会话和缓存问题。 然而,Nginx可以通过结合其他工具和技术来解决这些问题。

zgcyyh的专栏 1044

tkinter表格进阶:5分钟实现CSV数据可视化编辑界面(含右键菜单配置)

本文详细介绍了如何使用Python的tkintertable库快速构建CSV数据可视化编辑界面。通过导入导出CSV数据、深度定制右键菜单(如复制、插入行、删除行)以及实现单元格验证等进阶功能,开发者能在5分钟内创建一个可嵌入自动化流程的专业级桌面数据编辑工具,显著提升数据处理效率。

930

关于Nginx session sticky

Nginx以前对session 保持支持不太好,主要采用ip_hash把同一来源的客户(同一C段的IP)固定指向后端的同一台机器,ip_hash有个缺点是不能实现很好的负载均衡;直到nginx的扩展模块nginx-sticky-module的出现,解决了session sticky的问题。 基本的原理: 首先根据轮询RR随机到某台后端,然后在响应的Set-Cookie上加上route

云计算、分布式架构、K8S、大数据、机器学习、搜索、推荐、广告 3万+

MSP430项目设计:2020年TI杯大学生电子设计竞赛 坡道行驶电动小车(C题)循迹小车(分享项目展示视频与源码)

文章目录题目要求一、硬件设计二、理论分析与计算三、电路与程序设计四、测试方案与测试结果五、项目展示 哔哩哔哩项目展示视频:https://www.bilibili.com/video/BV1oz4y1d7mH/ 百度网盘资料链接:https://pan.baidu.com/s/1PC-lkSORH_XCgIG-u3HCog 提取码:c7zz 取走记得点赞啊! 题目要求 1.任务 利用TI的MSP430/MSP432平台,设计制作一个四轮电动小车。要求小车能沿着指定路线在坡道上自动循迹骑线行驶。小车必须独立

mbs706的博客 4万+

在Simulink中实现基于深度强化学习的控制算法仿真建模

通过上述步骤,你可以在Simulink中实现基于深度强化学习的控制算法仿真建模。这种方法适用于许多复杂的控制问题,尤其是当传统控制方法难以找到有效解决方案时。随着经验的积累,你可以进一步探索不同的深度强化学习算法及其变种,以适应更广泛的应用场景。此外,还可以结合其他先进技术(如迁移学习、多智能体协作等),提升模型的表现能力。

amy_mhd的博客 414

nginx负载均衡的五种策略

nginx负载均衡的五种策略轮询权重ip hashurl hash(第三方)fair (第三方) 轮询 1.轮询 轮询是nginx默认的策略,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能够自动剔除。 upstream backserver { server 192.168.0.6; server 192.168.0.66; } 优点:实现简单 缺点:不考虑每台服务器处...

Ariqiao的博客 517

倍福---EL2262模块飞拍配置

控制器安装了twincat3,用EL2262实现相机飞拍功能。本文档只介绍如何通过EL2262实现飞拍的触发,并不涉及视觉方面的处理 参考文章: https://author.baidu.com/home?from=bjh_article&app_id=1669190598708386 https://mp.weixin.qq.com/s/r4Iq8kOP-o4_M8vCce5M9g 1、 飞拍的应用 在大多数场合,只能当被检测工件和相机都处于静止状态下才能进行拍照,拍照完成后,再移动工件或相机,进

weixin_41883890的博客 3738

解决nginx中proxy_pass到tomcat的session丢失问题

解决nginx中proxy_pass到tomcat的session丢失问题

jcoiwenwfkowe的博客 101

Centos 7 Linux 安装 JDK 8:下载、安装、配置环境变量、验证

本文详细介绍了在 CentOS 7 系统上手动安装 JDK 8 的完整流程,包括环境准备、JDK 安装包下载与上传、解压安装、配置全局环境变量,以及最终的验证步骤。适用于使用 VMware 虚拟机、云服务器或物理机的 CentOS 7 用户,操作清晰、步骤完整,帮助开发者快速搭建 Java 开发环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2578

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Nginx

nginx 2019年11月12日 14:32 nginx安装 将文件解压到没有中文没有空格的路径即可安装完毕 目录结构 conf: 启动加载的核心配置文件nginx.conf,需要手动编辑,其他的副本.back都是nginx.conf的测试版本文件 logs: error.log : 输出启动停止运行的各种错误信息,定位问题的首先要观察的文件 access.lo...

Vampire的博客 340

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

NGINX配置及问题

一、关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。详情请查看我的另一篇博客。 二、Nginx负载均衡策略   负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream模块是这样的,模块内的server是服务器列表...

gxdsdhr123的博客 481

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

nginx负载均衡策略

一、关于Nginx的负载均衡   在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。 二、Nginx负载均衡策略   负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream模块是这样的,模块内的server是服务器列表: #动态服务器组 upstream dynamic_zuoyu { server localhost:8080; #tom

jdb421890026的博客 264

nginx负载均衡多台tomcat,session共享,session丢失

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34259232的博客 328

Nginx----web服务器,反向代理服务器

Nginx是一款轻量级的Web 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

qq_46147786的博客 1859

熟能生巧之Nginx服务器之负载均衡策略(6种)

前言:熟才能生巧,还一种意思碎片化的知识可能让你掉进坑,系统化的知识能巧妙的避免一些问题。 6种负载均衡策略的实现方式,其中除了轮询和轮询权重外,都是Nginx根据不同的算法实现的。在实际运用中,需要根据不同的场景选择性运用,大都是多种策略结合使用以达到实际需求。 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。 1. Nginx负载均衡策略 负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用

cao919的专栏Net 395

Cookie 和 Session的区别

Cookie 和 Session的区别

weixin_58032613的博客 2377

分布式架构下,Session共享有什么方案?

2.存入cookie中:将session存储到cookie中,但是缺点也明显,例如每次请求都要带着session,数据存储在客户端本地,是有风险的;1.不要有Session:但是确实在某些场景下,是可以没有session的,其实在很多借口类系统当中,都提倡【API无状态服务】;4.我们现在的系统会把session放到Redis中存储,虽然结构上变的复杂,并且需要多访问一次Redis,也就是每一次的接口访问,都不依赖于session,不依赖于前一次的接口访问,用jwt的token;

weixin_63719049的博客 1248
上一篇: nginx全面解析【负载均衡、反向代理、高可用、宕机容错】
下一篇: Session 与 Token 的区别
圣诞
博客等级 码龄10年 60粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值