Yes I tried and it works fine, but I just want all is automatic.

I mean, a machine crash, we have to change it.
The new machine has :

1. the same IP
2. the same name
3. the same tomcat configuration (but without the war files already
   deployed)

as the previous machine (in order to not restart the load balancer and not interrupt the service).

The best for me is that all the war in the watchdir of the master node (the one with watchEnabled="true" ) are deployed in this new machine because the contexts don't yet exist on this node.
It's only for machine replacement purpose.

For a "real" new node, we are force to reboot the cluster after declaring the new node in the balancer.

Thanks for helping

Le 27/12/2011 12:09, Pid * a écrit :
On 26 Dec 2011, at 14:33, "Cédric SAMSON"<cedric.sam...@adeuxi.com>  wrote:

Hi all,


Context :
  I have a cluster with 2 nodes (both on linux).

  * The master node is configured as below : *

<Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat-1">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
resourceName="UserDatabase"/>

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
channelSendOptions="8">

<Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyContainerListenersOnReplication="true"
                   notifySessionListenersOnReplication="true"
                   notifyListenersOnReplication="true"/>

<Channel className="org.apache.catalina.tribes.group.GroupChannel">

<Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.3"
                        port="45566"
                        frequency="500"
                        dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.30.51"
                      port="3100"
                      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.MessageDispatch15Interceptor"/>
<Interceptor 
className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="" 
statistics="true"/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/usr/local/tomcat/webapps/tempdir"
                    deployDir="/usr/local/tomcat/webapps/"
                    watchDir="/usr/local/tomcat/watchdir/"
                    watchEnabled="true"/>

<ClusterListener 
className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener 
className="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

</Host>
</Engine>

  * The slave node is configured as below : *
The term 'slave' is an odd one to use here.


<Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat-1">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
resourceName="UserDatabase"/>

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
channelSendOptions="8">

<Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyContainerListenersOnReplication="true"
                   notifySessionListenersOnReplication="true"
                   notifyListenersOnReplication="true"/>

<Channel className="org.apache.catalina.tribes.group.GroupChannel">

<Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.3"
                        port="45566"
                        frequency="500"
                        dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.30.54"
                      port="3100"
                      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.MessageDispatch15Interceptor"/>
<Interceptor 
className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="" 
statistics="true"/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/usr/local/tomcat/webapps/tempdir"
                    deployDir="/usr/local/tomcat/webapps/"
                    watchDir="/usr/local/tomcat/watchdir/"
                    watchEnabled="false"/>

<ClusterListener 
className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener 
className="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

</Host>
</Engine>

All works fine.

I try to add a new war file in the master node folder 
"/usr/local/tomcat/watchdir/", after few seconds, the war is correctly deployed 
on both nodes.
Now i try to add a third node configured exactily as the slave (i just change 
the IP address of receiver to match with the one of the machine). In the master 
node log, i can see a new member is added, with the correct IP, but the war 
already deployed on the cluster aren't deployed on the new node.

* Question : *
    What's the way to be able to auto deploy on new node without restart the 
master node ? (when i restart the master node, all the nodes of the cluster are 
OK).
Did you try to deploy the app again after the new node has joined?


p


Best regards


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org




Reply via email to