Interesting I had no idea you can mix mod_proxy and mod_jk, thought you
should use the one or the other. What I do I have workers.properties file in
the Apache conf directory with load-balancer worker that takes care of the
load balancing ans sticky sessions.

On Wed, Mar 23, 2011 at 8:54 AM, János Löbb <janos.l...@yale.edu> wrote:

> Hi,
>
> I have two machines  bml0065.yalepath.org and bml0066.yalepath.org.  Both
> have OSX 10.6.6, apache 2.2.17 and mod_jk 1.2.31 installed.  Tomcat is
> 7.0.10 on both.
>
> Apache was compiled on both machines with proxy, proxy-balancer, proxy-http
> and proxy-ajp enabled.
>
> The bml0065 machine is configured as a reverse proxy.
>
> The theory is, that users hit the bml0065 machine like
>
> http://bml0065.yalepath.org/tc/examples/servlets/servlet/SessionExample
>
> and using mod-proxy and mod-proxy-http it will select either bml0065 or
> bml0066 depending on the lbmethod configured.  Then let say it selects
> bml0065.  Then it comes to this machine as:
>
> http://bml0065.yalepath.org/examples/servlets/servlet/SessionExample
>
> From here, because there is a JkMount for examples in its httpd.conf, it
> connects via mod_jk to the Tomcat instance on this machine, in this case
> tomcat3.
>
> The problem is that as soon the reverse proxy is involved new sessions are
> created all the time, so session failover  do not work.  If I take the
> reverse proxy out from the picture, everything works.
>
> Here is the reverse proxy config from httpd.conf of the bml0065 machine
>
> JkLogLevel info
> JkMount /examples/* lb
> JkMount /examples/servlets/servlet/* lb
> JkMount /jkmanager/* jkstatus
> JkWorkersFile "/usr/local/apache2/conf/workers.properties"
> JkLogFile "/usr/local/apache2/logs/mod_jk.log
>
> ProxyRequests Off
> <Proxy balancer://pathCluster>
>        BalancerMember http://bml0065.yalepath.org loadfactor=10
> route=tomcat3
>        BalancerMember http://bml0066.yalepath.org loadfactor=10
> route=tomcat1
>        ProxySet lbmethod=bytraffic
> </Proxy>
> ProxyPass       /tc/ balancer://pathCluster/
> stickysession=JSESSIONID|jsessionid
> ProxyPassReverse        /tc/ balancer://pathCluster/
>
>
> <Location /balancer-manager>
>        SetHandler balancer-manager
>        Order Deny,Allow
>        Allow from .yalepath.org
> </Location>
>
> A very similar setup worked in 2009 with Tomcat 6.0.18 and httpd 2.2.11.
>
> Here are the snippets from both machine catalina.out file
>
> <snip bml0065>
> Mar 22, 2011 5:06:11 PM org.apache.catalina.core.ApplicationContext log
> INFO: SessionListener:
> sessionCreated('0409F29D221545DB0BB5F62205B24471.tomcat3')
> Mar 22, 2011 5:06:11 PM org.apache.catalina.core.ApplicationContext log
> INFO: SessionListener:
> attributeAdded('0409F29D221545DB0BB5F62205B24471.tomcat3', 's1', 't3')
> Mar 22, 2011 5:07:06 PM org.apache.catalina.core.ApplicationContext log
> INFO: SessionListener:
> sessionCreated('DE7A014A0F1659F0B777E0DF4A2355D4.tomcat3')
> Mar 22, 2011 5:07:06 PM org.apache.catalina.core.ApplicationContext log
> INFO: SessionListener:
> attributeAdded('DE7A014A0F1659F0B777E0DF4A2355D4.tomcat3', 's2', 't3')
> </snip>
>
> <snip bml0066>
> Mar 22, 2011 5:06:11 PM org.apache.catalina.core.ApplicationContext log
> INFO: SessionListener:
> sessionCreated('0409F29D221545DB0BB5F62205B24471.tomcat3')
> Mar 22, 2011 5:06:11 PM org.apache.catalina.core.ApplicationContext log
> INFO: SessionListener:
> attributeAdded('0409F29D221545DB0BB5F62205B24471.tomcat3', 's1', 't3')
> Mar 22, 2011 5:07:06 PM org.apache.catalina.core.ApplicationContext log
> INFO: SessionListener:
> sessionCreated('DE7A014A0F1659F0B777E0DF4A2355D4.tomcat3')
> Mar 22, 2011 5:07:06 PM org.apache.catalina.core.ApplicationContext log
> INFO: SessionListener:
> attributeAdded('DE7A014A0F1659F0B777E0DF4A2355D4.tomcat3', 's2', 't3')
> </snip>
>
>
> Here is the last access session from the access_log:
> <snip bml0065>
> 10.84.2.65 - - [22/Mar/2011:17:06:11 -0400] "POST
> /examples/servlets/servlet/SessionExample HTTP/1.1" 200 1114
> 10.84.2.41 - - [22/Mar/2011:17:06:11 -0400] "POST
> /tc/examples/servlets/servlet/SessionExample HTTP/1.1" 200 1114
> 10.84.2.65 - - [22/Mar/2011:17:06:11 -0400] "GET
> /examples/servlets/images/code.gif HTTP/1.1" 304 -
> 10.84.2.41 - - [22/Mar/2011:17:06:11 -0400] "GET
> /tc/examples/servlets/images/code.gif HTTP/1.1" 304 -
> 10.84.2.65 - - [22/Mar/2011:17:06:11 -0400] "GET
> /examples/servlets/images/return.gif HTTP/1.1" 304 -
> 10.84.2.41 - - [22/Mar/2011:17:06:11 -0400] "GET
> /tc/examples/servlets/images/return.gif HTTP/1.1" 304 -
> ::1 - - [22/Mar/2011:17:06:18 -0400] "OPTIONS * HTTP/1.0" 200 -
> ::1 - - [22/Mar/2011:17:06:19 -0400] "OPTIONS * HTTP/1.0" 200 -
> 10.84.2.65 - - [22/Mar/2011:17:07:06 -0400] "POST
> /examples/servlets/servlet/SessionExample HTTP/1.1" 200 1114
> 10.84.2.41 - - [22/Mar/2011:17:07:06 -0400] "POST
> /tc/examples/servlets/servlet/SessionExample HTTP/1.1" 200 1114
> </snip>
>
> The 10.84.2.41 is my machine.  In the log above looks like the hit to the
> reverse proxy - with the /tc/ start - inserted later than the converted url
> for the given balance member.
>
> There is nothing interesting in the apache error_log.
>
> What am I doing wrong ?
>
> This is a test cluster.  The application developer wants to test his app's
> failover by pulling the ethernet plug out from the non reverse proxy when
> the session is on that machine.
>
> Thanks ahead,
>
> János
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to