【发布时间】:2016-08-12 11:51:23
【问题描述】:
我正在同一台服务器上设置两个 Tomcat 实例,前面有一个 Apache mod_jk 负载平衡器。我一直在使用指南和 Apache Tomcat 文档并坚持建议的基本设置。当我尝试启动任何 Tomcat 实例时,我在尝试启动 SimpleTcpCluster 时收到 BindException。错误消息是“无法分配请求的地址”。
我搜索了这个问题的解决方案并遇到了两个建议,第一个是确保将 Java 配置为首选 IPv4 地址。试过了 - 没有变化。第二个建议替换集群配置中接收器组件的地址参数上的自动值(参见下面的配置)。
<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 是一个坏值吗?我应该使用 auto 但在其他地方进行更改吗?有没有人在这方面有更多经验可以帮助我?
【问题讨论】: