Thats the way my mod_proxy conf is right now

<Proxy balancer://cluster>
BalancerMember http://servera:8080/agent/ route=worker0 keepalive=On loadfactor=1 BalancerMember http://serverb:8080/agent/ route=worker1 keepalive=On loadfactor=1 ProxySet lbmethod=byrequests maxattempts=3 stickysession=JSESSIONID|jsessionid
</Proxy>

<Location /agent/>
   ProxyPass balancer://cluster/ stickysession=JSESSIONID
   ProxyPassReverse http://servera:8080/agent/
   ProxyPassReverse http://serverb:8080/agent/
</Location>

The problem is that when I use my laptop as load balancer it works fine, even the comet part of the application works all right. In this scenario I have my laptop balancing the load among servera and serverb. However, when I use servera as the load balancer, the comet part doesnt seem to be working as I dont get any response from the server, but the load is being balanced properly.



Rainer Jung escreveu:
On 27.08.2010 19:22, Thiago Locatelli da Silva wrote:
Hi Rainer,

I followed your suggestions and it seems to be working, the load
balacing, now i need to look into why my application, created with gwt +
comet is not working. It seems that comet stopped working.

Any information about what the solution was? Upgrading Apache, using the backend server URLs in ProxyPassReverse, something else?

Regards,

Rainer

Rainer Jung escreveu:
On 27.08.2010 14:17, Thiago Locatelli da Silva wrote:
Hello list! :)

Here at work I was asked to give a try on load balancing two tomcat
servers running tomcat 6.0.29. The problem is that I was given only two servers to do this, what gave me only one option: run the apache in one
of these servers. So I decided to put the apache httpd server which is
going to balance the load among the two tomcat server in the Server A
(suppousing I have server A and B running linux). My application which
needs to be balanced has "/agent" context.

Everytime I access the URL http://servera/agent my request is redirect
either to http://servera:8080/agent or http://serverb:8080/agent. To my
understanding, with load balancing, my url would remain
http://servera/agent and the redirect would take place behing the scene
and I would never see any redirect to tomcat connector port (8080). By
the way, i am running the load balancing with mod_proxy in the apache
server and my configuration is as follow:

=============================================================

ProxyPass /balancer-manager !
ProxyPass /status !
ProxyStatus On
ProxyRequests Off

<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from localhost </Location>

<Location /status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
</Location>

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

<Proxy balancer://cluster>
BalancerMember http://servera:8080/agent/ route=worker0 keepalive=On
loadfactor=1
BalancerMember http://serverb:8080/agent/ route=worker1 keepalive=On
loadfactor=1
ProxySet lbmethod=byrequests maxattempts=3
stickysession=JSESSIONID|jsessionid
</Proxy>

<Location /agent>
ProxyPass balancer://cluster/ stickysession=JSESSIONID
ProxyPassReverse balancer://cluster/
</Location>

=============================================================

Not happy with this scenario, i decided to install the apache httpd
server in my laptop and made it as my load balancer instead of using
servera to load balance. For my surprise, it worked out of the box with no extra configuration other than the one set up in my servera. I see no
redirects to 8080 tomcat's port, due to my overall tests i could see
only my desired url: http//localhost/agent (since i was running my tests
with apache installed locally).

So my question is: does it make sense to have the load balancer in the
same server as one of the balanced server/application? Does mod_proxy
support this?

Many thanks for all the attention

The wrong redirect URLs should have been rewritten by
ProxyPassReverse. Note that using the balancer URL in ProxyPassReverse
only works starting with Apache 2.2.12. Before you had to give one
ProxyPassReverse statement for each backend URL configured as part of
the balancer, e.g.

ProxyPassReverse /agent http://servera:8080/agent
ProxyPassReverse /agent http://serverb:8080/agent

It is simply a rule to rewrite the Location header contained in any
30x response, i.e. replacing the string to the right with the string
to the left (if it prefixes the Location URL).

I suggest you

- make sure you have a recent Apache (2.2.16 is the latest 2.2.x)

- inspect the exact redirect response using a browser plugin or
network sniffing, especially check the contents of the Location header

- try using the split ProxyPassReverse pr backend configuration

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