Table des matières

Haute disponibilité MySQL avec UCARP

Présentation

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.

Fonctionnement du protocole

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.

Interface réseau virtuelle

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 :

GroupeAdresse IP virtuelleEtudiants
0110.xxx.xxx.62
0210.xxx.xxx.65
0310.xxx.xxx.68
0410.xxx.xxx.71
0510.xxx.xxx.74
0610.xxx.xxx.77
0710.xxx.xxx.80
0810.xxx.xxx.83
0910.xxx.xxx.86
1010.xxx.xxx.89
1110.xxx.xxx.92
1210.xxx.xxx.95
1310.xxx.xxx.98

Configuration des interfaces réseau du serveur Maître

# 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

Configuration des interfaces réseau du serveur Esclave

# 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

Quelques précisions

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.

Simulation de failover

Test simple du failover

Visualisation des échanges sur le réseau

Pour visualisez les échanges entre serveurs, vous allez capturer les trames qui circulent sur le réseau avec l'outil tcpdump

Installer tcpdump

# apt-get install tcpdump

Informations pour exemple de simulation

Capture de trame sur le serveur Maître

# 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.

Capture de trame sur le serveur Esclave

# 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.

Retour au dossier sur la réplication des données ...