tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rainer Jung <rainer.j...@kippdata.de>
Subject Re: Sticky Session Not Working With Apache 2.0.54 and Tomcat 7.0.8
Date Mon, 15 Aug 2011 16:52:07 GMT
On 15.08.2011 17:09, Lataxes, Karl wrote:
> Yes, the space before "servlet" is a copy/paste error.
> 
> I made the LogFormat additions to httpd.conf, set the mod_jk logging level to "debug"
and ran some additional tests.
> 
> The session id did appear in the access_log I generated:
> 
> 2000-1-200-ap-1313413815567

So the session ID is wrong, it does not contain the trailing ".tomcat7A"
to allow sticky routing.

Whatever generates the session id doesn't generate a correct one which
supports stickyness. The session id doesn't look like a normal Tomcat
session id, so it seems something else is setting the JSESSIONID cookie,
like a custom sesion manager. You need to find that piece of code and
fix it (to append the jvmRoute to the id).

Regards,

Rainer

> In the mod_jk.log, I also noted several references to the session id, which are included
below.  Please note that the original client request went to worker tomcat7A, but subsequent
requests were routed to tomcat7C
> 
> [Mon Aug 15 09:10:15.614 2011] [3275:1] [debug] ajp_unmarshal_response::jk_ajp_common.c
(723): Header[0] [Set-Cookie] = [JSESSIONID=2000-1-200-ap-1313413815567]
> [Mon Aug 15 09:10:18.495 2011] [3275:1] [debug] service::jk_lb_worker.c (1118): service
sticky_session=1 id='2000-1-200-ap-1313413815567'
> [Mon Aug 15 09:10:18.495 2011] [3275:1] [debug] get_most_suitable_worker::jk_lb_worker.c
(946): searching worker for partial sessionid 2000-1-200-ap-1313413815567
> [Mon Aug 15 09:10:18.495 2011] [3275:1] [debug] get_most_suitable_worker::jk_lb_worker.c
(1001): found best worker tomcat7C (tomcat7C) using method 'Request'
> 
> You can see from the log snippets that ".<worker_name>" is not being appended to
the session as expected.
> 
> -----Original Message-----
> From: Rainer Jung [mailto:rainer.jung@kippdata.de] 
> Sent: Saturday, August 13, 2011 8:11 AM
> To: users@tomcat.apache.org
> Subject: Re: Sticky Session Not Working With Apache 2.0.54 and Tomcat 7.0.8
> 
> On 12.08.2011 15:30, Lataxes, Karl wrote:
>> The jvmRoute's for both server.xmls are properly set to the worker names and are
not commented out.  This was the first thing I verified.
>>
>>     <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat7A">
>>     <Engine name="Catalina" defaultHost="localhost" 
>> jvmRoute="tomcat7C">
>>
>> Here are the settings in workers.properties (worker tomcat7A identical to tomcat7C
except for port, since both are running on the same server for testing.  In production, we
will probably install them on separate boxes):
>>
>> worker.list=loadbalancer,jkstatus
>> worker.tomcat7C.type=ajp13
>> worker.tomcat7C.host=<host_name>
>> worker.tomcat7C.port=4931
>> worker.tomcat7C.lbfactor=1
>> worker.loadbalancer.type=lb
>> worker.loadbalancer.balance_workers=tomcat7A,tomcat7C
>> worker.loadbalancer.sticky_session=1
>> worker.jkstatus.type=status
> 
> OK
> 
>> Here are the JkMount settings in mod_jk.conf:
>>
>> JkMount /jkmanager/* jkstatus
>> JkMount / servlet/* loadbalancer
> 
> I hope the space before "servlet" is a copy and paste error and not in the original config
...
> 
>> Load balancing is working, but subsequent requests from a single client are being
routed to the other Tomcat instance despite sticky_session being set to 1.
> 
> OK, then maybe your cookie header is not OK. To debug:
> 
> - Add %{Cookie}i to the LogFormat you are using in Apache. It will log all cookies. Check
the values.
> 
> - Add %{JSESSIONID}C to the same LogFormat. It will log the value of the JSESSIONID cookie
found by the web server. Check the values.
> 
> - Optional: Add %{Set-Cookie}o to the same LogFormat. It will log the setting of the
cookie (sending a cookie from the server to the client).
> Probably of no use for you, since you seem to parse that info in some other way.
> 
> - Increase log level of mod_jk to debug or even trace (not in
> production) and look at the log lines written when your client sends a request, which
isn't handled sticky.
> 
> Regards,
> 
> Rainer

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


Mime
View raw message