httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ed Young <...@summitbid.com>
Subject Re: [users@httpd] Apache + 2 tomcat appserver failover configuration
Date Fri, 31 Aug 2012 16:23:27 GMT
Thanks again for the reply. I believe the cluster descriptor in
httpd.conf describes the tomcat cluster, no? See below.

I was able to install httpd-devel by hand and build and install
mod_jk, so I'm ready to take a shot at configuring cluster failover
using mod_jk.

I've added the jk_module descriptor you suggested to my
conf/workers.properties file, but so far no luck getting it to
properly failover:

 worker.list=balance1

# The load balancer worker balance1 will distribute
# load to the members Tomcat6A, Tomcat6B
worker.balance1.type=lb
worker.balance1.balance_workers=Tomcat6A, Tomcat6B

worker.Tomcat6A.type = ajp13
worker.Tomcat6A.host = chimps-lb-01.cable.bogus.com
worker.Tomcat6A.port = 8009
worker.Tomcat6A.redirect=Tomcat6B
#worker.Tomcat6A.lbfactor = 10

worker.Tomcat6B.type = ajp13
worker.Tomcat6B.host = chimps-lb-02.cable.bogus.com
worker.Tomcat6B.port = 8009
worker.Tomcat6B.activation=disabled
#worker.Tomcat6B.lbfactor = 10

#worker.stat1.type = status

 <IfModule jk_module>
    JkWorkersFile   conf/workers.properties
    JkLogFile "|/usr/local/apache2/bin/rotatelogs
/usr/local/apache2/logs/mod_jk.log.%Y%m%d 86400"
    JkLogLevel Debug
    JKShmSize 256
    JkShmFile logs/jk.shm
    JkMount /* balance1
    JkMount /jkmanager/* jkstatus
 </IfModule>

The httpd.conf descriptor is basically this:

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/"
env=BALANCER_ROUTE_CHANGED
<Proxy balancer://cluster>
	BalancerMember ajp://chimps-lb-01.cable.bogus.com:8009 route=Tomcat6A
	BalancerMember ajp://chimps-lb-02.cable.bogus.com:8009 route=Tomcat6B status=+H
#       ProxySet lbmethod=byrequests
#       ProxySet lbmethod=bytraffic
	ProxySet stickysession=ROUTEID nofailover=Off lbmethod=bytraffic

</Proxy>
ProxyPass / balancer://cluster/
ProxyPassReverse / balancer://cluster/

...but so far no luck.

On Fri, Aug 31, 2012 at 10:19 AM, Igor Cicimov <icicimov@gmail.com> wrote:
>
> On Sep 1, 2012 1:38 AM, "Ed Young" <ejy@summitbid.com> wrote:
>>
>> Thanks for the reply.
>>
>> On Fri, Aug 31, 2012 at 12:10 AM, Igor Cicimov <icicimov@gmail.com> wrote:
>> > On Fri, Aug 31, 2012 at 11:13 AM, Ed Young <ejy@summitbid.com> wrote:
>> >>
>> >> I've set up a load balancing configuration based on an Apache server
>> >> and two tomcats Tomcat6A, and Tomcat6B. I'm trying to set it up so
>> >> that Tomcat6B is a failover server, so if Tomcat6A goes down, Tomcat6B
>> >> will handle all subsequent requests.
>> >>
>> >
>> > This is a hot standby scenario. IMHO the best is to use mod_jk instead.
>> >
>> > Example of mod_jk config for your workers.properties file:
>> >
>> > <IfModule jk_module>
>> >    JkWorkersFile   conf/workers.properties
>> >    JkLogFile "|/usr/local/apache2/bin/rotatelogs
>> > /usr/local/apache2/logs/mod_jk.log.%Y%m%d 86400"
>> >    JkLogLevel Debug
>> >    JKShmSize 256
>> >    JkShmFile logs/jk.shm
>> >    JkMount /* balance1
>> >    JkMount /jkmanager/* jkstatus
>> > </IfModule>
>> >
>> > but from your post I'm not sure if you have mod_jk installed and
>> > configured
>> > at all.
>>
>> No, mod_jk not installed and this Linux installation has a number of
>> factors that keep me from building and installing mod_jk
>> No apxs
>> No APR
>> Misconfigured corporate rpm repository which keeps me from installing
>> httpd-devel and thereby pursuing mod_jk. Hopefully this will be
>> corrected soon.
>>
>> My understanding is that mod_proxy replaces mod_jk, but i haven't had
>> any success getting mod_proxy to work in a failover scenario, so I may
>> be stuck for now.
>>
>> >
>> > What you want to achive means that when the balancer worker on Tomcat6A
>> > is
>> > in error state, the balancer will redirect the sessions to Tomcat6B.
>> > This
>> > also means though that that user session should exist on Tomcat6B too
>> > which
>> > on other hand means you need to have some kind of session replication
>> > between tomcat servers. I haven't seen your full tomcat config but hope
>> > you
>> > have cluster set up or the fail over will not work.
>> >
>>
>> I have a cluster set up, but no session replication. My requirement is
>> that if Tomcat6A goes down, we will lose any sessions, but all new
>> sessions will failover to Tomcat6B
>>
>> The <Proxy balancer://cluster> descriptor below defines my cluster settup,
>> no?
>
> No. Im talking about cluster of tomcat servers not your balancer name.
>
>> >>
>> >> I have two questions:
>> >> 1. Does mod_proxy use the workers.properties file? It doesn't seem to
>> >> make any difference what is in workers.properties.
>> >> 2. How can I set this system up for a failover configuration?
>> >>
>> >> This is killing me. I'm using mod_proxy, mod_proxy_balancer, mod_ajp.
>> >>
>> >> In the load balancer howto, it specifies the configuration I want by
>> >> using the workers.properties file, but that file seems to have no
>> >> effect on the system behavior. I wonder if it was written before
>> >> mod_proxy became a replacement for mod_jk.
>> >>
>> >> _http://tomcat.apache.org/connectors-doc/generic_howto/loadbalancers.html
>> >>
>> >> No matter what I do, if I shut down Tomcat6A, there is no failover
>> >> behavior. Existing Tomcat6A request fail (expected) and new requests
>> >> fail with 404. Only the existing Tomcat6B request continue.
>> >>
>> >> Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/"
>> >> env=BALANCER_ROUTE_CHANGED
>> >> <Proxy balancer://cluster>
>> >>         BalancerMember ajp://chimps-lb-01.cable.bogus.com:8009
>> >> route=Tomcat6A
>> >>         BalancerMember ajp://chimps-lb-02.cable.bogus.com:8009
>> >> route=Tomcat6B
>> >>         ProxySet stickysession=ROUTEID
>> >> </Proxy>
>> >>
>> >> ProxyPass / balancer://cluster/
>> >> ProxyPassReverse / balancer://cluster/
>> >>
>> >
>> > For mod_proxy_balancer (if you insist), I would put something like this:
>> >
>> >
>> > <Proxy balancer://cluster>
>> >         BalancerMember ajp://chimps-lb-01.cable.bogus.com:8009
>> > route=Tomcat6A
>> >         BalancerMember ajp://chimps-lb-02.cable.bogus.com:8009
>> > route=Tomcat6B status=+H
>> >         ProxySet stickysession=ROUTEID nofailover=Off lbmethod=bytraffic
>> > </Proxy>
>> >
>> > This puts Tomcat6B worker in hot backup state and the whole traffic is
>> > redirected to Tomcat6A. Per my understanding, the above configuration
>> > means
>> > that when the balancer worker on Tomcat6A is in error state, the
>> > balancer
>> > will redirect the session to Tomcat6B which is marked as hot backup .
>> > The
>> > tomcat session replication remark is valid in this scenario too.
>> >
>>
>> I tried this (thanks) and I'm afraid that it does not work. When
>> Tomcat6A goes down, it does not route new traffic to Tomcat6B
>
> Then look at your logs on both sides and check what is not working.
>
>>
>> I wonder if there is anyone who has successfully configured a cluster
>> failover using mod_proxy?
>>
>> >
>> >> The configuration above alternates between each tomcat as request come
>> >> in, which is not what I want.
>> >>
>> >> I created a workers.properties file in /etc/httpd/conf/, based on the
>> >> loadBalance Howto, but it does not seem to have any effect on the
>> >> system. Does mod_proxy use it?
>> >>
>> >> worker.list=balance1
>> >>
>> >> # The load balancer worker balance1 will distribute
>> >> # load to the members Tomcat6A, Tomcat6B
>> >> worker.balance1.type=lb
>> >> worker.balance1.balance_workers=Tomcat6A, Tomcat6B
>> >>
>> >> worker.Tomcat6A.type = ajp13
>> >> worker.Tomcat6A.host = chimps-lb-01.cable.bogus.com
>> >> worker.Tomcat6A.port = 8009
>> >> worker.Tomcat6A.redirect=Tomcat6B
>> >> #worker.Tomcat6A.lbfactor = 10
>> >>
>> >> worker.Tomcat6B.type = ajp13
>> >> worker.Tomcat6B.host = chimps-lb-02.cable.bogus.com
>> >> worker.Tomcat6B.port = 8009
>> >> worker.Tomcat6B.activation=disabled
>> >>
>> >> Each tomcat server.xml has
>> >>  <Engine name="Standalone" defaultHost="localhost" jvmRoute="Tomcat6A">
>> >> or
>> >>  <Engine name="Standalone" defaultHost="localhost" jvmRoute="Tomcat6B">
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>> >> For additional commands, e-mail: users-help@httpd.apache.org
>> >>
>> >
>> >
>> >
>> >
>> >
>>
>>
>>
>> --
>> - Ed
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>> For additional commands, e-mail: users-help@httpd.apache.org
>>



-- 
- Ed

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message