Icinga2: Haproxy- master/slave setup
In This tutorial I will be setting up Icinga2 to use a database proxy (dbproxy) to connect to it's master database and fail-over to the slave database if master database is not available for some reasons.
Note: We will not cover the Icinga2, Icingaweb2 and master/slave setup in this tutorial
Prerequisites
1 icinga2 server: icinga1001 1 master database master server: db1001 1 dbproxy server: dbproxy1001 2 slaves database severs: db1002 and db1005
Setup
Existing configuration
In my existing configuration, I have Icinga2 connecting directly to the database master (db1001). See image below
New configuration
In the new configuration we will need to put a dbproxy between Icinga2 and the database master server. See image below
Haproxy setup and configuration
On the dbpoxy1001, install haproxy:
sudo apt-get install haproxy
Open the configuration file and copy and paste the configuration below.
cd /etc/haproxy sudo vi haproxy.cfg
# HAProxy's stats listen stats bind 10.192.32.8:80 stats enable stats hide-version stats uri / stats realm HAProxy Statistics stats auth user_name:user_password listen mysql-cluster bind 0.0.0.0:3306 mode tcp option tcplog balance roundrobin option log-health-checks log /dev/log local0 crit option tcpka option mysql-check user haproxy_user server db1001 10.192.16.9:3306 check inter 3s fall 3 rise 6 server db1002 10.192.32.2:3306 check backup server db1005 10.192.32.2:3306 check backup
Note: change the Bind address in the "listen start" with your dbproxy IP address and the server name and IP addresses in the "listen mysql-cluster" with your master and slaves names and IP addresses
As we can see in the haproxy.cfg file, we have a user called " haproxy_user" this user will check the status on all 3 database servers so we need to create this user.The user don't need and privileges on the database but we have to create the user on all 2 database servers.
Database configuration
Create the haproxy_user
The user don't have to be called "haproxy_use" you can call the user anything you want. login on all 3 database servers and issue the command
create user 'haproxy_user'@'dbproxy1001.dfw.labnet';

