loader image

SERVEURS : Haute Disponibilité

Webdesign Networking Virtualization

SERVEURS : Haute Disponibilité

La haute disponibilité est primordiale dans une infrastructure. Il faut tout faire en double : firewall, routeur, load balancer, serveur etc ...

Nous allons configurer la haute disponibilité sur un load balancer HAPROXY.

Dans mon cas, j'ai une machine HAPROXY virtuelle qui load balance le trafic de différents serveurs. Afin de sécuriser d'avantage mon infrastructure je vais donc créé un cluster.

Le monde virtuel apporte de nombreux bénéfices dont celui de pouvoir cloner des machines en un temps record. J'ai donc maintenant 2 machines HAPROXY à configurations identiques (sauf ips :)). (dans le cadre d'un clonage attention aux mac@ 😉 )

Voici la configuration IP

HAPROXY-Master:

address 172.25.0.10
netmask 255.255.255.0
gateway 172.25.0.1

address 172.26.0.10
netmask 255.255.255.0
gateway 172.26.0.1

HAPROXY-Slave:

address 172.25.0.11
netmask 255.255.255.0
gateway 172.25.0.1

address 172.26.0.11
netmask 255.255.255.0
gateway 172.26.0.1

Installons maintenant le paquets heartbeat qui va effectuer le test de santé entre les 2 machines :

apt-get install heartbeat

Une fois heartbeat installé nous allons devoir créer trois fichiers dans le dossier /etc/ha.d/
– ha.cf : Pour la configuration générale de heartbeat
– haresources : Pour la configuration des ressources
– authkeys : Pour la clef partagé entre les serveurs du cluster

Voici le contenu du fichier ha.cf

mcast ens192 239.0.0.11 694 1 0

warntime 4
deadtime 5
initdead 15
keepalive 2

Re-balance les services sur le lb primaire quand il revient en ligne

auto_failback on

Serveurs du cluster

node HAPROXY-Master
node HAPROXY-Slave

Attention vos nodes doivent pouvoir se pinguer via le name :

donc petit vi /etc/hosts

172.25.0.10 HAPROXY-Master
172.25.0.11 HAPROXY-Slave

Voici le contenu de haresources

HAPROXY-Master IPaddr::172.25.0.12/24/ens192 IPaddr::172.25.0.12/24/ens192 haproxy

Explications:
HAPROXY-Master = lb primaire du cluster
IPaddr::192.168.2.100/24/eth0 = Adresse IP balancée pour Haproxy
IPaddr::10.1.0.1/24/eth1 = Adresse IP balancée pour la passerelle sur eth1
haproxy = service que heartbeat va démarrer

Et pour finir nous allons créer le fichier authkeys. Ce fichier contient une clef partagée entre les deux serveurs. Cela peut être un mot de passe, ou un simple mot.
Voici le miens :

auth 33 md5 my-auth-key
A savoir que pour le test j'ai mis md5 il conviendra par le modifier par quelque chose de plus costaud 😉
Ce fichier doit avoir la permission 600 sur les 2 serveurs
chmod 600 /etc/ha.d/authkeys
Sur les deux serveur arrêtez haproxy:
/etc/init.d/haproxy stop
Puis sur lb1 démarrez hearbeat
/etc/init.d/heartbeat start
Attendez quelques secondes et tapez la commande ifconfig:

ens192: flags=4163 mtu 1500
inet 172.25.0.10 netmask 255.255.255.0 broadcast 172.25.0.255
inet6 fe80::20c:29ff:fe44:6488 prefixlen 64 scopeid 0x20

ether 00:0c:29:44:64:88 txqueuelen 1000 (Ethernet)
RX packets 6785794 bytes 2007295092 (1.8 GiB)
RX errors 0 dropped 80 overruns 0 frame 0
TX packets 6707607 bytes 1540035154 (1.4 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens192:0: flags=4163 mtu 1500
inet 172.25.0.12 netmask 255.255.255.0 broadcast 172.25.0.255

ether 00:0c:29:44:64:88 txqueuelen 1000 (Ethernet)
ens224: flags=4163 mtu 1500
inet 172.26.0.10 netmask 255.255.255.0 broadcast 172.26.0.255
inet6 fe80::20c:29ff:fe44:6492 prefixlen 64 scopeid 0x20

ether 00:0c:29:44:64:92 txqueuelen 1000 (Ethernet)
RX packets 324 bytes 20188 (19.7 KiB)
RX errors 0 dropped 40 overruns 0 frame 0
TX packets 282 bytes 15136 (14.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens224:0: flags=4163 mtu 1500
inet 172.26.0.12 netmask 255.255.255.0 broadcast 172.26.0.255
ether 00:0c:29:44:64:92 txqueuelen 1000 (Ethernet)

Pour tester la bascule, il vous suffit d’arrêter heartbeat sur HAPROXY-Master avec la commande:

/etc/init.d/heartbeat stop
Connectez vous sur le slave et vous devriez avoir la même configuration ip VIP que le master qui lui ne l'aura plus

Le mieux étant de tester sur un affichage web, voici en image :

Allez hop on bascule sur le slave : soit on stop le heartbeat primaire, soit, plus hard on coupe le serveur 🙂

si vous avez activé l'option auto_failback on dans /etc/heartbeat/ha.cf

vous n'avez qu'à démarrer heartbeat sur le primaire pour qu'il rebascule

Si jamais j'ai été un peu vite n'hésitez pas à me poser des questions.

J'ai effectué cette configuration sur HAPROXY mais vous pouvez faire la même chose sur tout autres serveurs

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *