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.j...@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-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to