使用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一致性相关推荐

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

    来自:会点代码的大叔 分布式架构下的 Session 共享,也称作分布式 Session 一致性:分布式架构下 Session 共享有哪些问题,又有哪些解决方案,让我们一起看一下. 01 Sessio ...

  2. session一致性架构设计极简教程

    一,缘起 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文. Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建se ...

  3. razor 怎样使用session变量_Nginx负载均衡解决session一致性问题

    [145] 前言: http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你. 那么,在一些场合,确实需要服务器记住当前用户怎么办?比如用户登录邮箱后 ...

  4. 分布式系统session一致性的问题

    session的概念 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Sessio ...

  5. session一致性架构设计

    什么是session? 由于HTTP协议是无状态的协议,因此它不会去记住上一次浏览器访问服务器时的信息.同一个用户的两次操作,与两个不同用户的操作,对它来说是一样的. 这样虽然满足了互联网web应用的 ...

  6. 究竟如何保证session一致性?

    什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文. Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session ...

  7. 分布式 Session 一致性解决方案

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/10118674.html 推荐: ...

  8. 【铜】第174-9篇 一对一视频录制(九)一对多学生端删除白板及nginx下配CI

    关键词:webm文件在手机端播放, 一对多学生端删除白板, nginx下配CI 一.一对一视频录制 1.1.webm文件在手机端播放 1)在PC上 a.)用谷歌浏览器播放 http://123.57. ...

  9. SpringBoot笔记:SpringBoot2.3集成SpringSession+nginx+redis实现session共享

    文章目录 Spring Session介绍 Redis集成 yml配置 依赖添加 redis存值查看 登录服务器查看redis的值 查询所有"spring:session:"开头的 ...

最新文章

  1. 企业为什么要使用基于Docker的PaaS/CaaS平台
  2. MySQL删除存储过程(DROP PROCEDURE)
  3. 计算机网络是互相连接的自治系统,自治系统内ip子网和sdn子网的互联机制imisa-江苏计算机网络.pdf...
  4. java两个数最大公约数和最小公倍数,java求两个数的最大公约数和最小公倍数
  5. mongodb objetcid_mongodb(1)
  6. Vb如何设计编程计算机,vb程序设计论文
  7. Python 爬取留言板留言(一):单进程版+selenium模拟
  8. 台型计算机电源电路图,电脑ATX电源控制电路及原理
  9. Mysql基础-常用sql语句
  10. html table自动序号,layui 给数据表格加序号的方法
  11. 如何将JPG转换成PNG格式呢?
  12. JPress企业站主题-jpressicu使用教程
  13. 思维导图怎么画简单好看的直观技巧
  14. html聚光灯特效,jquery实现聚光灯效果的方法
  15. 洛谷:P1033 [NOIP2002 提高组] 自由落体 C++详解
  16. 手机刷机后数据还在吗?手机刷机并保留数据的方法
  17. 一、物理层真的很物理 【计算机网络全景梳理系列】
  18. 服务器购买和域名购买备案的全流程
  19. 卡巴斯基 windows 10 远程桌面
  20. 风林火山高级java工程师面试题

热门文章

  1. IDEA一直提示 错误: 找不到或无法加载主类
  2. 本地配置文件git提交
  3. 探究Java虚拟机栈
  4. Django中提供的6种缓存方式
  5. 9款Android经常使用的高速开发框架
  6. iOS - OC iOS 开发体系
  7. 在安装完成oracle的时候,需要su - oracle,但有时候出现ulimit pize...
  8. 集成Lua到你的Android游戏(常见问题补充,解决,)
  9. struts2.2.3需包含的jar包
  10. 用牛顿迭代法求浮点数的平方根