Tomcat 7.0集群FarmWarDeployer无法正常工作

我目前正在研究一个Tomcat集群来进行问答,但不幸的是,在这个集群上自动部署一场战争似乎根本不起作用。

我知道群集正常工作,因为每个服务器都正确接收多播通信,并立即知道任何丢失的主机。

这里的问题来自FarmWarDeployer函数似乎不工作。

事实上,当我上传一场战争时,使用tomcatpipe理器或简单的SFTPd推送,在我的群集的节点1上,战争被解包并被node1使用,但是它并没有被发送到我的节点2。说:

警告:pipe理器[localhost#/ APPTest ## 1.0.0]:没有上下文pipe理器发送时间为9/14/12 5:21 PM在103 ms内收到。

和我的节点2声称:

警告:上下文pipe理器不存在:localhost#/ APPTest ## 1.0.0

好吧,我的APPTest正确设置了标签,并且如果我手动在node2上推送应用程序,则群集正确接收会话。

所以,关于我,这个问题来自我的FarmWarDeployer设置,它们是:

103 <Engine name="Catalina" defaultHost="localhost"> 104 105 106 107 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 108 channelSendOptions="8"> 109 110 <Manager className="org.apache.catalina.ha.session.DeltaManager" 111 expireSessionsOnShutdown="false" 112 notifyListenersOnReplication="true"/> 113 114 <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 115 <Membership className="org.apache.catalina.tribes.membership.McastService" 116 address="224.0.0.1" 117 port="45564" 118 frequency="500" 119 dropTime="3000"/> 120 <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 121 address="auto" 122 port="4000" 123 autoBind="100" 124 selectorTimeout="5000" 125 maxThreads="6"/> 126 127 <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 128 <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> 129 </Sender> 130 <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 131 <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> 132 </Channel> 133 134 <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 135 filter=""/> 136 <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> 137 138 <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 139 tempDir="/opt/tomcat/temp/" 140 deployDir="/opt/tomcat/webapps/" 141 watchDir="/opt/tomcat/webapps/" 142 watchEnabled="enable"/> 143 144 <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> 145 <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 146 </Cluster> 147 148 <Realm className="org.apache.catalina.realm.LockOutRealm"> 149 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 150 resourceName="UserDatabase"/> 151 </Realm> 152 153 <Host name="localhost" appBase="webapps" 154 unpackWARs="true" autoDeploy="true"> 155 </Host> 156 </Engine> 

关于我,testing集群没有什么太奇怪的,但我确实不是一个tomcat专家。

所以,如果有什么错或失踪,让我知道;-)

FarmWarDeployer只能在主机级群集上configuration。 群集设置移动到<Host>...</Host> 。 它为我工作。

https://tomcat.apache.org/tomcat-7.0-doc/config/cluster-deployer.html

您的watchDir和deployDir不应该是相同的位置。 当tomcat看到一个改变时,它会尝试下载这个,并且会有一个不完整的stream,因为没有什么是瞬间的。 这将导致你在战争部署中看到的错误。 如果您试图直接向部署目录scp war,则可以复制相同的scheme。 您首先需要在服务器上进行部署。

尝试为watchDir参数添加另一个目录,然后尝试部署到该目录,所有节点都应该select该目录。