tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Amol Puglia <>
Subject Re: Unable to acheive load balcing using mod_jk
Date Tue, 07 Sep 2010 10:40:35 GMT
Hello Team,

After making changes to worker list as mentioned in the below mail.


We are noticing following messages in the log files and we are getting 500 error messages
while accessing URL.

[Tue Sep 07 12:34:52.904 2010] [15711:27] [info] jk_handler::mod_jk.c (2254): No body with
status=500 for worker=loadbalancer
[Tue Sep 07 12:34:58.630 2010] [15712:27] [info] jk_handler::mod_jk.c (2254): No body with
status=500 for worker=loadbalancer
[Tue Sep 07 12:39:48.018 2010] [15711:27] [info] jk_handler::mod_jk.c (2254): No body with
status=500 for worker=loadbalancer

--- On Tue, 9/7/10, Rainer Jung <> wrote:

From: Rainer Jung <>
Subject: Re: Unable to acheive load balcing using mod_jk
To: "Tomcat Users List" <>
Date: Tuesday, September 7, 2010, 3:02 PM

On 07.09.2010 11:15, Mladen Turk wrote:
> On 09/07/2010 11:02 AM, Amol Puglia wrote:
>> Hello Team,
>> Below are the details of file and httpd.conf file.
>> # lists the workers by name
>> worker.list=tomcat1, tomcat2, tomcat3, loadbalancer
> This should be
> worker.list=loadbalancer
> Note that workers that constitute load balancer must
> not appear in the worker.list

In addition:

if you start a fresh install, use recent versions:

Tomcat 6.0.29
mod_jk 1.2.30
Apache 2.2.16 or 2.0.63

I don't know, what your actual problem is, but if it is session stickyness, then read on.

In order to make sticky session work, you need two ingredients.

1) You need to set the attribute jvmRoute in server.xml of each Tomcat instance to a unique
value, something like your logical instance name. An example for setting jvmRoute is contained
as a comment in the default server.xml file. The file is contained in the conf directory of

2) Configure a worker of type "lb" (load balancer), with one member worker per Tomcat instance.
The member workers of the load balancer worker need to have the same names as the jvmRoute
of the Tomcat to which they connect. In your above configuration those names are "tomcat1",
"tomcat2", ..., so either you choose "tomcat1", "tomcat2", ... as the jvmRoute values, or
you change the names of the workers above to the jvmRoute values you have already chosen.
By default lb workers handle session sticky (unless you turn that off by sticky_session=0,
something you don't want to). Now map your URLs to the lb worker using JkMount.

How does it work?

a) Tomcat automatically appends its own jvmRoute at the end of the session id, separated with
a dot. The session id is send to the client either via the JSESSIONID cookie, or via URL encoding

b) mod_jk knows about that, extracts the value of the JSESSIONID cookie presented by the browser
respectively extracts the id encoded in the URL, looks for the separating dot and extracts
the jvmRoute from the id. The load balancing worker then searches for a member worker with
the same name and uses that one for stickyness.

c) Any request without session id is balanced nonsticky depending on configuration and load.



To unsubscribe, e-mail:
For additional commands, e-mail:

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message