Hi Felix,
That's strange, it doesn't try to connect to the c1t2 worker, here is the log file. [Wed Apr 27 11:45:33 2011] [4129:47406689800960] [info] jk_open_socket::jk_connect.c (626): connect to 127.0.0.1:9001 failed (errno=111) [Wed Apr 27 11:45:33 2011] [4129:47406689800960] [info] ajp_connect_to_endpoint::jk_ajp_common.c (959): Failed opening socket to ( 127.0.0.1:9001) (errno=111) [Wed Apr 27 11:45:33 2011] [4129:47406689800960] [error] ajp_send_request::jk_ajp_common.c (1578): (c1t1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) [Wed Apr 27 11:45:33 2011] [4129:47406689800960] [info] ajp_service::jk_ajp_common.c (2543): (c1t1) sending request to tomcat failed (recoverable), because of error during request sending (attempt=1) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] jk_open_socket::jk_connect.c (626): connect to 127.0.0.1:9001 failed (errno=111) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] ajp_connect_to_endpoint::jk_ajp_common.c (959): Failed opening socket to ( 127.0.0.1:9001) (errno=111) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [error] ajp_send_request::jk_ajp_common.c (1578): (c1t1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] ajp_service::jk_ajp_common.c (2543): (c1t1) sending request to tomcat failed (recoverable), because of error during request sending (attempt=2) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [error] ajp_service::jk_ajp_common.c (2562): (c1t1) connecting to tomcat failed. [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] service::jk_lb_worker.c (1388): service failed, worker c1t1 is in error state [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] service::jk_lb_worker.c (1440): Forcing recovery once for 1 workers [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] jk_open_socket::jk_connect.c (626): connect to 127.0.0.1:9001 failed (errno=111) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] ajp_connect_to_endpoint::jk_ajp_common.c (959): Failed opening socket to ( 127.0.0.1:9001) (errno=111) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [error] ajp_send_request::jk_ajp_common.c (1578): (c1t1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] ajp_service::jk_ajp_common.c (2543): (c1t1) sending request to tomcat failed (recoverable), because of error during request sending (attempt=1) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] jk_open_socket::jk_connect.c (626): connect to 127.0.0.1:9001 failed (errno=111) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] ajp_connect_to_endpoint::jk_ajp_common.c (959): Failed opening socket to ( 127.0.0.1:9001) (errno=111) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [error] ajp_send_request::jk_ajp_common.c (1578): (c1t1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] ajp_service::jk_ajp_common.c (2543): (c1t1) sending request to tomcat failed (recoverable), because of error during request sending (attempt=2) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [error] ajp_service::jk_ajp_common.c (2562): (c1t1) connecting to tomcat failed. [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] service::jk_lb_worker.c (1388): service failed, worker c1t1 is in error state [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] service::jk_lb_worker.c (1457): All tomcat instances failed, no more workers left (attempt=0, retry=1) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] service::jk_lb_worker.c (1457): All tomcat instances failed, no more workers left (attempt=1, retry=1) [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] service::jk_lb_worker.c (1468): All tomcat instances are busy or in error state [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [error] service::jk_lb_worker.c (1473): All tomcat instances failed, no more workers left [Wed Apr 27 11:45:34 2011] [4129:47406689800960] [info] jk_handler::mod_jk.c (2627): Service error=0 for worker=cluster1 I implement a workaround by dealing with lbfactor : worker.c1t1.lbfactor=100 worker.c1t1.redirect=cluster1 worker.c1t2.lbfactor=1 worker.c1t2.redirect=cluster1 #worker.c1t2.activation=disabled It is very unlikely that i get 100 request on one server. This does looks good but a pretty complex configuration if we move up to three server. And complexity will increase with the number of server. Seems that load balancing is easier than failover. gui On Wed, Apr 27, 2011 at 9:21 AM, Felix Schumacher < felix.schumac...@internetallee.de> wrote: > On Wed, 27 Apr 2011 09:58:45 +0200, Felix Schumacher 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 >> >> ... > > worker.c2t2.type=ajp13 >> worker.c2t2.host=localhost >> worker.c2t2.port=9002 >> worker.c2t2.redirect=c1t1 >> > Aargh, this should be > worker.c2t2.redirect=c2t1 > > Bye > Felix > > >> 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 >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >