6-nginx-会话一致性解决(sesion一致)
由于tomcat使用的为集群, 通过nginx访问时轮询不同的tomcat, 使得session无法统一, 所以将session单独抽取出来做共享session.
此tomcat版本为 7.0.61.tar.gz 刚开始用7.0.75对他来说版本太高了, 一直包异常!!!!!!
首先打开两台tomcat, 使用nginx进行反向代理, 修改 CATALINA_HOME/conf/server.xml
#tocmat01中配置
<Engine name="Ca.." def.. jvmRoute="tomcat1">
#tomcat02中配置
<Engine name="Ca.." def.. jvmRoute="tomcat2">
#tomcat03中配置
<Engine name="Ca.." def.. jvmRoute="tomcat3">
此时通过页面取值
<html lang="en">
<h1>tomcat_01</h1>
sessionId: <%=session.getId()%>
sessionIP: <%=request.getServerName()%>
</html>
可在浏览器中看到sessionId的变化
关于session共享有四种方案
1), tomcat广播, 对系统资源占用较大, 占用io流, 不推荐使用
2), 使用memcache
3), 使用redis, 安装第三方库,
4), 使用tengine的cookie一致性解决
本文只讲后面三种方式
2, 使用memcached作为session管理
2.1) 安装memcached
yum -y install memcached
2.2) 测试memcached是否安装成功, 使用telnet, 没有的话yum安装
telnet localhost
会显示:

然后:
set abc
出现STORED表示memcached安装成功
2.3) tomcat下安装jar, 拷贝到 CATALINA_HOME/lib 目录下,

2.4) 更改tomcat配置
vim ./conf/context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.208.102:11211"
sticky="false"
lockingMode="auto"
sessionBackupAsync="false"
sequestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupTimeout="" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
之后启动tomcat, 既可以看到sessionID已经不变了
3, 使用redis解决session一致性问题
配置和memcached基本类似
3.1) 安装redis
yum install redis
启动
service redis start
3.2) 修改reids.conf 中的 bind, 否则只能使用localhost访问
vim /etc/redis.conf bind 192.168.208.102
3.3), 在 CATALINA_HOME/conf/context.xml 中添加配置
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="192.168.208.102"
port=""
database=""
maxInactiveInterval="" />
3.4) 将redis和tomcat的session-manager jar包导入

此时启动tomcat, 就可以完成session一致性问题了
4, 使用tengine的会话保持功能实现
tengine提供了cookie保持功能, 即客户端访问一台服务器后, 始终指向该台服务器, 相当于粘滞功能

fallback: 服务挂了是否访问其他机器
domain: 访问域名, 默认不配置
path; cookie路径, 默认不配置
此种情况, 分配的那台tomcat挂了以后, 就不能狗保持回话一致了, 因此并不为一种可靠的解决方案.
需要浏览器开启cookie, 才可以使用
此外, 使用memcached或redis时, 如果不想安装插件, 可在代码中直接操作缓存来存储和取出数据, 相当于session, 为一种比较可靠的一致性解决方案
系列来自尚学堂极限班
6-nginx-会话一致性解决(sesion一致)的更多相关文章
- 【转】ora-00031:session marked for kill(标记要终止的会话)解决方法
今天碰到一个问题,有一张表不能操作,很可能是被锁了,首先想到的是kill session,于是执行了下列的脚本找到是哪个session有问题: select object_name, machine, ...
- [ASP.NET][Session] 使用 SQLServer 会话管理解决 Session 丢失问题
使用 SQLServer 会话管理解决 Session 丢失问题 步骤 1.通过命令行执行 aspnet_regsql.exe 程序(不要双击安装),先在 CMD 中输入命令 cd C:\Window ...
- nginx反向代理-解决前端跨域问题
1.定义 跨域是指a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源.注意:跨域限制访 ...
- Nginx会话保持之nginx-sticky-module模块
Nginx会话保持之nginx-sticky-module模块 - 天行健,君子以自强不息:地势坤,君子以厚德载物. - CSDN博客https://blog.csdn.net/huangjinjin ...
- [转]通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题
转:http://blog.csdn.net/zhengwish/article/details/51602059 通过设置nginx的client_max_body_size解决nginx+php上 ...
- 返回xml过长时被nginx截断的解决办法
返回xml过长时被nginx截断的解决办法 问题描述:通过网页获取数据,数据格式为xml.当xml比较短时,可以正常获取数据.但是xml长度过长时不能正常获取数据,通过观察返回数据的源代码,发现xml ...
- nginx会话保持之sticky模块
nginx会话保持之nginx-sticky-module模块 在使用负载均衡的时候会遇到会话保持的问题,常用的方法有:1.ip hash,根据客户端的IP,将请求分配到不同的服务器上:2.cooki ...
- 项目部署问题:xftp无法连接服务器、Nginx403 Forbidden解决、nginx反向代理解决前端跨域问题
一.xftp无法连接服务器 在xftp中配置正确的ip,用户名和密码后,居然无法连接 解决方案:将协议里面的FTP换成SFTP,注意换成SFTP后端口就默认换成22,要还是原来的21就还是连不上的哈 ...
- 通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题
通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题:用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_si ...
随机推荐
- 团队项目(第四周之一)—GG队
Alpha认领任务: 叶尚文:对应键盘监听结果的动画以及计算 于泽浩:制作背景gif图,并保证能在程序中循环播放 龙剑初:项目进度跟进及博客更新 杜婷萱:把图片结合起来,设置云朵透明度的变化 蔡晓晴: ...
- 获取Oracle EBS数据库跟踪文件方法
http://www.orapub.cn/posts/1624.html 一.以下在Oracle APP中执行: 1) Set the Profile Option: ‘Initialization ...
- CNN的学习笔记
1.卷积核的概念,卷积核的size,就是滑动窗口的大小,例如原始数据为28*28的手写数字,滑动窗口size为5*5,则卷积核的size为5*5.卷积核就是权重集合,就是5*5+1.1表示偏置项.卷积 ...
- HTTP的瓶颈
http协议,1.0或1.1版本,一个连接智能发送一个请求,通信都是基于请求/响应方式的,请求只能从客户端发起(半双工),发送冗长的首部. 在交互比较频繁的社交网站等,一直轮训带来的网络及服务器压力是 ...
- System.IO.FileLoadException:“混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。”
解决方案: 在app.config新增如下配置节: <?xml version="1.0"?> <configuration> <startup us ...
- C# 一些代码小结--串口操作
串口解析显示中文 private String SerialPortReadStr() { try { String str = null; int n = serialPort1.BytesToRe ...
- 简单了解 iTextSharp实现HTML to PDF
查了下 转PDF的各种框架 发现大部分都是收费的. 发现一款免费的iTextSharp 就想玩一下 只是简单做个HTML 转PDF 没有过深的探究. 首先 我在项目中引入iTextSharp ...
- Flask系列01--flask认识, 启动, 响应
一. 四款python web框架简单总结 Django : 优点 - 大而全所有组件都是有组织内部开发高度定制化 教科书级别的框架 缺点 - 浪费资源,请求的时候需要的资源较高 Flask : 优势 ...
- 673. Number of Longest Increasing Subsequence
Given an unsorted array of integers, find the number of longest increasing subsequence. Example 1: I ...
- 【2019年OCP新题】OCP题库更新出现大量新题-11
11.Your database is in archivelog mode. You want to disable archiving for the database. Examine thes ...