Load balancing in Apache
Load balancing in Apache is pretty much simple. You need to have a load balancer, and more than one web server.
Required module : mod_proxy_balancer
This module is an Apache module available starting Apache 2.1. It enables an Apache to act as a load balancer. It can also keep track of sessions which enables a single user to always deal with the same backend webserver which is also called sticky sessions.
Prerequisites:
- an Apache web Server installation version 2.1 or later
- **mod_proxy** extension.
Configuration:
- A load balancer (lb.example.com)
- Web servers ( wb1.example.com and wb2.example.com)
Include a file to apache web configuration : (/etc/httpd/conf/httpd.conf)
Include loadbalancer.conf
vi loadbalancer.conf
```BalancerMember http://wb1.example.com``BalancerMember http://wb2.example.com````ProxyPass / balancer://testcluster`
**Load Balancing Methods :**
Three load balance methods are currently available:
- **byrequests**: weighted request count balancing;
- **bytraffic**: weighted traffic byte count balancing;
- **bybusyness**: pending request balancing.
**Example: **
BalancerMember http://wb1.example.com loadfactor=3 BalancerMember http://wb2.example.com loadfactor=7 lbmethod=byrequests
#### **Session management :**
It is important to make sure that we implement sticky sessions so that a user will be forwarded to the same member of cluster where the session is started.**
**
Balance members will be tagged with a **route** value as follows:
>
#### Balancer manager
``
`BalancerMember http://wb1.example.com loadfactor=3 route=wb1`
`BalancerMember http://wb2.example.com loadfactor=7 route=wb2`
``
Session identifiers will be then defined at the application level as the concatenation of a value (independent of the member the client has been assigned to) and the route value as follows:
`SESSION_ID=.`
**
**
Finally, the cluster URL mapping must be declared as follows:
`ProxyPass /test balancer://mycluster stickysession=SESSION_ID`
where **SESSION_ID** is the name of the variable at the application level storing the session identifier.
The balancer manager enables dynamic update of balancer members and their load factor. The** mod_status** extension is required.
To enable the manager, the following lines of code are required in the
**loadbalancer.conf** file:
> ``
`SetHandler balancer-manager`
`Order Deny,Allow`
`Allow from all`
``
**
**
The instructions will enable the manager, accessible via browser at **http://lb.example.com/balancer-manager**.
Statistics and configuration details will be displayed and settings could be edited.