mod_proxy_balancer
mod_proxy
extension for load balancing
Extension
mod_proxy_balancer.c
proxy_balancer_module
Available in version 2.1 and later

This module requires the service of mod_proxy. It provides load balancing support for `HTTP`, `FTP` and `AJP13` protocols

Load balancing scheduler algorithm is provided by not this module but other modules such as: mod_lbmethod_byrequests, mod_lbmethod_bytraffic and mod_lbmethod_bybusyness.

Thus, in order to get the ability of load balancing, mod_proxy, mod_proxy_balancer and at least one of load balancing scheduler algorithm modules have to be present in the server.

# Warning

Do not enable proxying until you have secured your server. Open proxy servers are dangerous both to your network and to the Internet at large.

mod_proxy

# Load balancer scheduler algorithm

At present, there are 3 load balancer scheduler algorithms available for use: Request Counting, Weighted Traffic Counting and Pending Request Counting. These are controlled via the `lbmethod` value of the Balancer definition. See the ProxyPass directive for more information.

# Example of a balancer configuration

Before we dive into the technical details, here's an example of how you might use mod_proxy_balancer to provide load balancing between two back-end servers:

<Proxy balancer://mycluster>
BalancerMember http://192.168.1.50:80
BalancerMember http://192.168.1.51:80
</Proxy>
ProxyPass /test balancer://mycluster/

# Exported Environment Variables

At present there are 6 environment variables exported:

BALANCER_SESSION_STICKY

  This is assigned the stickysession value used in the current request. It is the cookie or parameter name used for sticky sessions

BALANCER_SESSION_ROUTE

  This is assigned the route parsed from the current request.

BALANCER_NAME

  This is assigned the name of the balancer used for the current request. The value is something like `balancer://foo`.

BALANCER_WORKER_NAME

  This is assigned the name of the worker used for the current request. The value is something like `http://hostA:1234`.

BALANCER_WORKER_ROUTE

  This is assigned the route of the worker that will be used for the current request.

BALANCER_ROUTE_CHANGED

  This is set to 1 if the session route does not match the worker route (BALANCER_SESSION_ROUTE != BALANCER_WORKER_ROUTE) or the session does not yet have an established route. This can be used to determine when/if the client needs to be sent an updated route when sticky sessions are used.

# Enabling Balancer Manager Support

This module requires the service of mod_status. Balancer manager enables dynamic update of balancer members. You can use balancer manager to change the balance factor or a particular member, or put it in the off line mode.

Thus, in order to get the ability of load balancer management, mod_status and mod_proxy_balancer have to be present in the server.

To enable load balancer management for browsers from the example.com domain add this code to your `httpd.conf` configuration file

<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from .example.com
</Location>

You can now access load balancer manager by using a Web browser to access the page `http://your.server.name/balancer-manager`