Web Server Load-Balancing on Ubuntu with HAProxy

by September 1, 2015 0 comments

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 \<h1\>Hostname: webserver01 \(192.168.5.216\)\<\/h1\> >> /var/www/index.html”
On the Web Server 2 (webserver02 with IP- 192.168.5.217), append below line as:
sudo sh -c “echo \<h1\>Hostname: webserver02 \(192.168.5.217\)\<\/h1\> >> /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.

proxy2

When we refresh the page for the second time, we get the following interface.

proxy1

No Comments so far

Jump into a conversation

No Comments Yet!

You can be the one to start a conversation.

Your data will be safe!Your e-mail address will not be published. Also other data will not be shared with third person.