Any admin somehow involved in sphere of UNIX Webhosting knows Apache pretty well. I've personally used Apache for about 10 years now and until now I always used it as a single installation on a Linux. Always so far whenever the requirements for more client connections raised up, web hosting companies I worked for did a migration of Website / websites on a newer better (quicker) server hardware configuration. Everyone knows keeping a site on a single Apache server poses great RISK if the machine hangs up for a reason or gets DoSed this makes websites unavailable until reboot and poses unwanted downtime. Though I know pretty well the concept of load balancing until today I never had configured Apache to serve as Load balancer between two or more identical machines set-upped to interpret PHP / Perl scripts. Amazingly load balancing users web traffic happened to be much easier than I supposed. All necessary is a single Apache configured with mod_proxy_balancer which acts as proxy and ships HTTP requests between two Apache servers. Logically its very important that the entry traffic host with Apache mod_proxy_balancer has to be configured to only run only mod_proxy_balancer otherwise it will be eating unnecessary server memory as with each unnecessary loaded Apache module usage of memory resources raise up.
The scenario of my load balancer and 2 webserver hosts behind it goes like this:
a. Apache with load balancer with external IP address – i.e. (83.228.93.76) with DNS record for ex. www.mybalanced-webserver.com
b. Normally configured Apache to run PHP scripts with internal IP address through NAT – (Network address translation) (on 10.10.10.1) – known under host JEREMIAH
c. Second identical Apache to above host running on 10.10.10.1 with IP 10.10.10.2. with internal host ISSIAH.
N.B.! All 3 hosts are running latest Debian GNU / Linux 7.2 Wheezy
After having this in mind, I proceeded with installing the on 83.228.93.76 apache and removing all unnecessary modules.
!!! Important note is if you use some already existent Apache configured to run PHP or any other unnecessary stuff – make sure you remove this otherwise expect severe performance issues !!!
1. Install Apache webserver
loadbalancer:~# apt-get install --yes apache2
2. Enable mod proxy proxy_balancer and proxy_http
On Debian Linux modules are enabled with a2enmod command;
loadbalancer:~# a2enmod proxy
loadbalancer:~# a2enmod proxy_balancer
loadbalancer:~# a2enmod proxy_http
Actually what a2enmod command does is to make symbolic links from /etc/apache2/mods-available/{proxy,proxy_balancer,proxy_http} to /etc/apache2/mods-available/{proxy,proxy_balancer,proxy_http}
3. Configure Apache mod proxy to load balance traffic between JEREMIAH and ISSAIAH webservers
loadbalancer:~# vim /etc/apache2/conf.d/proxy_balancer
Paste inside:
<Proxy balancer://mycluster>
BalancerMember http://10.10.10.1
BalancerMember http://10.10.10.2
</Proxy>
ProxyPass / balancer://mycluster
4. Configure Apache Proxy to access traffic from all hosts (by default it is configured to Deny from all)
loadbalancer:~# vim /etc/apache2/mods-enabled/proxy.conf
Change there Deny from all to Allow from all
5. Restart Apache
loadbalancer:~# /etc/init.d/apache2 restart
Once again I have to say that above configuration is actually a basic Apache cluster so hosts behind load balancer Apache there should be machines configured to interpret scripts identically. If one Apache server of the cluster dies, the other Apache + PHP host will continue serve and deliver webserver content so no interruption will happen. This is not a round robin type of load balancer. Above configuration will distribute Webserver load requested in ratio 3/4 3 parts will be served by First server and 4th parth will be delivered by 2nd Apache.
Well, that's all load balancer is configured! Now to test it open in browser www.mybalanacer-webserver.com or try to access it by IP in my case: 83.228.93.76
More helpful Articles

Tags: Apache Proxy, apache server, apache2, com, command, conf, configured, hosts, How to, JEREMIAH, load balancer, load balancing, proxy, running, traffic, webserver, www
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
If you have to configure 4 Tomcats, behind the Apache serving as Load Balancer ReverseProxy a proper configuration would be something like:
BalancerMember ajp://10.16.166.66:11010/
BalancerMember ajp://10.16.166.83:11010/
BalancerMember ajp://10.16.166.52:11010/
ProxyPass / balancer://mycluster/
View CommentView CommentProxyPassReverse / balancer://mycluster/