您的位置:首页 > 运维架构 > Tomcat

tomcat集群会话保持

2017-11-26 20:10 435 查看
Manger对象用于实现HTTP会话管理的功能,Tomcat中有5种Manger的实现:而DeltaManager是在企业中用到最多的,今天就来介绍DeltaManager的会话保持

DeltaManager

用于Tomcat集群的会话管理器,它通过将改变了会话数据同步给集群中的其它节点实现

会话复制。这种实现会将所有会话的改变同步给集群中的每一个节点,也是在集群环境中

用得最多的一种实现方式

DeltaManager会话管理器是tomcat默认的集群会话管理器,它主要用于

集群中各个节点之间会话状态的同步维护,集群增量会话管理器的职责是将某节点的会话该变同步到集群内其他成员节点上,它属于全节点复制模式,所谓全节点复制是指集群中某个节点的状态变化后需要同步到集群中剩余的节点,非全节点方式可能只是同步到其中某个或若干节点。

在集群中全节点会话复制的一个大致步骤如图所示,客户端发起一个请求,假设通过一定的负载均衡设备分发策略分到其中一个结点node1,如果还未存在session对象的话web容器将会创建一个会话对象,接着执行一些逻辑处理,在对客户端响应之前个重要的事情是要把session对象同步到集群中其他节点上,最后再响应客户端。当客户端第二次发起请求时,假如分发到node3节点上,由于同步了node1的session会话,所以在执行逻辑时并不会取不到session的值。如果删除某个会话对象,则要同时通知其他节点把相应会话删除,如果修改了某个会话的某些属性也同样要更新到其他节点的会话中

实验配置:

实现tomcat基于会话保持(通过把session复制给每一个节点)

一台ip为172.17.253.172,一台ip为172.17.252.131,其中.172的机器即充当nginx代理,又是tomcat,而131的机器只做tomcat用

第一步:在172.17.253.172上



把此配置文件传到另外一台ip为172.17.252.131的机器上

catalina.sh stop

catalina.sh start

第二步:配置nginx,让nginx做tomcat的代理

在172.17.253.172上



重启nginx

第三步:分别在两台机器上写一个测试页面进行会话保持的测试

cd /usr/local/tomcat/webapps/test



在另外一台机器上只需要把session.jsp中的TomcatB改为TomcatA即可,用于区分

第四步:最重要的一个参数,如果不配置此步只有以上几步的话是实现不了会话保持的,也就是session会变

在两台机器上分别添加以下内容

在conf/下的web.xml中的上方加入此标签

在重启tomcat:

catalina.sh stop

catalina.sh start

第五步:把web.xml放到和session.jsp相同目录下

第六步:测试





可以发现当代理服务器把请求代理到不同的tomcat服务器时session是不会变的,这样就实现了会话保持
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: