DRBD : Comment configurer un RAID en sur Debian 10

DRBD (Distributed Replicated Block Device) est un système de stockage distribué libre sous licence GPL.
Il permet de répliquer des blocs (disques, partitions, volumes LVM…) entre plusieurs serveurs afin de faire du RAID par le réseau.
Par exemple, mettre en place un RAID1 à travers TCP/IP.

Avec DRBD, vous pouvez mettre en miroir des disques via le réseau entre plusieurs hôtes.
Un périphérique bloc est le type de périphérique utilisé pour représenter le stockage dans le noyau Linux.
Tous les périphériques de disque physique présentent une interface de périphérique bloc.
DRBD reflète une partition entre deux machines permettant à une seule d'entre elles de la monter à la fois. La réplication est transparente pour les autres applications sur les systèmes hôtes.
Tous les disques durs de périphérique bloc, partitions, périphériques RAID, volumes logiques peuvent être mis en miroir.
Ainsi vous pouvez créer un NAS (Network Attached Storage) à haute disponibilité (HA).
Enfin DRBD rend actuellement en charge toutes les principales versions de Linux et est fourni dans plusieurs distributions Linux majeures (Ubuntu, Fedora, Debian, …).

Ce tutoriel vous guide pour mettre en place DRBD entre plusieurs serveurs pour créer un RAID via le réseau sur Debian 10.

DRBD : Comment configurer un réseau RAID sur Debian 10

Introduction à DRBD

DRBD donne la possibilité de créer un RAID1 par le réseau, par exemple pour faire office de NAS mais avec quelques limitations.
Deux modes principaux sont possibles :

  • Primaire simple : un seul membre du groupe joue le rôle primaire et vous ne pouvez monter la partition virtuelle DRBD que sur un membre
  • Primaire double : deux membres du groupe peuvent jouer le rôle du serveur primaire mais il faut utiliser un système de fichiers tel GFS, OCFS2

Quelques concernant la redondance de disque et RAID :

DRBD est implémenté en tant que module du noyau Linux. Il constitue précisément un pilote pour un périphérique de bloc virtuel, il est donc établi juste au bas de la pile d’E / S d’un système.
Le pilote du noyau DRBD présente des périphériques de bloc virtuels au système. C'est un élément important du fonctionnement de DRBD.
Il reflète les données écrites sur un (ou plusieurs) pair (s). En mode synchrone, il signalera l'achèvement d'une demande d'écriture après avoir reçu les événements d'achèvement du périphérique de stockage local et du ou des homologues.
Plan de données.

Schéma de fonctionnement de DRBD
source https://fr.wikipedia.org/wiki/DRBD

Plusieurs commandes sont fournis pour gérer son stockage DRBD :

drbdsetup est l'outil de bas niveau qui interagit avec le pilote du noyau DRBD. Il gère les objets DRBD (ressources, connexions, appareils, chemins). Il peut modifier toutes les propriétés et vider la configuration active du pilote du noyau. Il affiche le statut et les mises à jour de statut.
drbdmeta

drbdmeta est utilisé pour préparer des méta-données sur les périphériques blocs avant de pouvoir les utiliser pour DRBD. Vous pouvez également l'utiliser pour vider et inspecter ces méta-données. Il est comparable à mkfs ou pvcreate.
drbdadm

drbdadm traite les fichiers de configuration déclaratifs de configuration. Ces fichiers sont identiques sur tous les nœuds d'une installation. drbdadm extrait les informations nécessaires pour l'hôte sur lequel il est appelé.

DRBR : installer un RAID par le réseau sur Debian 10

Pré-requis

Les serveurs communiquent entre eux, ainsi, il faut que les déclarations DNS du fichier de configuration correspondent bien au nom des machines.
Si e n'est pas le cas, lors de l'initialisation du RAID, le message suivant va s'afficher : not defined in your config (for this host).

Vous pouvez donc modifier le fichier HOSTS de Linux (/etc/hosts).
Par exemple :

192.168.1.10 www
192.168.1.11 www

Ensuite préparez les partitions de disque à utiliser sur chaque serveur Linux.
Il peut s'agir de partition de disque physique ou de partition logique LVM (Logical Volume Manager).
Vous pouvez utiliser des outils de partitionnement de disque tel que gfdisk :

Installation et configuration

On installe le paquet DRBD pour Debian avec apt :

apt install drbd-utils

Puis on créé le fichier de configuration /etc/drbd.d/raid_www.res :

vim /etc/drbd.d/raid_www.res

Bien nommer le fichier en .res pour qu'il se charge.

global {
    usage-count yes;
}
common {
    protocol C;
}

resource r0 {
  on www {
    device    /dev/drbd0;
    disk      /dev/md2;
    address   51.210.xxx:7789;
    meta-disk internal;
 }
 on www2 {
    device    /dev/drbd0;
    disk      /dev/md2;
    address   51.91.xxx:7789;
    meta-disk internal;
 }
}

Les paramètres du fichier de configuration DRBD :

  • Dans common, le protocole utilisé pour la réplication :
    • Protocole A - Protocole de réplication asynchrone. Les opérations d'écriture locale sur le nœud principal sont considérées comme terminées dès que l'écriture sur le disque local est terminée et que le paquet de réplication a été placé dans le tampon d'envoi TCP local. En cas de basculement forcé, une perte de données peut se produire. Les données sur le nœud de secours sont cohérentes après le basculement, cependant, les mises à jour les plus récentes effectuées avant le crash peuvent être perdues. Le protocole A est le plus souvent utilisé dans les scénarios de réplication longue distance. Lorsqu'il est utilisé en combinaison avec DRBD Proxy, il constitue une solution efficace de reprise après sinistre. Voir Réplication longue distance avec DRBD Proxy pour plus d'informations.
    • Protocole B - Protocole de réplication synchrone de la mémoire (semi-synchrone). Les opérations d'écriture locale sur le nœud principal sont considérées comme terminées dès que l'écriture sur le disque local s'est produite et que le paquet de réplication a atteint le nœud homologue. Normalement, aucune écriture n'est perdue en cas de basculement forcé. Cependant, en cas de panne de courant simultanée sur les deux nœuds et de destruction simultanée et irréversible du magasin de données du primaire, les écritures les plus récentes effectuées sur le primaire peuvent être perdues.
    • Protocole C - Protocole de réplication synchrone. Les opérations d'écriture locale sur le nœud principal ne sont considérées comme terminées qu'après confirmation de l'écriture sur le disque local et distant. En conséquence, il est garanti que la perte d'un seul nœud n'entraînera aucune perte de données. La perte de données est, bien entendu, inévitable même avec ce protocole de réplication si les deux nœuds (ou leurs sous-systèmes de stockage) sont détruits de manière irréversible en même temps.
  • Ressource : le nom de la ressource, ici data. On peut en déclarer plusieurs.
  • la déclaration de la ressource est suivi par "on" est le nom de la machine qui définit l'emplacement de la ressource
  • Device: c'est le bloc DRBD avec le volume utilisé
  • Disk : le disque qui compose la ressources DRBD
  • Address : l'adresse pour se connecter au service DRBD

Reportez la configuration sur le second serveur afin que la configuration DRBD des deux serveurs soient identiques.
Par exemple en copiant le fichier par le réseau via SCP :

scp /etc/drbd.conf [email protected]<adresse serveur>:/etc/drbd.d

Initialiser les ressources DRBD avec drbdadm

La gestion du RAID se fait à l'aide de l'utilitaire drbdadm.
Initialisez les métadonnées. Sur chaque serveur, exécutez:

drbdadm create-md r0

Ensuite, sur les deux hôtes, démarrez le daemon drbd:

/etc/init.d/drbd start

Sur l'hôte dont vous souhaitez être le principal, saisissez ce qui suit:

drbdadm - –overwrite-data-of-peer primary all

Après avoir exécuté la commande ci-dessus, les données commenceront à se synchroniser avec l'hôte secondaire. Pour suivre la progression, entrez ce qui suit:

watch -n1 cat /proc/drbd

On peut aussi utiliser la commande drbd-overview :

# drbd-overview
42:data/0  SyncSource Primary/Secondary UpToDate/Inconsistent
[===&gt;…………….] sync'ed: 22.3% (254364/1211308)K
<h1>drbd-overview</h1>
42:data/0  Connected Primary/Secondary UpToDate/UpToDate

Pour arrêter de regarder la sortie, appuyez sur Ctrl + C.

Deux états possibles :

  • UpToDate/UpToDate : la ressources est à jour
  • Inconsistent/UpToDate : La ressource n'est pas à joru et en cours de mise à mise à jour

Maintenant que nous avons un DRBD fonctionnel. Il est temps de monter le périphérique de bloc DRBD sur un point de montage et de voir si la mise en miroir est correcte.

Pour cela, ajoutez un système de fichiers à /dev/drbd0 et montez-le, par exemple ici dans /home :

mkfs.ext4 /dev/drbd0
mount /dev/drbd0/ /home

Pour vérifier que les données se synchronisent réellement entre les hôtes, copiez certains fichiers sur le serveur principal, dans / home:

cp -r /etc/default/home

Ensuite, démontez /home:

umount /home/

Rétrogradez le serveur principal au rôle secondaire car DRBD met en miroir une partition entre deux machines permettant à un seul d'entre eux de le monter à la fois.

drbdadm secondaire drbd0

Maintenant, sur le serveur secondaire (www2), promouvez-le au rôle principal :

drbdadm primary drbd0

Enfin, montez la partition:

mount /dev/drbd0 /home

En utilisant la commande ls (list), vous devriez voir /home/default copié de l'ancien hôte principal www vers le www2 principal actuel.

Puis pour initialiser les métadonnées du bloc :

/etc/init.d/drbd restart
drbdadm create-md drbd0

Administrer DRBD

drbdadm offre plusieurs commandes utile pour administrer ses ressources DRBD.

Afficher l'état des ressources :

drbdadm dstate <ressource>

Plus de détails sur les ressources :

drbdsetup status r1 --verbose --statistics

Passer en primaire/secondaire

Voici comment passer une ressources en primaire/secondaire :

drbdadm primary <ressource>
drbdadm secondary <ressource>

Pour passer toutes les ressources en primaire ou secondaire :

drbdadm primary all
drbdadm secondary all

Afficher le rôle d'un serveur :

drbdadm role r0

Connecter/déconnecter une ressources :

drbdadm disconnect <ressource>
drbdadm connect <ressource>

Liens

Le RAID et DRBR sont des composants pour assurer la haute disponibilité d'un serveur WEB.
Plus de détails dans cet article :