首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

多个tomcat其间的session复制

2012-08-02 
多个tomcat之间的session复制用tomcat做负载集群时, 经常会用到session复制(Session Replication), 很多例

多个tomcat之间的session复制

用tomcat做负载集群时, 经常会用到session复制(Session Replication), 很多例子会告诉我们要配置apache或者其他的Web Server. 而事实上, 单纯从session复制的角度讲, 是不需要Web Server的.

?

tomcat的session复制分为两种, 一种是全局试的(all-to-all), 这意味着一个node(tomcat实例)的session发生变化之后, 它会将这些变更复制到其他所有集群组的成员;另一种是局部试的, 它会用到BackupManager,?BackupManager能实现只复制给一个Buckup Node, 并且这个Node会部署相同的Web应用, 但是这种方式并没用经过很多的测试多个tomcat其间的session复制(来自官方说明..).

?

tomcat的session复制是基于IP组播(multicast)来完成的, 详细的IP组播介绍可以参考这里.

简单的说就是需要进行集群的tomcat通过配置统一的组播IP和端口来确定一个集群组, 当一个node的session发生变更的时候, 它会向IP组播发送变更的数据, IP组播会将数据分发给所有组里的其他成员(node).

?

配置如下(这里所有的tomcat都在不同的物理主机, 如果在同一台主机上需要改tomcat的tcpListenPort)

?

?

同时, 在web.xml里增加<distributable/>描述

?

?

?

现在将TomcatClusterDemo部署到两个tomcat上(直接将war包或者部署文件拷贝到webapps下, 或者通过Tomcat Web Application Manager部署), 依次启动两个tomcat.

?

先访问第一台tomcat(下面的9.119.84.68)的test.jsp, 并添加几个session.

然后访问第二台tomcat(下面的9.119.84.88)的test.jsp, 为了告诉tomcat我们要用那个session访问, 我们需要在URL后面加上 ;jsessionid=SESSION_ID?

SESSION_ID可以从第一个test.jsp页面上获得.

?

看看效果, 两个在不同server上的tomcat实现了session复制!

?


多个tomcat其间的session复制

?

?

?

热点排行