HAProxy is an open-source load-balancer which can load balance any TCP service. HAProxy is a free, very fast and reliable solution that offers load-balancing, high-availability, and proxying for TCP and HTTP-based applications
STEP 1: Here, we are installing HAProxy (High Availability Proxy) in Ubuntu by using the below commands:
apt-get install haproxy
haproxy -v
STEP 2: Start HAProxy by using the init script /etc/default/haproxy. Set ENABLED option to 1 as:
ENABLED=1
STEP 3: HAProxy is now installed. Now install 2(two) Apache Web Server in other machines. Here, we are using three systems virtually through Virtual Box.
Virtual machine 1 - Load Balancer
Hostname: haproxy
OS: Ubuntu
Private IP: 192.168.5.215
Virtual machine 2 - Web Server 1
Hostname: webser01
OS: Ubuntu with LAMP
Private IP: 192.168.5.216
Virtual machine 3- Web Server 2
Hostname: webserver02
OS: Ubuntu with LAMP
Private IP: 192.168.5.217
STEP 4: Before configuring HAProxy, take a backup of the original file by renaming it:
mv /etc/haproxy/haproxy.cfg{,.original}
Here, we have created haproxy.cfg file. Create nano /etc/haproxy/haproxy.cfg file as:
global
log /dev/log local0
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webfarm 0.0.0.0:80
mode http
stats enable
stats uri /haproxy?stats
balance roundrobin
option httpclose
option forwardfor
server webserver01 192.168.5.216:80 check
server webserver02 192.168.5.217:80 check
STEP 5: Start the HAProxy service using below command:
sudo service haproxy start
STEP 6: Testing Load-Balancing and Fail-over:
Edit the server name in both the default index.html files located by default at /var/www/index.html on both web servers.
On the Web Server 1 (webserver01 with IP- 192.168.5.216), append below line as:
sudo sh -c “echo
Hostname: webserver01 (192.168.5.216)
>> /var/www/index.html”
On the Web Server 2 (webserver02 with IP- 192.168.5.217), append below line as:
sudo sh -c “echo
Hostname: webserver02 (192.168.5.217)
>> /var/www/index.html”
STEP 7: Now, open your browser on your local machine and type haproxy installed machine IP i.e. http://192.168.5.215. Every time when you refresh the tab, the load is being distributed to each web server.
When we refresh the page for the second time, we get the following interface.