Hi Rainer,

Well, I did make some "bloody operation" by eliminating the VmWare machine as the reverse proxy on my Mac. /Following Chris advise. :)/

Because apache2 on my Mac was not compiled with --enable-proxy, etc, I downloaded the version 2.2.11 and compiled it with the three proxy enablers /--enable-proxy, --enable-proxy-balancer, and --enable-proxy- http/. I copied the reverse proxy config part and the JkMount directives from the VmWare virtual machine into the httpd.conf file on the Mac.

Now I have two machines:

- A PC with Windows 2000 and a Mac with OSX 10.5.6. The PC has apache2 + mod_jk + tomcat (1 instance). - A Mac that has apache2 + mod_jk + tomcat (3 instances). The Mac also acts as a reverse proxy.

Fired up the newly compiled apache2 on the Mac and now everything works like charm. It is failing over nicely when I stop the selected tomcat node. I still have to test the fail over when I stop apache on the PC in the middle of a session.

I changed two things:
1. moved the reverse proxy configuration off from the Windows Xp inside the VmWare Fussion machine on the Mac, so the Mac itself became the reverse proxy. Nothing was done to the tomcats or to the apache2 on the PC, not even stopping them.

2. On the Mac I installed a newer version of apache2. /2.2.11 compared to 2.2.9/

My guess is the VmWare update and the WinXp update on the virtual machine from December changed somehow the security settings that did not allow the information to flow back to the reverse proxy. Of course, I am not sure about it. :) Theoretically it should have worked without any problems. If I have time I will install a 2.2.11 apache2 on the XP and move back to it the reverse proxy configuration from the Mac, to see if that helps or not.

Thanks ahead,

János



On Mar 25, 2009, at 6:49 PM, Rainer Jung wrote:

On 20.03.2009 18:48, János Löbb wrote:
Hi,

I have two real machines. One of them is a Windows XP running Apache
2.2.10 + mod_jk /release date of 10/30/2008/ + Tomcat 6.0.16. The other
one is a Mac with OSX 10.5.6 with Apache 2.2.9 + mod_jk 1.2.26 and
Tomcat 6.0.16.

The XP machine runs one instance of Tomcat /node4/. The Mac runs 3, -
node1,2,3. Altogether 4 tomcats and they form a cluster.

...

In front of these two machines is an Apache 2.2.10 in a VMWare Fusion
virtual Machine on Windows XP in the Mac and configured as a Reverse proxy

Here is the reverse proxy config from the httpd.conf

<snip>
ProxyRequests Off
<Proxy balancer://pathCluster>
BalancerMember http://bml0039.yalepath.org loadfactor=10
BalancerMember http://bml0073.yalepath.org loadfactor=10
ProxySet lbmethod=bytraffic
</Proxy>
ProxyPass /tc/ balancer://pathCluster/
ProxyPassReverse /tc/ balancer://pathCluster/


<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Allow from .yalepath.org
</Location>
</snip>

Here is the access_log from the reverse proxy:

<snip>
10.84.2.195 - - [20/Mar/2009:12:09:48 -0400] "GET /tc/CassetteLabeler
HTTP/1.1" 302 -

Returns with a trailing slash redirect

10.84.2.195 - - [20/Mar/2009:12:09:49 -0400] "GET /tc/ CassetteLabeler/
HTTP/1.1" 200 1506

Returns Content with 1506 Bytes

10.84.2.195 - - [20/Mar/2009:12:09:49 -0400] "GET
/CassetteLabeler/pathology.labeler.labeler.Labeler/Labeler.html
HTTP/1.1" 404 260

Wrong request, Prefix /tc/ missing. You need to find out, where this request comes from. Likely it is either generated by someone using a link in the page returned by the previous request, or that page contains a meta tag in the head, which triggers a redirect to this wrong URL.

So retrieve /tc/CassetteLabeler/ and have a look at the content to identify, whether the wrong URL "/CassetteLabeler/ pathology.labeler.labeler.Labeler/Labeler.html" is in the page.

If no, we have to think further.
If yes, you have to ask, why is this wrong URL in there. The question is, how your application generates this URL. If it generates absolute URLs instead of relative ones, then you can easily run into trouble, when the path of the real application is different from the path used from the outside.

It is not unlikely though, that in such a case the app or the framework used has a configurable path prefix. But first check, if you can verify the wrong URL is somewhere in the content of the page.


The request from the reverse proxy did go to the XP machine:
Here are the log entries from the access log:

<snip>
10.84.2.195 - - [20/Mar/2009:12:09:49 -0400] "GET /CassetteLabeler
HTTP/1.1" 302 -

That's only the first request, answered with the trailing slash redirect. The next request is the interesting one (the one answered with status 200). It also has to appear somewhere in your 2nd laqyer httpd logs.

Here are the entries from mod_jk.log of this XP machine:

<snip>
[Fri Mar 20 12:09:49.254 2009] [852:1808] [debug] jk_uri_worker_map.c
(682): Attempting to map URI '/CassetteLabeler' from 5 maps

Again that's the first request


[Fri Mar 20 12:09:49.551 2009] [852:1808] [debug] jk_ajp_common.c (608):
status = 302
[Fri Mar 20 12:09:49.551 2009] [852:1808] [debug] jk_ajp_common.c (615):
Number of headers is = 1
[Fri Mar 20 12:09:49.551 2009] [852:1808] [debug] jk_ajp_common.c (671):
Header[0] [Location] = [http://bml0039.yalepath.org/CassetteLabeler/]

Aha, we get back a redirect (302) to localtion http://bml0039.yalepath.org/CassetteLabeler/ (which will be further rewritten by ProxyPassReverse). But that we already know. The next request is the interesting one.


I have a production environment - just with 3 Macs and just one tomcat per machine forming a cluster - where a very similar configuration runs fine. The only difference is that the sticky parameters are NOT with the load balancer but with the real workers in the workers.properties file,

This is very likely not the cause.

and the reverse proxy configuration somewhat different. Here it is:

<snip>
<IfModule mod_proxy_balancer.c>
ProxyPass /apps/ balancer://balancer-group/ stickysession=JSESSIONID
ProxyPassReverse /apps/ balancer://balancer-group/
<Proxy "balancer://balancer-group">
BalancerMember http://pathsrv1.yalepath.org loadfactor=10
BalancerMember http://raid2b.yalepath.org loadfactor=10
BalancerMember http://reptile.yalepath.org loadfactor=10
</Proxy>
</IfModule>

Looks pretty analogous at first sight.

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