我已经尝试过设置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>
经过一些测试后,我得到的结论是群集无法正常工作,但在我查看确切的问题之前,我想知道是否需要负载均衡器来进行群集工作。如果没有,那么我想知道拥有一个的好处。
答案 0 :(得分:1)
是的,您需要一个负载均衡器。当节点出现故障时,某些东西必须能够将流量引导到活动节点。群集只是确保会话在节点之间传输,这样任何节点都可以处理请求而不会断开会话。
有关(非常基本的)选项和详细信息,请参阅Load Balancing章节。如果您想使用其他负载均衡器,请参阅其文档。
答案 1 :(得分:-2)
使用群集进行负载均衡是一个很好的概念,可以在全球范围内实现更好的高可用性,可伸缩性和部署war文件。 有关详细信息,请参阅以下链接: https://tomcat.apache.org/tomcat-8.0-doc/cluster-howto.html