【Tomcat+session复制】

  1. 云栖社区>
  2. 博客>
  3. 正文

【Tomcat+session复制】

科技小能手 2017-11-08 15:21:00 浏览777
展开阅读全文

一、实验环境:centos 5.3  
1、将所需的包下载至/usr/src 目录,首先安装jdk:
程序包会提示按回车键,我们根据提示安装即可,解压完毕,会在当前目录生成 jdk1.6.0_18 这个文件夹


  1. chmod o+x jdk* && ./jdk*   
  2.  
  3. mkdir -p /usr/java && mv jdk1.6.0_18 /usr/java/下  
  4. vi /etc/profile 最后面加入以下语句:  
  5. export JAVA_HOME=/usr/java/jdk1.6.0_18  
  6. export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib  
  7. export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin  
  8. source /etc/profile //使环境变量马上生效  
  9. java –version //查看java版本,显示版本是1.6.0_18,并且是64位的证明安装成功!  
  10. 【 Java HotSpot(TM) 64-Bit Server VM (build 16.0-b10, mixed mode) 】  
  11.  
  12. cd /usr/src && tar xzf apache-tomcat-6.0.30.tar.gz  
  13. 解压完成执行:  
  14. mv apache-tomcat-6.0.30 /usr/local/tomcat_1 && cp /usr/local/tomcat_1 /usr/local/tomcat_2 -r 

【移动到/usr/local下并重命名为tomcat_1文件夹,并cp一个tomcat_2】
部署两个Tomcat群集做负载均衡用!

2、设置tomcat的java变量


  1. cd /usr/local/tomcat_1/bin/ && vi setenv.sh 创建一个setenv.sh脚本文件,添加如下语句即可  
  2. JAVA_HOME=/usr/java/jdk1.6.0_18  
  3. JAVA_JRE=/usr/java/jdk1.6.0_18/jre  
  4. 并且拷贝setenv.sh文件到tomcat_2/bin/下 :  
  5.  
  6. cp -p /usr/local/tomcat_1/bin/setenv.sh /usr/local/tomcat_2/bin 下即可!  
  7. 保存退出  
  8. 检查两个tomcat下bin目录的*.sh 文件是否有可执行权限,如果没有则进入到相应的目录执行 chmod   
  9.  
  10. o+x *.sh 即可!  
  11.  
  12. 给两个tomcat分别创建不同的目录如下:mkdir -p /usr/webapps/{www_1,www_2} 

二、Tomcat1修改如下


  1. Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">  
  2.    
  3.  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">  
  4.   <Manager className="org.apache.catalina.ha.session.DeltaManager"   
  5.  
  6. expireSessionsOnShutdown="false" notifyListenersOnReplication="true" />  
  7. <Channel className="org.apache.catalina.tribes.group.GroupChannel">  
  8.   <Membership className="org.apache.catalina.tribes.membership.McastService"   
  9.  
  10. address="224.0.0.4" port="45564" frequency="500" dropTime="3000" />  
  11.   <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"   
  12.  
  13. address="192.168.2.79" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6" />  
  14.  <!--  
  15.    
  16.  timeout="60000" 
  17.    
  18.   -->   
  19.  <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">  
  20.   <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />  
  21.   </Sender>  
  22.   <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>  
  23.   <Interceptor   
  24.  
  25. className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />  
  26.   <Interceptor   
  27. className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor" />  
  28.   </Channel>  
  29.   <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="" />  
  30.   <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve" />  
  31.   <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-  
  32.  
  33. temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false" />
  34.  <ClusterListener   
  35.  
  36. className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />  
  37.   <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />  
  38.   </Cluster> 

Tomat2的修改如下 


  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">  
  2.    
  3.  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">  
  4.   <Manager className="org.apache.catalina.ha.session.DeltaManager"   
  5.  
  6. expireSessionsOnShutdown="false" notifyListenersOnReplication="true" />  
  7. <Channel className="org.apache.catalina.tribes.group.GroupChannel">  
  8.   <Membership className="org.apache.catalina.tribes.membership.McastService"   
  9.  
  10. address="224.0.0.4" port="45564" frequency="500" dropTime="3000" />  
  11.   <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"   
  12.  
  13. address="192.168.2.79" port="4001" autoBind="100" selectorTimeout="5000" maxThreads="6" />  
  14.  <!--  
  15.    
  16.  timeout="60000" 
  17.    
  18.   -->   
  19.  <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">  
  20.   <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />  
  21.   </Sender>  
  22.   <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />  
  23.   <Interceptor   
  24.  
  25. className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />  
  26.   <Interceptor   
  27.  
  28. className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor" />  
  29.   </Channel>  
  30.   <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="" />  
  31.   <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve" />  
  32.   <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-  
  33.  
  34. temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false" />  
  35.   <ClusterListener   
  36.  
  37. className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />  
  38.   <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />  
  39.   </Cluster> 

并设置tomcat发布目录分别为/usr/webapps/www_1、/usr/webapps/www_2即可!

两个Tomcat配置的cluster里面的端口分别为4000、4001 ,必须设置成不同的端口;而且得分别设置两个jvmroute名称,一会在nginx中会用到!

 配置Tomcat session会话复制


  1. 分别在两个tomcat的conf下web.xml文件里面加入如下一行即可  
  2.  
  3. 修改web应用里面WEB-INF目录下的web.xml文件,加入标签 也可以加在应用的web.xml里面如下:    
  4.    
  5. <distributable/>   
  6. 直接加在</web-app>之前就可以了    
  7. 这个是加入tomcat的session复制的,做tomcat集群必须需要这一步,否则用户的session就无法正常使用。 

三、配置完毕后,我们测试一下广播
 


  1. java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal1  
  2. java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal2  
  3.  
  4. 如果不报错则能正常广播  
  5. tomcat-replication.jar 下载:http://cvs.apache.org/~fhanik/tomcat-replication.jar  
  6. 如果是两台机器的话,可以用tcpdump 抓包看看!  
  7.  
  8. Tomcat配置完毕,启动两个tomcat测试即可!

 

本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/546029


网友评论

登录后评论
0/500
评论
科技小能手
+ 关注