L'objectif de cet article est de mettre en place un service de load balancer en primaire / secondaire sur deux datacenter. Les exemples ici se mettent en place chez OVH.
Préparer les vms
A faire sur toutes les vms :
- configuration de la timezone
- configuration du ntp
- configuration du réseau local
- configuration des noms d\'hôtes sur le réseau local
Dernière version de HaProxy
Ici on applique simplement la doc officielle de HaProxy : https://haproxy.debian.net/#?distribution=Debian&release=bullseye&version=2.5
Mise en place du cluster
Sur les deux machines :
apt install pacemaker corosync pcs psmisc pacemaker-cli-utils
Configuration du fichier /etc/corosync/corosync.conf
totem {
version: 2
cluster_name: lbtest
crypto_cipher: none
crypto_hash: none
}
logging {
fileline: off
to_stderr: yes
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
debug: off
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
}
nodelist {
node {
name: lb01-gra
nodeid: 1
ring0_addr: 192.168.85.1
}
node {
name: lb02-sbg
nodeid: 2
ring0_addr: 192.168.85.2
}
}
Redémarrage des services :
systemctl restart corosync
systemctl restart pacemaker
Définition du mot de passe de l\'utilisateur hacluster :
passwd hacluster
Ajout des noeuds dans le cluster (sur une seule machine) :
pcs cluster auth -u hacluster -p azertyuiop
Pour un cluster à deux noeuds :
pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore
Vérifications :
pcs status
Le cluster est prêt à accepter les ressources.
Créer les ressources
A faire depuis une seule machine
VIP privée
pcs resource create VIP1 ocf:heartbeat:IPaddr2 ip=192.168.85.10 cidr_netmask=32 op monitor interval=30s
VIP FO
pcs resource create VIP2 ocf:heartbeat:IPaddr2 ip=178.33.106.238 cidr_netmask=32 broadcast=178.33.106.238 nic=ens3
Regrouper les 2 Ips ensemble :
pcs constraint colocation add VIP1 with VIP2 INFINITY
Déplacer une ressource :
pcs resource move VIP2 lb01-gra
Gérer haproxy en master / slave
Supprimer la gestion de haproxy par systemd
systemctl stop haproxy
systemctl disable haproxy
Pensez à reconfigurer haproxy pour le binder sur l\'ipfo.
Créer la ressource haproxy :
pcs resource create haproxy systemd:haproxy
La regrouper avec la VIP2 :
pcs constraint colocation add haproxy with VIP2 INFINITY
Ne pas oublier en cas de besoins :
pcs resource cleanup haproxy
A ce point les services VIP1, VIP2 et haproxy sont liés et si le premier serveur tombe les services sont redémarrés sur le second serveur.
Il me manque juste maintenant un script pour renvoyer l'info à l'api OVH pour basculer l'ip sur le second serveur côté OVH.