Apache HTTP Server Version 2.3

Apache > HTTP Server > Documentation > Version 2.3 > Modules

# Apache Module mod_proxy_balancer

Available Languages: en | ja

Description: | `mod_proxy` extension for load balancing
Status: | Extension
Module Identifier: | proxy_balancer_module
Source File: | mod_proxy_balancer.c
Compatibility: | Available in version 2.1 and later

### Summary

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.

### Directives

This module provides no directives.

### Topics

- Load balancer scheduler algorithm
- Example of a balancer configuration
- Exported Environment Variables
- Enabling Balancer Manager Support

### See also

- `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`

Available Languages: en | ja