Tomcat 7.0 Clustering FarmWarDeployer Não está funcionando

1

Atualmente, estou trabalhando em um cluster do Tomcat para Q & A, mas, infelizmente, parece que a implantação automática de uma guerra nesse cluster não está funcionando.

Eu sei que o cluster está funcionando perfeitamente porque cada servidor está recebendo corretamente as comunicações multicast e está ciente de qualquer host ausente instantaneamente.

O problema aqui vem da função FarmWarDeployer, que parece não funcionar.

Na verdade, quando eu carrego uma guerra, usando o gerenciador tomcat ou um simples push SFTPd, no node1 do meu cluster, a guerra é descompactada e usada pelo node1, mas não é enviada para o nó 2. Em vez disso, meu node1 está dizendo:

WARNING: Manager [localhost#/APPTest##1.0.0]: No context manager send at 9/14/12 5:21 PM received in 103 ms.

e meu node2 está reivindicando:

WARNING: Context manager doesn't exist:localhost#/APPTest##1.0.0

bem, meu APPTest está configurado corretamente com a tag e o cluster está recebendo corretamente a sessão se eu enviar manualmente o aplicativo no node2.

Então, sobre mim, o problema está vindo das minhas configurações do FarmWarDeployer, que são:

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>

Sobre mim não há nada muito estranho para um cluster de teste, mas eu definitivamente não sou um especialista em tomcat.

Então, se algo está errado ou faltando, me avise; -)

    
por Dr I 17.09.2012 / 14:23

2 respostas

1

O FarmWarDeployer pode ser configurado apenas no cluster de nível de host. As configurações de cluster são movidas para o <Host>...</Host> . Funciona para mim.

link

    
por 31.03.2015 / 06:43
1

Seu watchDir e deployDir não devem ter o mesmo local. Quando o tomcat vê uma mudança, ele tentará fazer o download e terá um fluxo incompleto, já que nada é instantâneo. Isso causará os erros que você está vendo na implantação de guerra. O mesmo cenário pode ser replicado se você tentar scp war diretamente no diretório deploy. Você primeiro precisa encenar no servidor e implantar.

Tente adicionar outro diretório para o parâmetro watchDir e tente implantá-lo nesse diretório e todos os nós devem buscá-lo.

    
por 19.07.2013 / 21:29