nginx下的session一致性
使用tomcat做web项目的时候,都会给客户端发送session。Client请求走到nginx,如果client请求图像,nginx转发给图像。client再访问图像,nginx可能就转发给了图像2。Client带着session1来,可是图像2这台服务器根本没有session1,就会认为这个session1失效,图像2会重新为Client产生一个session2并返回。带来的结果就是Client还得重新登录。
挑出2台节点服务器做以下操作:
根目录在tomcat下的webapps/ROOT,复制一份ndex.jsp为index.jsp.bak
重写jsp:
from 192.168.16.112<br>session=<%=session.getId()%>
启动tomcat并在浏览器查验:192.168.16.112:8080/
两个节点单独访问都是没有问题的。
为了负载给2、3,还需要定义upstream上游:
upstream tom{server 192.168.16.112:8080;server 192.168.16.113:8080;
}
用起来:
location /cat {proxy_pass http://tom/;
}
别忘了还要设置keepalived_timeout为0,且要重新加载配置文件!
浏览器访问cat,session就串了。怎么规避这一问题?
几台tomcat只需要找一个公共的地方,专门用来存session。可以是文件、数据库等。基于3s考虑,读写session不能花费太多的时间和资源,因此这会用内存数据库。
对tomcat做手术,安装memcached:
- 安装memcached
1、安装libevent
2、安装memcached
3、启动memcached
memcached -d -m 128m -p 11211 -l 192.168.9.11 -u root -P /tmp/
-d:后台启动服务
-m:缓存大小
-p:端口
-l:IP
-P:服务器启动后的系统进程ID,存储的文件
-u:服务器启动是以哪个用户名作为管理用户 - 如果源配置了也可以用
- yum –y install memcached
修改剩下的2台tomcat,他俩的session就不要写在本机了,而是写入memcached中。
修改tomcat的配置文件cd conf(apache目录下)context.xml
把以下内容粘贴到context的最后(需要修改为自己的ip地址):
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.16.111:11211" sticky="false" lockingMode="auto"sessionBackupAsync="false"requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
放jar包,找到2、3的tomcat的lib目录,放上所有的jar包,然后再启动tomcat,最后浏览器访问http://192.168.16.111/cat就齐活了。
nginx下的session一致性相关推荐
- 分布式架构下,Session 共享有什么方案?
来自:会点代码的大叔 分布式架构下的 Session 共享,也称作分布式 Session 一致性:分布式架构下 Session 共享有哪些问题,又有哪些解决方案,让我们一起看一下. 01 Sessio ...
- session一致性架构设计极简教程
一,缘起 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文. Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建se ...
- razor 怎样使用session变量_Nginx负载均衡解决session一致性问题
[145] 前言: http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你. 那么,在一些场合,确实需要服务器记住当前用户怎么办?比如用户登录邮箱后 ...
- 分布式系统session一致性的问题
session的概念 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Sessio ...
- session一致性架构设计
什么是session? 由于HTTP协议是无状态的协议,因此它不会去记住上一次浏览器访问服务器时的信息.同一个用户的两次操作,与两个不同用户的操作,对它来说是一样的. 这样虽然满足了互联网web应用的 ...
- 究竟如何保证session一致性?
什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文. Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session ...
- 分布式 Session 一致性解决方案
你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/10118674.html 推荐: ...
- 【铜】第174-9篇 一对一视频录制(九)一对多学生端删除白板及nginx下配CI
关键词:webm文件在手机端播放, 一对多学生端删除白板, nginx下配CI 一.一对一视频录制 1.1.webm文件在手机端播放 1)在PC上 a.)用谷歌浏览器播放 http://123.57. ...
- SpringBoot笔记:SpringBoot2.3集成SpringSession+nginx+redis实现session共享
文章目录 Spring Session介绍 Redis集成 yml配置 依赖添加 redis存值查看 登录服务器查看redis的值 查询所有"spring:session:"开头的 ...
最新文章
- 企业为什么要使用基于Docker的PaaS/CaaS平台
- MySQL删除存储过程(DROP PROCEDURE)
- 计算机网络是互相连接的自治系统,自治系统内ip子网和sdn子网的互联机制imisa-江苏计算机网络.pdf...
- java两个数最大公约数和最小公倍数,java求两个数的最大公约数和最小公倍数
- mongodb objetcid_mongodb(1)
- Vb如何设计编程计算机,vb程序设计论文
- Python 爬取留言板留言(一):单进程版+selenium模拟
- 台型计算机电源电路图,电脑ATX电源控制电路及原理
- Mysql基础-常用sql语句
- html table自动序号,layui 给数据表格加序号的方法
- 如何将JPG转换成PNG格式呢?
- JPress企业站主题-jpressicu使用教程
- 思维导图怎么画简单好看的直观技巧
- html聚光灯特效,jquery实现聚光灯效果的方法
- 洛谷:P1033 [NOIP2002 提高组] 自由落体 C++详解
- 手机刷机后数据还在吗?手机刷机并保留数据的方法
- 一、物理层真的很物理 【计算机网络全景梳理系列】
- 服务器购买和域名购买备案的全流程
- 卡巴斯基 windows 10 远程桌面
- 风林火山高级java工程师面试题