How to setup load balancer with haproxy on Ubuntu server 14.04

Install haproxy first

sudo apt-get install haproxy

Make backup copy of default haproxy.cfg

sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.backup
sudo nano /etc/haproxy/haproxy.cfg

Configure your haproxy.cfg

log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
user haproxy
group haproxy

log global
mode http
option httplog
option dontlognull
contimeout 5000
clitimeout 50000
srvtimeout 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

listen webcluster *:80
mode http
stats enable
stats auth kim:mypassword
balance roundrobin
option httpchk HEAD / HTTP/1.0
option forwardfor
cookie LSW_WEB insert
option httpclose
server web01 cookie WEB01 check
server web02 cookie WEB02 check
server web03 192.168.1.xx:80 cookie WEB03 check

For sticky sessions use the following for the pool

server web01 cookie WEB01 check
server web02 cookie WEB02 check
server web03 cookie WEB03 check

For static websites without session use the following format

server web01 check
server web02 check
server web03 check


Enable HAproxy by editing the /etc/default/haproxy

sudo nano /etc/default/haproxy
# Set ENABLED to 1 if you want the init script to start haproxy.
# Add extra flags here.
#EXTRAOPTS="-de -m 16"

Start haproxy service

sudo service haproxy start

Test your load balancer and its stats


Fix your webserver logging as they are no longer serving directly to users. From
Users -> webserver
Users -> Haproxy -> webserver

sudo nano /etc/apache2/apache2.conf

Change below

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined


#LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Leave a Comment

Your email address will not be published. Required fields are marked *