Apache 1.3.x and 2.0.x

Apache HTTP Server versions 1.3.x and 2.0.x provide load balancing by using mod_rewrite Apache module.

Refer to the following:

All configurations examples explained here work on both Apache version 1.3.x and 2.0.x

Sessionless requests

The following example shows how to configure the Apache mod_proxy module to do load balancing for sessionless requests. It assumes the architecture illustrated by the sample architecture 1.
# Apache configuration file
<IfModule mod_rewrite.c>

RewriteEngine on

RewriteMap servers rnd:hosts.txt

RewriteRule ^/(.*) http://${servers:host}/$1 [P,L] 

</IfModule>
  • These configuration entries can be put at the server level in the httpd.conf file.
  • The RewriteMap instruction uses a round-robin algorithm to select a host based on the content of the hosts.txt file, which has following content:
    host GAS1.corporate.com|GAS2.corporate.com
  • The RewriteRule instruction replaces the server host of incoming requests by the content of the servers:host variable, then forwards the request to the chosen machine.

For example, the http://localhost/ws/r/echo URL will be rewritten to http://GAS1.corporate.com/ws/r/echo, assuming that the GAS1.corporate.com server has been chosen.

Session-bound requests

The following example shows how to configure the Apache mod_proxy module to do load balancing for session-bound requests. It assumes the architecture illustrated by the sample architecture 2. The example illustrates path-based session-bound request routing.
# Apache configuration file
<IfModule mod_rewrite.c>

RewriteEngine on

RewriteMap servers rnd:vdirs.txt

RewriteRule ^/gas/(.*) /${servers:vdir}/$1
RewriteRule ^/GAS1/(.*) http://GAS1.corporate.com/GAS1/$1 [P,L]
RewriteRule ^/GAS2/(.*) http://GAS2.corporate.com/GAS2/$1 [P,L]

</IfModule>
  • These configuration entries can be put at the server level in the httpd.conf file.
  • The RewriteMap instruction uses a round-robin algorithm to set the value of the servers:vdir variable based on the content of the vdirs.txt file, which has following content:
    vdir GAS1|GAS2
  • For starting-session requests, the RewriteRule instruction replaces the gas part of the URL by the content of the servers:vdir variable, which is either GAS1 or GAS2; then other rewrite rules will be applied to set the host. For session-bound requests, the rule will not match so the rule doesn't apply.
  • The host name of requests who's URL begin with /GAS1/ will be set to GAS1.corporate.com.
  • The host name of requests who's URL begin with /GAS2/ will be set to GAS2.corporate.com.

For example, the http://localhost/gas/ua/r/gwc-demo URL will be rewritten to http://localhost/GAS2/ua/r/gwc-demo, assuming that the servers:vdir variable contains GAS2 at this time, then will be rewritten to http://GAS2.corporate.com/GAS2/ua/r/gwc-demo. Likewise, the http://localhost/GAS2/ua/sua/93837374/1 URL will be rewritten to http://GAS2.corporate.com/GAS2/ua/sua/93837374/1.