Java Web分布式集群搭建(三)——Session同步

JavaWeb yan loading.. 0评论 已收录

对于一个业务系统的Tomcat集群来说,必须保证同一个用户访问到任一台服务器上都可以维持之前操作的身份。比如在服务器A进行了登陆,那么在服务器B中也要同步该用户已登录的状态,这里就用到了Session的同步。

同步方式

sticky模式、复制模式、Terracotta模式(非Tomcat自带)

sticky模式

把所有同一个session的请求,都发送到相同的节点,这样就避免了Session的问题

复制模式

所有的节点都保证同一个Session,有一点点的改变都会进行广播同步

实现方式:只要修改Tomcat的server.xml文件

  1. 修改Engine节点信息:
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
  2. 去掉<Cluster> <\Cluster> 的注释符
  3. web.xml中增加<distributable/>

Terracotta模式

该方法是利用开源软件Terracotta

Terracotta的基本原理是对于集群间共享的数据,当在一个节点发生变化的时候,Terracotta只把变化的部分发送给Terracotta服务器,然后由服务器把它转发给真正需要这个数据的节点。

比较

  • sticky模式,失去了负载均衡的意义,把同一个人的请求始终分配到同一个服务器处理。
  • 复制模式,容易引起流量洪灾,每一次改变都要进行一次广播,对网络的影响很大。
  • Terracotta,比较适合的选择,但是需要第三方开源软件,配置比较繁琐。

Session同步实例——Terracotta

1、下载Terracotta

http://d2zwv9pap9ylyd.cloudfront.net/terracotta-3.7.7.tar.gz

2、安装

3、配置Tomcat作为Terracotta客户端

复制terracotta-session-1.3.7.jarterracotta-toolkit-1.1-runtime-5.7.0.jar到Tomcat/lib目录:CATALINA_HOME/lib

编辑 /var/lib/tomcat7/conf/context.xml文件

注意:className要根据Tomcat的版本进行修改。

4、配置Terracotta服务端

注意:编辑的文件中注意修改:server和web-application

5、启动Terracotta

启动顺序:管理 => 子节点

(主服务器)运行Terracotta(注意加 & 丢到后台执行)

各个子节点,配置好context.xml后重启服务器

(各个子服务)重启Tomcat

6、关闭Terracotta

  • 子节点关闭tomcat
  • 管理节点执行 ./stop-tc-server.sh -n apache

关注<爱上极客>公众号,定期推送精彩内容!

喜欢 (0)

如未说明则本站原创,转载请注明出处:爱上极客 » Java Web分布式集群搭建(三)——Session同步


0
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址