首页 > 代码库 > tomcat 设置集群

tomcat 设置集群

本文介绍的是使用tomcat内置的集群功能。跟官方文档的区别是没有使用广播,而是使用了static membership的方式。

需要修改server.xml

放在哪个元素下来的,是Host还是啥记不清了

      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8" channelStartOptions="3">        <Manager className="org.apache.catalina.ha.session.DeltaManager"                 expireSessionsOnShutdown="false"                 notifyListenersOnReplication="true"/>        <Channel className="org.apache.catalina.tribes.group.GroupChannel">          <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"                    address="localhost"                    port="4110"                    autoBind="9"                    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.TcpPingInterceptor"/>          <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>          <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>          <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">                <!--Member className="org.apache.catalina.tribes.membership.StaticMember"                  port="4110"                  host="localhost"                  domain="delta-static"                  uniqueId="{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}"                /-->                <Member className="org.apache.catalina.tribes.membership.StaticMember"                  port="4210"                  host="localhost"                  domain="delta-static"                  uniqueId="{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0}"                />                <Member className="org.apache.catalina.tribes.membership.StaticMember"                  port="4310" securePort="-1"                  host="localhost"                  domain="delta-static"                  uniqueId="{2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1}"                />          </Interceptor>        </Channel>        <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>        <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>        <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>        <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>      </Cluster>

 这个使用直接的

有几个点需要注意 

1. Receiver.address这个属性如果是是暴露在127.0.0.1上,跑在别的机器上的是看不到它的,使用  netstat -lntp 查看一下

2. Cluster.channelStartOptions 必须这样设置才能真正的禁用广播

3. TcpPingInterceptor 这个是用来检查其他节点的状态的。 如果不设置这个,其他的节点挂了看不出来。

4. 每一个member是集群中的一个节点,不要当前节点放进去

5. webapp/youapp/WEB-INF/web.xml里添加<distributable/>标签。

 

tomcat 设置集群