Ressources utilisées :
Vous avez configuré une réplication de données avec deux serveurs MySQL.
Maintenant vous allez mettre en oeuvre une solution de haute disponibilité du service de base de données MySQL en configurant un IP failover. Le service UCARP va permettre, en cas de dysfonctionement d'un serveur MySQL MAître, au serveur MySQSL réplicat de prendre le relai jusqu’à ce que le maître revienne à la normale.
En prélable, vous devez configurez une réplication maître ↔ esclave et non seulement maître → esclave sinon vous risquez de perdre des données qui se retrouveraient uniquement sur le réplicat lors de la remise en service du serveur maître.
Le principe d’UCARP est le partage d’une adresse IP et adresse MAC sur le réseau.
La protocole (U)CARP utilise une surcouche sur la configuration dess cartes réseau. Il doit être configuré dans chaque réplicat associé à un service donné en l’occurrence MySQL.
Toutes les x secondes une trame multicast est envoyée afin d’avertir que le protocole VRRP/UCARP est utilisé sur tel ID avec telle priorité. cette priorité définit sur un degré de 1 à 255 quel sera le serveur qui répondra avant les autres et sera le réplicat du moment.
Lorsque le serveur maître ou un serveur de plus haute priorité est de retour, le serveur rend alors l’adresse IP à celui-ci, permettant ainsi de garantir la bonne gestion du service.
Le partage d’une même adresse IP et d'une même adresse MAC entre les deux serveurs consiste à utiliser une adresse IP virtuelle et donc identique sur chaque serveur.
Voici les adresses IP à utiliser :
Groupe | Adresse IP virtuelle | Etudiants |
---|---|---|
01 | 10.xxx.xxx.62 | |
02 | 10.xxx.xxx.65 | |
03 | 10.xxx.xxx.68 | |
04 | 10.xxx.xxx.71 | |
05 | 10.xxx.xxx.74 | |
06 | 10.xxx.xxx.77 | |
07 | 10.xxx.xxx.80 | |
08 | 10.xxx.xxx.83 | |
09 | 10.xxx.xxx.86 | |
10 | 10.xxx.xxx.89 | |
11 | 10.xxx.xxx.92 | |
12 | 10.xxx.xxx.95 | |
13 | 10.xxx.xxx.98 |
# apt install ucarp
# nano /etc/network/interfaces
Dans le fichier interfaces suivant :
iface eth0 inet static address 10.xxx.xxx.mmm netmask 255.255.255.0 gateway 10.xxx.xxx.254 ############################## ##### UCARP Configuration ##### ucarp-vid 1 ucarp-vip 10.xxx.xxx.vvv ucarp-password btssio ucarp-advskew 1 ucarp-advbase 1 ucarp-master yes # Interface Carp en tant qu'alias de eth0 iface eth0:ucarp inet static address 10.xxx.xxx.vvv netmask 255.255.255.0
# systemctl restart networking
# apt install ucarp
# nano /etc/network/interfaces
Dans le fichier interfaces suivant :
auto eth0 iface eth0 inet static address 10.xxx.xxx.eee netmask 255.255.255.0 gateway 10.xxx.xxx.254 ############################## ##### UCARP Configuration ##### ucarp-vid 1 ucarp-vip 10.xxx.xxx.vvv ucarp-password btssio ucarp-advskew 1 ucarp-advbase 2 ucarp-master no # Interface Carp en tant qu'alias de eth0 iface eth0:ucarp inet static address 10.xxx.xxx.vvv netmask 255.255.255.0
# service networking restart
L’identifiant Virtual Host ID. C’est un numéro unique utilisé pour identifier le groupe de redondance parmi les autres groupes, et pour distinguer les différents groupes sur un même réseau. Les valeurs acceptables vont de 1 à 255. Elles doivent être identiques sur chacun des membres du groupe.
Virtual IP est l’adresse virtuelle que ce partagerons le maitre et l’esclave.
Le mot de passe d’authentification à utiliser lors de la communication avec d’autres hôtes CARP dans le même groupe de redondance. Ce mot de passe doit être partagé entre tous les membres du groupe.
Ce paramètre optionnel spécifie le nombre de secondes qui s’écoule entre chaque annonce CARP. La valeur par défaut est 1 seconde. Les valeurs acceptables sont de 1 à 255.
Ce paramètre optionnel spécifie le biais à introduire au niveau de advbase lors de l’envoi d’annonces CARP. En manipulant advskew, l’hôte maître CARP peut être choisi. Plus grand est ce nombre, moindres sont les chances pour que l’hôte soit retenu lorsqu’un maître est choisi. La valeur par défaut est 0. Les valeurs acceptables sont de 1 à 254.
Pour visualisez les échanges entre serveurs, vous allez capturer les trames qui circulent sur le réseau avec l'outil tcpdump
# apt-get install tcpdump
# tcpdump -i eth0 vrrp
Une trame de ce type sera envoyée toutes les 1 seconde (champ intvl) avec la priorité 1 (priorité maximale) et le vrid 1 (correspondant à l’ID de failover, attention il doit être identique sur le maître et l’esclave).
Tout se passe bien la machine maître est en ligne.
# tcpdump -i eth0 vrrp
Vous visualisez les mêmes trames.
Le serveur Maître a émis une dernière trame à 13h10 et 37 secondes (adresse IP 10.xxx.xxx.195).
Le serveur Esclave a pris le relais à 13h10 et 41 secondes (adresse IP 10.xxx.xxx.196).
En regardant les interfaces du serveur Esclave, on peut constater que l'interface virtuelle est active.