Tomcat集群配置详解

集群系统具有以下优点:

高可靠性(HA):利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。  
高性能计算(HP):即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。  

 

配置实现:
1
,如果是本机测试,多个tomcat怎么启动此处暂不赘述

 

1,分别修改多个tomcat的server.xml,去掉注释,增加以下配置(有些tomcat版本已经存在,只需要把注释去除即可):

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
            channelSendOptions="8">
 
        <Manager className="org.apache.catalina.ha.session.DeltaManager"
        expireSessionsOnShutdown="false"
        notifyListenersOnReplication="true"/>
 
        <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        bind="127.0.0.1"  
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>    
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="auto"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>
            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
        </Channel>
 
        <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
        <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
 
        <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/> 
        <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
        <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster> 


 

此处需要注意的是:

1, Receiver port属性不能重复,在集群tomcat中保持唯一性,多个tomcat可分别使用prot = 4000”,prot = 4001”,prot = 4002”等(不是必须)

2, Tomcat的版本和jdk必须一致,要不然会出现skipping state transfer.No members active incluster group.的问题,即找不到集群

tomcat尽量不要选择tomcat7和JDK7。bea的JDK尚未测试,情况未知)。

 

 

3,  Deployer配置可去除,否则会提示严重: FarmWarDeployer can only work as hostcluster subelement! 但不会现象正常使用

4, 如果一个web项目的web.xml文件中指定了<distributable/>元素那么Tomcat服务器启动这个Web应用时,会为它创建由<Cluster>元素指定的会话管理器,这里我们用的是DeltaManager,他们把会话从一个Tomcat服务器复制到集群中另一个Tomcat服务器。
<web-app>

<distributable/>
</web-app>

5,  

6,  如果项目要发布到集群上,那么与会话有关的类需要实现java.io.Serializable序列化接口

7, 集群中Tomcat间用组播方式进行通信,如果机器上有多个网卡则可能导致组播失败,解决的办法是<Cluster>元素的<Membership>元素配置bind属性,它用于明确知道组播地址:

8, <Membership className="org.apache.catalina.tribes.membership.McastService" bind="127.0.0.1".../>

9,  如果集群较小,Manager可以采用DeltaManager会话管理器,如果多的话建议使用BackupManager

10,如果是tomcat5的集群处理类的路径名可能不一样tomcat6以上org.apache.catalina.ha

 

 

Apache+tomcat:注意事项:

 

1Apache使用了loadbalancer后,要求worker的名字与Tomcatservice.xml中的Engine元素的jvmRoute属性一致

2, worker.loadbalancer.sticky_seesion如果设为(true or false)则说明会话具有粘性,也就是如果一个用户在一个Tomcat中建立了会话后则此后这个用户的所有操做都由这个Tomcat服务器承担(除非该tomcat挂掉)。集群系统不会进行会话复制。如果设为false则下面的 sticky_session_force无意义。

3,sticky_session_force:假设sticky_session设为true,用户会话具有了粘性,当当前Tomcat服务器停止服务后,如果sticky_session_forcetrue也就是强制会话与当前Tomcat关联,那么会报500错误,如果设为false则会转到另外的Tomcat服务器。


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值