I read Bernd's message and in the end I do agree with the imperial need for a notion of local workers, or more exactly for the notion of non local workers, i.e. workers used exclusively for requests pertaining to a session they created.
I wrote a piece of Apache configuration to handle Tomcat node shutdown, I have the following code in my config file: <IfDefine TOMCAT_SHUTDOWN> RewriteEngine On RewriteRule ^@LB_URI@$ [F] </IfDefine> where @LB_URI@ is the URI the hardware load balancer checks to see if the Apache instance is alive and should be used to dispatch requests. To shut down a node, I issue Apache a graceful restart signal with the additional parameter -DTOMCAT_SHUTDOWN, from then on the @LB_URI@ will return a 403 error code and thus the LB will end up excluding the just gracefully restarted Apache instance from its pool. But before the Apache instance is excluded, normal requests dispatched to it will continue to be answered correctly, provided @LB_URI@ is not a URI used by the clients. Once the hardware load balancer excluded the Apache instance, wait until the Tomcat instance has no more active sessions (which will happen provided no client reactivates its session over and over, and provided a mod_jk instance will not dispatch a request not part of a session to a non local worker). When no active sessions exist on the Tomcat instance, shut it down. Deploy the new webapp version then start Tomcat again. You can test the new webapp by connecting to the associated Apache instance directly (instead of the load balancer's virtual IP). When the webapp is considered correct, do a graceful restart of your other Apache instances using the -DTOMCAT_SHUTDOWN option and do a graceful restart of the first Apache instance without the -DTOMCAT_SHUTDOWN option. Your new webapp is now deployed on the first instance and the other instances continue to serve the old version. You can therefore deploy the new version progressively on all Tomcat instances. For this procedure to function properly we see that we do need, as Bernd pointed out, the notion of local and non local workers, i.e. we need to be able to have workers kown by a jk instance but which are used ONLY for requests part of a session they created. I therefore suggest an additional parameter be added for the load balancing workers, namely the last level of local workers, i.e. any worker past this level will be considered non local. The default value for this parameter would be the last level thus considering all workers local. This addition should solve Bernd's problem (and even maybe before Wednesday ;-). Mathias. -- -- Credit Mutuel de Bretagne -- DST / Reseaux et Systemes Distribues -- 32 rue Mirabeau -- Le Relecq-Kerhuon -- 29808 Brest Cedex 9, FRANCE -- Tel +33298004653 - Fax +33298284005 - Mail: [EMAIL PROTECTED] -- Key Fingerprint: 8778 D2FD 3B4A 6B33 10AB F503 63D0 ADAE 9112 03E4 -- Ce message et toutes les pieces jointes (ci-apres le "message") sont confidentiels et etablis a l'intention exclusive de ses destinataires. Toute utilisation ou diffusion non autorisee est interdite. Tout message etant susceptible d'alteration, l'emetteur decline toute responsabilite au titre de ce message s'il a ete altere, deforme ou falsifie. ----------------------------------- This message and any attachments (the "message") are confidential and intended solely for the addressees. Any unauthorised use or dissemination is prohibited. As e-mails are susceptible to alteration, the issuer shall not be liable for the message if altered, changed or falsified. -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>