Thanks Felix, that might do the trick. I'll test it and get back to you. nice hack BTW. gui
On Wed, Apr 27, 2011 at 8:58 AM, Felix Schumacher < felix.schumac...@internetallee.de> wrote: > On Tue, 26 Apr 2011 21:24:16 +0100, Guillaume Favier wrote: > >> Thanks for your answer Felix, >> > Well, after rethinking my original answer, I think you will have to define > two clusters: > > worker.list=cluster1,cluster2 > > where each cluster worker has two distinct members > > worker.cluster1.type=lb > worker.cluster1.balance_workers=c1t1,c1t2 > > worker.cluster2.type=lb > worker.cluster2.balance_workers=c2t1,c2t2 > > and four worker for your two tomcats > > # workers for cluster1 > worker.c1t1.route=tomcat1 > worker.c1t1.type=ajp13 > worker.c1t1.host=localhost > worker.c1t1.port=9001 > worker.c1t1.redirect=c1t2 > > worker.c1t2.route=tomcat2 > worker.c1t2.type=ajp13 > worker.c1t2.host=localhost > worker.c1t2.port=9002 > worker.c1t2.activation=disabled > > # workers for cluster2 > worker.c2t1.route=tomcat1 > worker.c2t1.type=ajp13 > worker.c2t1.host=localhost > worker.c2t1.port=9001 > worker.c2t1.activation=disabled > > worker.c2t2.route=tomcat2 > worker.c2t2.type=ajp13 > worker.c2t2.host=localhost > worker.c2t2.port=9002 > worker.c2t2.redirect=c1t1 > > You will have to set "jvmRoute" in your tomcats to "tomcat1" and "tomcat2". > > To mount your webapps, you can use > > JkMount /ABC* cluster1 > JkMount /DEF* cluster2 > > Regards > > 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 >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >