tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Schumacher <felix.schumac...@internetallee.de>
Subject Re: pure tomcat failover (no loadbalacing)
Date Wed, 27 Apr 2011 07:58:45 GMT
 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.schumacher@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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message