我正在同一台服务器上设置两个Tomcat实例,前面有一个Apache mod_jk负载均衡器。我一直在使用指南和Apache Tomcat文档,并坚持建议的基本设置。当我尝试启动任何Tomcat实例时,我从尝试启动SimpleTcpCluster时获得BindException。错误消息是“无法分配请求的地址”。
我搜索了这个问题的解决方案并遇到了两个建议,第一个是确保将Java配置为更喜欢IPv4地址。尝试过 - 没有变化。第二个建议替换群集配置中Receiver组件上的address参数的auto值(参见下面的配置)。
<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"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="localhost" port="4000" autoBind="100"
selectorTimeout="5000" maxThreads="6"/>
<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"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
我尝试将“auto”更改为“localhost”,这导致Tomcat启动时出现不同的错误消息,说“地址已在使用:8009”。
此时我真的不知道该往哪里看。 localhost值不好吗?我应该使用自动,但在其他地方进行更改?是否有人在这方面有更多经验可以帮助我?
答案 0 :(得分:0)
我们通过更改群集配置中的Receiver标记中的地址参数来解决此问题。&#34; auto&#34;到服务器的实际IP地址。我无法弄清楚为什么这不起作用,并且在接到电话后我们不想花更多的时间。
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="123.123.x.x" port="4000" autoBind="100"
selectorTimeout="5000" maxThreads="6"/>