Setup HA-Proxy with Keepalived

Setup HA-Proxy with Keepalived

Two Ubuntu 14.04 servers [1GB RAM each]

hostnames and IP addresses:

    haproxy1 (
    haproxy2 (

We’ll also need to allocate a third IP address to use as the virtual IP address (VIP).  
We’ll use

# vi /etc/sysctl.conf

Then we run the following command to make this take effect without rebooting:
# sysctl -p

# apt-get update && apt-get install keepalived haproxy -y

# vi /etc/keepalived/keepalived.conf

global_defs {
  router_id haproxy1
vrrp_script haproxy {
  script “killall -0 haproxy”
  interval 2
  weight 2
vrrp_instance 50 {
  virtual_router_id 50
  advert_int 1
  priority 101
  state MASTER
  interface eth0
  virtual_ipaddress { dev eth0
  track_script {


router_id to be the hostname, and
the VIP as

# vi /etc/haproxy/haproxy.cfg

    chroot /var/lib/haproxy
    user haproxy
    group haproxy
    log local0
 stats socket /var/lib/haproxy/stats
    maxconn 4000

    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 stats
        mode http
        stats enable
        stats uri /stats
        stats realm HAProxy\ Statistics
        stats auth admin:password


Local IP addressis used in the file in two locations,
in the global section for the log location, and
in the stats listener.  

When you setup the second node, make sure to use its IP address.  
Also notice the username and password in the status auth line.  Set this to whatever you want.  
Then, you will be able to access the stats page via your browser.

Edit the file /etc/default/haproxy and change ENABLED from 0 to 1

Now we can restart the services:
service keepalived restart
service haproxy restart

Once you’ve completed all of these steps on both nodes,
you should now have a highly available load balancer pair.  
At this point, our VIP should be active on one node
(assuming that you built node 1 first, it should be active on that node).  

To confirm, we can use the ip command:

# ip a | grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet brd scope global eth0
    inet scope global eth0

Notice that both the local IP and the VIP are shown.
If we now shutdown node 1, node 2 will quickly pick up the VIP.

To further confirm,
# ping
from any machine within same network & bring down the node1.

Final Note: Don’t forget to repeat all the steps on second node as well.



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s