La traduction de l'article a été préparée en prévision du lancement du cours .
DRBD (Distributed Replicated Block Device — dispositif de bloc répliqué distribué) est une solution de stockage de données distribuée, flexible et universellement répliquée pour Linux. Il reflète le contenu des dispositifs de bloc tels que les disques durs, les partitions, les volumes logiques, etc. entre les serveurs. Il crée des copies de données sur deux dispositifs de stockage afin qu'en cas de défaillance de l'un d'eux, les données sur le deuxième puissent être utilisées.
On peut dire que c'est quelque chose comme 1 avec des disques répliqués sur différents serveurs. Cependant, cela ne fonctionne pas exactement comme un RAID (même réseau).
À l'origine, DRBD était principalement utilisé dans des clusters informatiques à haute disponibilité (HA — high availability), mais depuis la version neuf, il peut être utilisé pour déployer des solutions de stockage cloud.
Dans cet article, nous allons vous montrer comment installer DRBD sur CentOS et démontrer brièvement comment l'utiliser pour la réplication de stockage (partition) sur deux serveurs. C'est l'article idéal pour commencer à travailler avec DRBD sous Linux.
Environnement de test
Nous allons utiliser un cluster à deux nœuds pour cette configuration.
- Nœud 1 : 192.168.56.101 – tecmint.tecmint.lan
- Nœud 2 : 192.168.56.102 – server1.tecmint.lan
Étape 1 : Installation des paquets DRBD
DRBD est implémenté comme un module du noyau Linux. Il représente un pilote pour un dispositif de bloc virtuel, donc il se situe en bas de la pile d'entrée-sortie du système.
DRBD peut être installé à partir d'ELRepo ou d'EPEL. Commençons par importer la clé de signature du paquet ELRepo et activer le dépôt sur les deux nœuds, comme indiqué ci-dessous.
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpmEnsuite, vous devez installer le module du noyau DRBD et les utilitaires sur les deux nœuds avec :
# yum install -y kmod-drbd84 drbd84-utilsSi SELinux est activé, vous devez configurer les politiques pour que les processus DRBD soient exemptés du contrôle de SELinux.
# semanage permissive -a drbd_t
De plus, si votre système dispose d'un pare-feu (firewalld), vous devez ajouter le port DRBD 7789 pour autoriser la synchronisation des données entre les deux nœuds.
Exécutez ces commandes pour le premier nœud :
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.102" port port="7789" protocol="tcp" accept'
# firewall-cmd --reloadEnsuite, exécutez ces commandes pour le deuxième nœud :
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
# firewall-cmd --reloadÉtape 2. Préparation du stockage bas niveau
Maintenant que nous avons installé DRBD sur les deux nœuds du cluster, nous devons préparer des espaces de stockage d'une taille à peu près égale. Cela peut être une partition de disque dur (ou un disque dur physique entier), un dispositif RAID logiciel, ou tout autre type de dispositif de bloc présent dans votre système.
Pour cet article, nous allons créer un dispositif de bloc de test d'une taille de 2 Go à l'aide de la commande dd.
# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024Supposons qu'il s'agit d'une partition inutilisée (/dev/sdb1) sur le second dispositif de bloc (/dev/sdb) connecté aux deux nœuds.
Étape 3. Configuration de DRBD
Le fichier de configuration principal de DRBD est /etc/drbd.conf, et les fichiers de configuration supplémentaires se trouvent dans le répertoire /etc/drbd.d.
Pour répliquer le stockage, nous devons ajouter les configurations nécessaires dans le fichier /etc/drbd.d/global_common.conf, qui contient les sections de configuration globales et communes de DRBD, et nous devons définir les ressources dans le .res fichiers.
Faisons une sauvegarde du fichier source sur les deux nœuds, puis ouvrons un nouveau fichier pour l'édition (utilisez l'éditeur de texte de votre choix).
# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
# vim /etc/drbd.d/global_common.conf Ajoutez les lignes suivantes dans les deux fichiers :
global {
usage-count yes;
}
common {
net {
protocol C;
}
}Enregistrez le fichier, puis fermez l'éditeur.
Arrêtons-nous un instant sur la ligne protocol C. DRBD prend en charge trois modes différents de réplication (c'est-à-dire trois niveaux de synchronisation de réplication), à savoir :
- protocol A : protocole de réplication asynchrone ; utilisé le plus souvent dans des scénarios de réplication à grande distance.
- protocol B : protocole de réplication semi-synchrone ou protocole de mémoire synchronique.
- protocol C : généralement utilisé pour des nœuds sur des réseaux de courte distance ; c'est sans aucun doute le protocole de réplication le plus couramment utilisé dans les configurations DRBD.
Important: Le choix du protocole de réplication influence deux facteurs de déploiement : la protection et la latence. En revanche, la bande passante n'est pas considérablement affectée par le protocole de réplication choisi.
Étape 4. Ajout de la ressource
Une ressource (Resource) est un terme englobant qui se réfère à tous les aspects d'un ensemble de données répliqués spécifique. Nous allons définir notre ressource dans le fichier /etc/drbd.d/test.res.
Ajoutez ce qui suit dans le fichier sur les deux nœuds (n'oubliez pas de remplacer les variables par les valeurs réelles de votre environnement).
Attention aux noms d'hôtes, nous devons spécifier le nom d'hôte réseau, que l'on peut obtenir avec la commande uname -n.
resource test {
on tecmint.tecmint.lan {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
address 192.168.56.101:7789;
}
on server1.tecmint.lan {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
address 192.168.56.102:7789;
}
}
}où :
- sur le nom d'hôte: la section on à laquelle l'instruction de configuration imbriquée se rapporte.
- test: c'est le nom de la nouvelle ressource.
- device /dev/drbd0: indique le nouveau périphérique de bloc virtuel géré par DRBD.
- disk /dev/sdb1: c'est la partition du périphérique de bloc qui est le périphérique de sauvegarde pour le périphérique DRBD.
- meta-disk: définit où DRBD stocke ses métadonnées. Internal signifie que DRBD stocke ses métadonnées sur le même périphérique physique bas niveau que ses données réelles en production.
- address: indique l'adresse IP et le numéro de port du nœud correspondant.
Notez également que si les paramètres des deux hôtes ont les mêmes valeurs, vous pouvez les indiquer directement dans la section des ressources.
Par exemple, la configuration ci-dessus peut être restructurée comme suit :
resource test {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
on tecmint.tecmint.lan {
address 192.168.56.101:7789;
}
on server1.tecmint.lan {
address 192.168.56.102:7789;
}
}Étape 5. Initialisation et démarrage de la ressource
Pour interagir avec DRBD, nous utiliserons les outils d'administration suivants (qui interagissent avec le module du noyau pour configurer et administrer les ressources DRBD) :
- drbdadm: outil d'administration de haut niveau pour DRBD.
- drbdsetup: outil d'administration de bas niveau pour connecter les périphériques DRBD à leurs périphériques de sauvegarde, configurer les ensembles de périphériques DRBD afin de refléter leurs périphériques de sauvegarde et vérifier la configuration des périphériques DRBD en cours d'exécution.
- Drbdmeta: outil de gestion des métadonnées.
Après avoir ajouté toutes les configurations initiales de la ressource, nous devons appeler la ressource sur les deux nœuds.
# drbdadm create-md test 
Initialisation du stockage des métadonnées
Ensuite, nous devons le démarrer, ce qui connectera la ressource à son périphérique de sauvegarde, puis définira les paramètres de réplication et connectera la ressource à son pair :
# drbdadm up test Maintenant, si vous exécutez la commande , vous remarquerez que le dispositif/volume DRBD drbd0 est associé au périphérique de sauvegarde /dev/sdb1:
# lsblk 
Liste des périphériques block
Pour désactiver la ressource, exécutez :
# drbdadm down testPour vérifier l'état de la ressource, exécutez la commande suivante (notez qu'à ce stade, l'état des disques est attendu) Incohérent/Incohérent):
# drbdadm status test
OR
# drbdsetup status test --verbose --statistics #for a more detailed status 
Vérification de l'état de la ressource sur
devices
Étape 6 : Configuration de la ressource principale / source de synchronisation initiale des périphériques
À ce stade, DRBD est déjà opérationnel. Nous devons maintenant indiquer quel nœud doit être utilisé comme source de synchronisation initiale des périphériques.
Exécutez la commande suivante sur un seul nœud pour démarrer la synchronisation complète initiale :
# drbdadm primary --force test
# drbdadm status test 
Définir le nœud principal comme périphérique initial
Après la synchronisation, l'état des deux disques doit être À jour.
Étape 7 : Tester la configuration DRBD
Enfin, nous devons vérifier si le périphérique DRBD fonctionnera comme prévu pour stocker les données répliquées. Rappelez-vous que nous avons utilisé un volume de disque vide, donc nous devons créer un système de fichiers sur le périphérique et le monter pour vérifier si nous pouvons l'utiliser pour stocker des données répliquées.
Nous devons créer un système de fichiers sur le périphérique en utilisant la commande suivante sur le nœud à partir duquel nous avons commencé la synchronisation complète initiale (où il y a une ressource avec le rôle principal) :
# mkfs -t ext4 /dev/drbd0 
Créons un système de fichiers sur le volume Drbd
Puis le monter comme indiqué (vous pouvez donner un nom approprié au point de montage) :
# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/
Maintenant, copiez ou créez des fichiers à l'emplacement de montage mentionné ci-dessus et faites une longue liste à l'aide de :
# cd /mnt/DRDB_PRI/
# ls -l 
Afficher la liste du contenu du volume principal Drbd
Ensuite, démontez le périphérique (assurez-vous que le montage n'est pas ouvert, changez de répertoire après le démontage pour éviter les erreurs) et changez le rôle du nœud de principal à secondaire :
# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary testL'autre nœud (où il y a une ressource avec le rôle secondaire) devenez primaire, puis connectez-vous au périphérique et exécutez une longue liste des points de montage. Si la configuration fonctionne correctement, tous les fichiers stockés sur le volume devraient être là :
# drbdadm primary test
# mkdir -p /mnt/DRDB_SEC/
# mount /dev/drbd0 /mnt/DRDB_SEC/
# cd /mnt/DRDB_SEC/
# ls -l 
Vérification de la configuration DRBD fonctionnant sur le nœud secondaire.
Pour plus d'informations, veuillez consulter les pages d'aide des outils d'administration :
# man drbdadm
# man drbdsetup
# man drbdmetaAide : .
Résumé
DRBD est extrêmement flexible et polyvalent, ce qui en fait une solution de réplication de stockage adaptée à l'ajout de haute disponibilité à presque toute application. Dans cet article, nous avons montré comment installer DRBD sur CentOS 7 et avons brièvement démontré comment l'utiliser pour la réplication de stockage. N'hésitez pas à partager vos réflexions avec nous via le formulaire de rétroaction ci-dessous.
Source : habr.com
