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

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


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

Reply via email to