一、实验环境: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.  "org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">  
  4.   "org.apache.catalina.ha.session.DeltaManager"   
  5.  
  6. expireSessionsOnShutdown="false" notifyListenersOnReplication="true" />  
  7. "org.apache.catalina.tribes.group.GroupChannel">  
  8.   "org.apache.catalina.tribes.membership.McastService"   
  9.  
  10. address="224.0.0.4" port="45564" frequency="500" dropTime="3000" />  
  11.   "org.apache.catalina.tribes.transport.nio.NioReceiver"   
  12.  
  13. address="192.168.2.79" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6" />  
  14.     
  15.  "org.apache.catalina.tribes.transport.ReplicationTransmitter">  
  16.   "org.apache.catalina.tribes.transport.nio.PooledParallelSender" />  
  17.     
  18.   "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>  
  19.   
  20.  
  21. className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />  
  22.   
  23. className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor" />  
  24.     
  25.   "org.apache.catalina.ha.tcp.ReplicationValve" filter="" />  
  26.   "org.apache.catalina.ha.session.JvmRouteBinderValve" />  
  27.   "org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-  
  28.  
  29. temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false" />
  30.  
  31.  
  32. className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />  
  33.   "org.apache.catalina.ha.session.ClusterSessionListener" />  
  34.    

Tomat2的修改如下 

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

并设置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测试即可!