LINUX:Pacemaker - Routers inter LAN en Failover
→ retour au menu de la Haute disponibilité
But
Ce premier exemple place deux routers en Failover afin de diminuer le risque de coupures.
Principe
On dispose de deux ordinateurs Linux configurés en mode routers. On va utiliser le logiciel Pacemaker qui les regroupent en cluster. Il sera utilisé en Failover. un des routers aura des fonctions de router en concentrant les ressources configurées dans Pacemaker tandis que l'autre sera en attente. Quand le premier router sera indisponible, par exemple suite à un problème matériel ou plus simplement lors d'une mise à jour de version, le second reprendra la tâche de router en récupérant les ressources de Pacemaker.
La ressource principale consiste à créer une adresse IP virtuelle sur chacun des deux interfaces réseaux. Ce sont ces adresses virtuelles qui seront utilisées dans les tables de routages. Les adresses IP réelles ne seront utilisées que pour une administration locale, par exemple, pour mettre à jour l'OS. Pour les notions de routage, voyez l'article concernant le Routage statique.
Le schéma suivant visualise la situation stable complètement opérationnelle. Dans la configuration, le routeur de gauche "fo1.home.dom" aura la préférence. Avec cette configuration, on peut choisir cet ordinateur de gauche plus performant, plus récent, tandis que l'autre peut être moins performant sachant que normalement, il ne doit entrer en action que rarement et que s'il tombe en panne, ce n'est pas crucial. Le tracé en vert visualise de trafic de routage et les adresses IP en rouge sont virtuelles qui ne sont pas liées à un router mais vont devoir passer de gauche à droite et inversement en fonction des besoins.
Dans le cas où le router de gauche tombe en panne (grisé), celui de droite prend la relève.
Prérequis
Configuration de base
En premier, la Configuration de base de Pacemaker doit être effectuée.
Activation du routage
En second, il faut activer le routage sur les deux routers en ajoutant un fichier, par exemple "router.conf", dans le répertoire "/etc/sysctl.d". Ce fichier doit contenir la ligne:
net.ipv4.ip_forward = 1
On active cette configuration soit en redémarrant la machine, soit avec la commande suivante:
sysctl -p /etc/sysctl.d/router.conf
Fichier "hosts"
Sur chaque machine du cluster, on ajoute un nom aux différentes adresses réseaux. On le fait en local dans le fichier "/etc/hosts" suivant le schéma ci-dessus. Son contenu devient:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.71 fo1.home.dom 192.168.1.72 fo2.home.dom 192.168.1.73 focluster.home.dom 192.168.2.71 fd1.data.dom 192.168.2.72 fd2.data.dom 192.168.2.73 fdcluster.home.dom # serveur mail 192.168.1.110 servermail.home.dom home.dom
Configuration
Script
On effectue la suite des commandes suivantes à partir d'une des machines du cluster. On peut les mettre dans un script.
#!/bin/bash pcs resource create ClusterIPext ocf:heartbeat:IPaddr2 ip=192.168.1.73 cidr_netmask=24 nic=eth1 iflabel=ethcl1 lvs_support=true op monitor interval=30s pcs constraint location ClusterIPext prefers fo1.home.dom=1000 pcs constraint location ClusterIPext prefers fo2.home.dom=10 pcs resource create ClusterIPint ocf:heartbeat:IPaddr2 ip=192.168.2.73 cidr_netmask=24 nic=eth2 iflabel=ethcl2 lvs_support=true op monitor interval=30s pcs constraint location ClusterIPint prefers fo1.home.dom=1000 pcs constraint location ClusterIPint prefers fo2.home.dom=10 pcs constraint colocation add ClusterIPint with ClusterIPext score=INFINITY pcs constraint order ClusterIPext then start ClusterIPint pcs resource create ClusterMailTo ocf:heartbeat:MailTo email=root subject="FailOver_Home" op monitor interval=30s pcs constraint location ClusterMailTo prefers fo1.home.dom=1000 pcs constraint location ClusterMailTo prefers fo2.home.dom=10 pcs constraint colocation add ClusterMailTo with ClusterIPext score=INFINITY pcs constraint order ClusterIPint then start ClusterMailTo
Ressources d'ajout des adresses IP virtuelles
Les lignes suivantes:
pcs resource create ClusterIPext ocf:heartbeat:IPaddr2 ip=192.168.1.73 cidr_netmask=24 nic=eth1 iflabel=ethcl1 lvs_support=true op monitor interval=30s pcs resource create ClusterIPint ocf:heartbeat:IPaddr2 ip=192.168.2.73 cidr_netmask=24 nic=eth2 iflabel=ethcl2 lvs_support=true op monitor interval=30s
vont créer deux ressources, nommées "ClusterIPext" et "ClusterIPint" qui vont activer deux adresses virtuelles respectivement "192.168.1.73/24" et "192.168.2.73/24" grâce à la fonction "ocf:heartbeat:IPaddr2". L'une sera placée sur l'interface réseau "eth1" et l'autre "eth2". Des noms virtuels sont aussi donnés: "ethcl1" et "ethcl2".
Préférences données à "fo1.home.dom"
Les lignes suivantes:
pcs constraint location ClusterIPext prefers fo1.home.dom=1000 pcs constraint location ClusterIPext prefers fo2.home.dom=10 pcs constraint location ClusterIPint prefers fo1.home.dom=1000 pcs constraint location ClusterIPint prefers fo2.home.dom=10
ajoutent des contraintes donnant la préférence au router "fo1.home.dom" d'un point de vue localisation.
Localisation commune
La ligne suivante:
pcs constraint colocation add ClusterIPint with ClusterIPext score=INFINITY
précise que ces deux ressources seront sur la même machine.
Ordre de démarrage
La ligne suivante:
pcs constraint order ClusterIPext then start ClusterIPint
définit l'ordre de démarrage de ces deux ressources; la ressource "ClusterIPext" sera démarrée avant la ressource "ClusterIPint".
Ressource de notification par mail
La ligne suivante:
pcs resource create ClusterMailTo ocf:heartbeat:MailTo email=root subject="FailOver_Home" op monitor interval=30s
crée une ressource nommée "ClusterMailTo" grâce à la fonction "ocf:heartbeat:MailTo". A tout changement d'état un mail sera envoyé à l'utilisateur "root" dont le sujet débutera avec les mots "FailOver_Home".
On peut facilement comprendre le reste des lignes. Cette ressource débutera après les autres et sera avec elles.
→ retour au menu de la Haute disponibilité