Thanks for your answer Felix,
On Tue, Apr 26, 2011 at 8:36 PM, Felix Schumacher < felix.schumac...@internetallee.de> wrote: > On Mon, 25 Apr 2011 09:40:59 +0100, Guillaume Favier wrote: > >> Hi, >> >> I have 2 tomcat 5.5 server. Each of them handling a set (50+) of third >> party >> webapps name /ABC* and /DEF*. >> Each of these webapp is quite memory consumming when started (more than >> 300M). >> I would like all connection to ABC* webapps be handled by tomcat server 1, >> and connection to webapps DEF* to be handled by tomcat server 2. >> >> My objectives are : >> * server 1 to be failover of server2 and server2 failover of server1. >> * any webapp should be instanciate on only one server otherwise it might >> trigger a memory overload >> >> So I set up my httpd.conf as is : >> >> JkWorkersFile "conf/worker.properties" >> JkOptions +ForwardKeySize +ForwardURICompat >> >> >> and my worker.properties as is : >> >> worker.list = failover >> >> # ------------------------ >> # template >> # ------------------------ >> worker.template.type=ajp13 >> worker.template.lbfactor=1 >> worker.template.connection_pool_timeout=600 >> worker.template.socket_timeout=1000 >> worker.template.fail_on_status=500 >> >> # ------------------------ >> # tomcat1 >> # ------------------------ >> worker.tomcat1.reference=worker.template >> worker.tomcat1.port=9001 >> worker.tomcat1.host=localhost >> worker.tomcat1.mount=/ABC* /ABC/* >> worker.tomcat1.redirect=failover >> >> # ------------------------ >> # tomcat2 >> # ------------------------ >> worker.tomcat2.reference=worker.template >> worker.tomcat2.port=9002 >> worker.tomcat2.host=localhost >> worker.tomcat1.mount=/DEF* /DEF/* >> > ^ is this correct or a typo? Sorry for the typo, you're right : it is in fact : worker.tomcat2.mount=/DEF* /DEF/* > worker.tomcat2.redirect=failover >> >> >> # ------------------------ >> # failover >> # ------------------------ >> worker.failover.type=lb >> worker.failover.balance_workers=tomcat1,tomcat2 >> >> The jvmroute is set in both server.xml. >> >> Previously I had put the jkMount directive in httpd.conf, but I could'nt >> make the failover work. So I move it in the worker.properties. >> Tomcat doesn't seem to take into account the jkmount directive from the >> worker.properties : a webapp is started indifrently on any server. >> > Tomcat starts all webapps it can find, not only those you specified by a jk > mount. Servlets will > only start, if you specify a startup order, or trigger a request to a > servlet. > > Ok, maybe I should clarify that : 1) tomcat starts all webapps 2) when a users connect to a specific webapp all objects are instanciate and therefore the memory footprint drasticaly increase. I want to work on the second point : a webapp should be instanciate only on one server. > So I don't think it is possible to prevent a webapp from starting in the > "failover" tomcat. But it > should be possible to limit its memory footprint. > I have done some optimisation here and already removed all shared classes, jar, etc... > That said, I find it strange, that you define a special failover worker > instead of a direct redirect like > > worker.tomcat1.redirect=tomcat2 > worker.tomcat2.redirect=tomcat1 > > But that would mean (solution already tested) : I have to declare it in the worker list, so when a server fail httpd will continue to try to contact it instead of contacting the failover worker and find a another worker -> even if it works it would only work for 2 servers not for 3. thanks gui