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
>
>

Reply via email to