首页 Tomcat教程tomcat-session共享实战案例

tomcat-session共享服务器,msn介绍与安装

JVM原理详解

运维派是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai

实战案例

环境准备:

  • 时间同步,确保NTP或Chrony服务正常运行。
  • 防火墙规则
  • 禁用SELinux
  • 五台主机
IP 主机名 服务
10.0.0.100 proxy 调度器 Nginx、HTTPD
10.0.0.101 t1 tomcat1 JDK8、Tomcat8
10.0.0.102 t2 tomcat2 JDK8、Tomcat8
10.0.0.103 m1 memcached1 memcached
10.0.0.104 m2 memcached2 memcached
  • 准备proxy主机的配置,利用nginx作为反向代理

  • 在10.0.0.101和102上准备tomcat,并安装和配置memcached的客户

  • 在m1和m2上分别配置memcached

  • 查看结果,刷新浏览器可以看到SessionID前面部分不变

tomcat-session共享实战案例插图
tomcat-session共享实战案例插图(1)

停止t2和m2的服务,再观察结果

tomcat-session共享实战案例插图(2)

non-sticky模式
原理

从msm 1.4.0之后开始支持non-sticky模式。

Tomcat session为中转Session,n1为主session,n2为备session。产生的新的Session会发送给主、备memcached,并清除本地Session。

n1下线,n2转正。n1再次上线,n2依然是主Session存储节点。

memcached配置(问题)

放到 $CATALINA_HOME/conf/context.xml

redis配置

下载jedis.jar,放到$CATALINA_HOME/lib/,对应本次安装就是/usr/local/tomcat/lib。

放到 $CATALINA_HOME/conf/context.xml

浏览器访问,使用redis相关工具可以观察到redis中的信息

tomcat-session共享实战案例插图(3)
tomcat-session共享实战案例插图(4)

总结

通过多组实验,使用不同技术实现了session持久机制

  1. session绑定,基于IP或session cookie的。其部署简单,尤其基于session黏性的方式,粒度小,对负载均衡影响小。但一旦后端服务器有故障,其上的session丢失。
  2. session复制集群,基于tomcat实现多个服务器内共享同步所有session。此方法可以保证任意一台后端服务器故障,其余各服务器上还都存有全部session,对业务无影响。但是它基于多播实现心跳,TCP单播实现复制,当设备节点过多,这种复制机制不是很好的解决方案。且并发连接多的时候,单机上的所有session占据的内存空间非常巨大,甚至耗尽内存。
  3. session服务器,将所有的session存储到一个共享的内存空间中,使用多个冗余节点保存session,这样做到session存储服务器的高可用,且占据业务服务器内存较小。是一种比较好的解决session持久的解决方案。

以上的方法都有其适用性。生产环境中,应根据实际需要合理选择。

不过以上这些方法都是在内存中实现了session的保持,可以使用数据库或者文件系统,把session数据存储起来,持久化。这样服务器重启后,也可以重新恢复session数据。不过session数据是有时效性的,是否需要这样做,视情况而定。

本文链接:http://www.yunweipai.com/35198.html

tomcat-session共享服务器,msn介绍与安装

JVM原理详解

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2020 YUNWEIPAI.COM - 运维派
扫二维码
扫二维码
返回顶部