Recherche de site Web

Comment configurer DRBD pour répliquer le stockage sur deux serveurs CentOS 7


Le DRBD (pour Distributed Replicated Block Device) est une solution de stockage répliqué distribuée, flexible et polyvalente pour Linux. Il reflète le contenu des périphériques de bloc tels que les disques durs, les partitions, les volumes logiques, etc. entre les serveurs. Cela implique une copie des données sur deux périphériques de stockage, de sorte qu'en cas de panne de l'un, les données de l'autre puissent être utilisées.

Vous pouvez y penser un peu comme une configuration réseau RAID 1 avec les disques mis en miroir sur les serveurs. Cependant, il fonctionne d'une manière très différente du RAID et même du RAID réseau.

À l'origine, DRBD était principalement utilisé dans les clusters informatiques à haute disponibilité (HA). Cependant, à partir de la version 9, il peut être utilisé pour déployer des solutions de stockage cloud.

Dans cet article, nous montrerons comment installer DRBD dans CentOS et démontrerons brièvement comment l'utiliser pour répliquer le stockage (partition) sur deux serveurs. C'est l'article parfait pour commencer à utiliser DRBD sous Linux.

Environnement de test

Pour les besoins de cet article, nous utilisons un cluster à deux nœuds pour cette configuration.

  • Nœud1 : 192.168.56.101 – tecmint.tecmint.lan
  • Nœud2 : 192.168.56.102 – serveur1.tecmint.lan

Étape 1 : Installation des packages DRBD

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.

DRBD peut être installé à partir des référentiels ELRepo ou EPEL. Commençons par importer la clé de signature du package ELRepo et activons le référentiel comme indiqué sur les deux nœuds.

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

Ensuite, nous pouvons installer le module du noyau DRBD et les utilitaires sur les deux nœuds en exécutant :

yum install -y kmod-drbd84 drbd84-utils

Si SELinux est activé, vous devez modifier les politiques pour exempter les processus DRBD du contrôle SELinux.

semanage permissive -a drbd_t

De plus, si votre système dispose d'un pare-feu activé (firewalld), vous devez ajouter le port DRBD 7789 dans le pare-feu pour permettre la synchronisation des données entre les deux nœuds.

Exécutez ces commandes sur 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 --reload

Exécutez ensuite ces commandes sur 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 de niveau inférieur

Maintenant que DRBD est installé sur les deux nœuds du cluster, nous devons préparer une zone de stockage de taille à peu près identique sur les deux nœuds. Il peut s'agir d'une partition de disque dur (ou d'un disque dur physique complet), d'un périphérique RAID logiciel, d'un volume logique LVM ou de tout autre type de périphérique bloc trouvé sur votre système.

Pour les besoins de cet article, nous allons créer un périphérique de bloc factice de taille 2 Go à l'aide de la commande dd.

 
dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

Nous supposerons qu'il s'agit d'une partition inutilisée (/dev/sdb1) sur un deuxième périphérique bloc (/dev/sdb) attaché aux deux nœuds.

Étape 3 : configuration de DRBD

Le fichier de configuration principal de DRBD se trouve dans /etc/drbd.conf et des fichiers de configuration supplémentaires peuvent être trouvés 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 globales et communes de la configuration DRBD et nous pouvons définir des ressources dans .res.

Faisons une sauvegarde du fichier d'origine sur les deux nœuds, puis ouvrons un nouveau fichier pour le modifier (utilisez un é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.

Faisons brièvement la lumière sur la ligne protocole C. DRBD prend en charge trois modes de réplication distincts (donc trois degrés de synchronicité de réplication) qui sont :

  • protocole A : protocole de réplication asynchrone ; il est le plus souvent utilisé dans les scénarios de réplication longue distance.
  • protocole B : protocole de réplication semi-synchrone, également appelé protocole synchrone de la mémoire.
  • protocole C : couramment utilisé pour les nœuds dans les réseaux à courte distance ; c'est de loin 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 votre déploiement : la protection et la latence. Et le débit, en revanche, est largement indépendant du protocole de réplication sélectionné.

Étape 4 : Ajout d'une ressource

Une ressource est le terme collectif qui fait référence à tous les aspects d'un ensemble de données répliquées particulier. Nous définirons notre ressource dans un fichier appelé /etc/drbd.d/test.res.

Ajoutez le contenu suivant au fichier, sur les deux nœuds (n'oubliez pas de remplacer les variables du contenu par les valeurs réelles de votre environnement).

Prenez note des noms d'hôte, nous devons spécifier le nom d'hôte du réseau qui peut être obtenu en exécutant 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ù :

  • on hostname : la section on indique l'hôte auquel les instructions de configuration ci-jointes s'appliquent.
  • test : est le nom de la nouvelle ressource.
  • device /dev/drbd0 : spécifie le nouveau périphérique de bloc virtuel géré par DRBD.
  • disk /dev/sdb1 : est la partition du périphérique de bloc qui est le périphérique de support du périphérique DRBD.
  • méta-disque : définit l'emplacement où DRBD stocke ses métadonnées. L'utilisation d'Internal signifie que DRBD stocke ses métadonnées sur le même périphérique physique de niveau inférieur que les données de production réelles.
  • adresse : spécifie l'adresse IP et le numéro de port du nœud concerné.

Notez également que si les options ont des valeurs égales sur les deux hôtes, vous pouvez les spécifier directement dans la section ressources.

Par exemple, la configuration ci-dessus peut être restructurée pour :

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 activation de la ressource

Pour interagir avec DRBD, nous utiliserons les outils d'administration suivants qui communiquent avec le module noyau afin de configurer et d'administrer les ressources DRBD :

  • drbdadm : un outil d'administration de haut niveau du DRBD.
  • drbdsetup : un outil d'administration de niveau inférieur permettant de connecter des périphériques DRBD à leurs périphériques de bloc de support, de configurer des paires de périphériques DRBD pour refléter leurs périphériques de bloc de support et d'inspecter la configuration des périphériques DRBD en cours d'exécution.
  • Drbdmeta : est l'outil de gestion des métadonnées.

Après avoir ajouté toutes les configurations de ressources initiales, nous devons afficher la ressource sur les deux nœuds.

drbdadm create-md test

Ensuite, nous devons activer la ressource, qui attachera la ressource à son périphérique de support, puis définira les paramètres de réplication et connectera la ressource à son homologue :

drbdadm up test

Maintenant, si vous exécutez la commande lsblk, vous remarquerez que le périphérique/volume DRBD drbd0 est associé au périphérique de support /dev/sdb1 :

lsblk

Pour désactiver la ressource, exécutez :

drbdadm down test

Pour vérifier l'état de la ressource, exécutez la commande suivante (notez que l'état du disque Incohérent/Incohérent est attendu à ce stade) :

drbdadm status test
OR
drbdsetup status test --verbose --statistics 	#for  a more detailed status 

Étape 6 : Définir la ressource principale/source de synchronisation initiale du périphérique

A ce stade, le DRBD est désormais prêt à fonctionner. Nous devons maintenant lui indiquer quel nœud doit être utilisé comme source de synchronisation initiale des appareils.

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

Une fois la synchronisation terminée, l'état des deux disques doit être UpToDate.

Étape 7 : tester la configuration de DRBD

Enfin, nous devons tester si le périphérique DRBD fonctionnera bien pour le stockage de données répliquées. N'oubliez pas que nous avons utilisé un volume de disque vide, nous devons donc créer un système de fichiers sur le périphérique et le monter pour tester si nous pouvons l'utiliser pour le stockage de données répliquées.

Nous pouvons créer un système de fichiers sur l'appareil avec la commande suivante, sur le nœud où nous avons démarré la synchronisation complète initiale (qui a la ressource avec le rôle principal) :

mkfs -t ext4 /dev/drbd0 

Montez-le ensuite comme indiqué (vous pouvez donner au point de montage un nom approprié) :

mkdir -p /mnt/DRDB_PRI/
mount /dev/drbd0 /mnt/DRDB_PRI/

Copiez ou créez maintenant des fichiers dans le point de montage ci-dessus et faites une longue liste à l'aide de la commande ls :

cd /mnt/DRDB_PRI/
ls -l 

Ensuite, démontez le périphérique (assurez-vous que le montage n'est pas ouvert, changez de répertoire après l'avoir démonté pour éviter toute erreur) et modifiez le rôle du nœud de primaire à secondaire :

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

Sur l'autre nœud (qui a la ressource avec un rôle secondaire), rendez-le principal, puis montez le périphérique dessus et effectuez une longue liste du point de montage. Si l'installation fonctionne correctement, tous les fichiers stockés dans 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 

Pour plus d'informations, consultez les pages de manuel des outils d'administration de l'espace utilisateur :

man drbdadm
man drbdsetup
man drbdmeta
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 toutes les applications. Dans cet article, nous avons montré comment installer DRBD dans CentOS 7 et brièvement comment l'utiliser pour répliquer le stockage. N'hésitez pas à partager vos réflexions avec nous via le formulaire de commentaires ci-dessous.