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