Skip to main content
Join the official 2020 Python Developers SurveyStart the survey!

Haproxy and Keepalived base multiple HA on same server

Project description


HALB is the wrapper script to install/setup/manage multiple haproxy configuration on the same server. Along with the Keepalived for easy failover.

Make sure you install the keepalived and haproxy.

> In redhat/centos systems you can
> install them using

yum install -y keepalived
yum install -y heartbeat

You can install HALB using the pip/setuptools or install from tar.gz

pip install HALB
python install

This will install following files on your system

- /usr/bin/lbtool -- The actual wrapper lbtool script which you will be using
- /etc/HALB/halb.conf -- The Configuration file for HALB to control the data location where HALB saves/checks for data.
- /etc/HALB/DATA/* -- Actual HALB files.

The setup installs the sample configuration for you to start off present in /etc/HALB/DATA/{,real.dat,vip.dat}

The Configuration file /etc/HALB/halb.conf controls follwing options

- DC - the name of the DC, optional preset to DATA
- HAPLB_HOME - HOME for your HALB installation,the actual haproxy configuration is saved under this directory
- HAPROXY -- PATH for haproxy binary
- KEEPALIVE_CONF -- Keepalived configuration file
- VIP_DEVICE -- The device name to which keepalived will bind the the VIP

The lbtool will require following four directories under HAPLB_HOME/DC

- dat - All .vig files, real.dat and
vip.dat files are stored here
- bin - copies of haproxy binary for each
individual haproxy haproxy - home for all haproxy configuration
status - status directory for all backend nodes
**Adding new configs:**

- Create new vig file

Create new .vig file for the rotation under /etc/HALB/DATA/dat/
Ex: /etc/HALB/DATA/dat/ (Replace test with the desired name)

[root@lb1 lb]# cat /etc/HALB/DATA/dat/
keepalived: vid=51
#Vip: port=80 vip_mode=http,https vip_maxconn=25000 real=tiber1:80 #is

> The keepalived vid must be unique as
> its identification for vip group in
> keepalived configuration.
> **Use Command to find the number of vid used in existing vig file.**

grep -ir 'keepalived: vid='/etc/HALB/DATA/dat/*.vig | awk '{print $NF}'| sort

- Add Vip info in vip.dat

Add vip information under /etc/HALB/DATA/dat/vip.dat

[root@lb1 lb]# cat /etc/HALB/DATA/dat/vip.dat ip=

- Add Vip info in vip.dat
Add real server information under /etc/HALB/DATA/dat/real.dat

[root@lb1 lb]# cat /etc/HALB/DATA/dat/real.dat
tiber1: status=is name=tiber1 dns=tiber1.test.colo ip=

> Before adding check if the ips/servers
> are present in the vip.dat and
> real.dat. If present then there is no
> need to add. Please avoid duplicate
> entries.


> Use vig name as argument to lbtool

[root@lb1 lb]# lbtool test
example> help
Valid Choices are :
exit|quit --> To exit the program
gen_conf|generate_conf --> To generate the Haproxy configuration
ha_vig --> start|stop|reload|restart|status the configuration."
gen_keep --> MASTER|BACKUP genrates the Keepalived Configuration
is --> set the server status to In serving
oos --> set the server status to Out of serving
help --> show the valid commands.

For example below steps needs to be done in order

[root@lb1 root]# lbtool test

> Name of haproxy vig as argument to lb
> script.

test > generate_conf

> Generates haproxy config file

test > gen_keep MASTER

> Generates keepalived config for the
> new rotation.if role is MASTER it the
> rotation will be active on this
> server. If BACKUP then it will receive
> traffic only when the MASTER server
> fails.

test > ha_vig start

Starts the haproxy config

test > keep_init reload

> Reloads keepalived with newly updated
> config file.

test > exit

**Adding new hosts to a config:**

Add new hosts to real.dat file.

> Before adding check if the host is
> present in the file. If yes then do
> not add. We should avoid duplicate
> entries.

Add the host to the .vig file for the rotation.

[root@lb1 lb]# lb test

> Name of haproxy vig as argument to lb
> script.

test > is tiber1

> Adds host tiber1 into rotation of
> haproxy config for test

test > generate_conf
test > ha_vig restart
test > exit

**Taking a host out of rotation:**

[root@lb1 lb]# lb test
test > oos tiber1

> Takes host tiber1 out of rotation from
> haproxy config for test.

test > generate_conf
test > ha_vig restart
test > exit

misc -
add net.ipv4.ip_nonlocal_bind = 1 in sysctl.conf so that keepalived can bind non local ip's

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for HALB, version 0.1.5
Filename, size File type Python version Upload date Hashes
Filename, size HALB-0.1.5.tar.gz (9.2 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page