没有负载均衡器的Tomcat集群

时间:2017-10-09 09:26:31

标签: java tomcat load-balancing

我已经尝试过设置Tomcat群集,我想知道是否有必要使用负载均衡器。在documentation中,他们告诉您,您只需要添加

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

到配置文件以使群集工作。我已将以下默认配置添加到我的实例(所有这些都在不同的计算机上,相同的网络上):

<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"
                    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.MessageDispatchInterceptor"/>
      </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.ClusterSessionListener"/>
    </Cluster>

经过一些测试后,我得到的结论是群集无法正常工作,但在我查看确切的问题之前,我想知道是否需要负载均衡器来进行群集工作。如果没有,那么我想知道拥有一个的好处。

2 个答案:

答案 0 :(得分:1)

是的,您需要一个负载均衡器。当节点出现故障时,某些东西必须能够将流量引导到活动节点。群集只是确保会话在节点之间传输,这样任何节点都可以处理请求而不会断开会话。

有关(非常基本的)选项和详细信息,请参阅Load Balancing章节。如果您想使用其他负载均衡器,请参阅其文档。

答案 1 :(得分:-2)

使用群集进行负载均衡是一个很好的概念,可以在全球范围内实现更好的高可用性,可伸缩性和部署war文件。 有关详细信息,请参阅以下链接: https://tomcat.apache.org/tomcat-8.0-doc/cluster-howto.html