Tomcat集群会话保持

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是不会变的,这样就实现了会话保持

猜你喜欢

转载自blog.csdn.net/sdjadycsdn/article/details/80078170