Installer et configurer DRBD sous CentOS 6 — guide complet
Ce guide montre pas à pas comment compiler, installer, configurer et tester DRBD (Distributed Replicated Block Device) sur deux serveurs CentOS/Oracle Linux 6. Vous apprendrez à préparer les paquets, créer la partition DRBD, initialiser la ressource, établir le primaire/secondaire, effectuer des tests de bascule et résoudre les problèmes courants.
Importance rapide : DRBD réplique un périphérique bloc en temps réel pour fournir haute disponibilité et reprise après sinistre au niveau bloc.
Qu’est-ce que DRBD
DRBD signifie Distributed Replicated Block Device. C’est une solution logicielle de réplication de périphériques bloc (disques, partitions, volumes logiques) en mode shared-nothing. Elle est utilisée pour créer des copies synchrones ou asynchrones d’un disque entre deux nœuds et sert de base pour des scénarios de haute disponibilité (failover) ou de reprise après sinistre.
Définition rapide : DRBD réplique au niveau bloc, pas au niveau fichier. Cela implique que vous gérez le système de fichiers et le montage sur le nœud primaire.
Important : ce tutoriel suit l’exemple original basé sur DRBD 8.4.x et CentOS/Oracle Linux 6 (init SysV), et montre l’utilisation d’une partition dédiée (/dev/sdb1) pour la ressource DRBD.
Intentions de l’article et variantes de recherche
- Intention principale : comment installer DRBD sur CentOS 6
- Variantes liées : DRBD CentOS, configuration DRBD, DRBD failover, DRBD tutorial, drbdadm commands, drbd primary secondary
1. Préambule et architecture
Pour ce tutoriel, l’environnement utilisé est CentOS/Oracle Linux 6 (32 bits dans l’exemple). Les commandes sont exécutées en root. Il est nécessaire d’avoir un périphérique bloc libre (ici /dev/sdb1) sur chaque serveur.
Schéma d’architecture (extrait et conservé depuis l’original) :
+———————————–+ +—————————–+
| [ DRBD Server A ] | 192.168.43.101 | 192.168.43.102 | [ DRBD Server B ] |
| OEL641 +———————-+———————–+ OEL642 |
| folderA | | folderB |
+———————————–+ +—————————–+
Note : adaptez les adresses IP et les noms d’hôte à votre infrastructure.
Prérequis réseau et sécurité
- Ports : par défaut DRBD utilise le port TCP indiqué dans la configuration (7799 dans l’exemple). Ouvrez le port sur le firewall entre les deux nœuds.
- Temps : veillez à la synchronisation horaire (NTP) pour faciliter les diagnostics.
- SELinux : sur CentOS 6, si SELinux est en mode enforcing, planifiez des tests (certains environnements désactivent SELinux pour simplifier la mise en place initiale).
2. Phase d’installation des dépendances
Mettez à jour les systèmes et installez les paquets requis pour compiler DRBD :
yum -y update
yum -y install gcc make automake autoconf libxslt libxslt-devel flex rpm-build kernel-devel
Sortie attendue (extrait) :
Setting up Install Process
Package gcc-4.4.7-3.el6.i686 already installed and latest version
Package 1:make-3.81-20.el6.i686 already installed and latest version
Package automake-1.11.1-4.el6.noarch already installed and latest version
Package autoconf-2.63-5.1.el6.noarch already installed and latest version
Package libxslt-1.1.26-2.0.2.el6_3.1.i686 already installed and latest version
Package libxslt-devel-1.1.26-2.0.2.el6_3.1.i686 already installed and latest version
Package flex-2.5.35-8.el6.i686 already installed and latest version
Package rpm-build-4.8.0-32.el6.i686 already installed and latest version
Package kernel-devel-2.6.32-358.el6.i686 already installed and latest version
Exécutez ces étapes sur les deux serveurs.
3. Compilation et création des paquets RPM DRBD
Créez l’arborescence rpmbuild :
mkdir -p /root/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
Téléchargez les sources DRBD (liens origine) :
wget http://oss.linbit.com/drbd/drbd-utils-latest.tar.gz http://oss.linbit.com/drbd/8.4/drbd-8.4.7-1.tar.gz
Extrayez les archives :
tar -zxvf drbd-8.4.7-1.tar.gz
tar -zxvf drbd-utils-latest.tar.gz
Compilation du noyau DRBD (km-rpm) :
cd drbd-8.4.7-1
drbd-8.4.7-1]# make km-rpm
Après compilation, les RPMs apparaissent dans /root/rpmbuild/RPMS/i686 (extrait) :
You have now:
/root/rpmbuild/RPMS/i686/drbd-km-debuginfo-8.4.7-1.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-km-2.6.32_358.el6.i686-8.4.7-1.i686.rpm
Compilation et paquet drbd-utils :
cd ..
cd drbd-utils-8.9.6
./configure
make rpm
Sortie attendue (extrait) :
You have now:
/root/rpmbuild/RPMS/i686/drbd-utils-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-debuginfo-8.9.6-1.el6.i686.rpm
/root/rpmbuild/RPMS/i686/drbd-heartbeat-8.9.6-1.el6.i686.rpm
... (autres RPMs)
Installez les RPMs générés :
cd /root/rpmbuild/RPMS/i686
rpm -Uvh drbd-xen* drbd-udev* drbd-pacemaker* drbd-bash-completion* drbd-utils-*.rpm drbd-km-*.rpm drbd-8*
Progression d’installation (extrait) :
Preparing... ########################################### [100%]
1:drbd-utils ########################################### [ 13%]
2:drbd-xen ########################################### [ 25%]
...
8:drbd-km-debuginfo ########################################### [100%]
Répétez ces opérations sur le second serveur (OEL642 dans l’exemple).
Important : Conservez les RPMs construits si vous devez réinstaller ou déployer sur plusieurs nœuds.
4. Vérification initiale du module DRBD
Sur le nœud A (OEL641 dans l’exemple), vérifiez le nom d’hôte :
uname -n
Sortie :
OEL641
Chargez le module DRBD et vérifiez :
modprobe drbd
lsmod |grep drbd
Sortie attendue :
drbd 341783 0
libcrc32c 841 1 drbd
5. Création de la partition DRBD
Dans l’exemple, un nouveau disque /dev/sdb est utilisé pour créer /dev/sdb1 :
fdisk -l
Extrait :
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Partitionnement avec fdisk :
fdisk /dev/sdb
Exemple d’interaction fdisk :
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130):
Using default value 130
Sauvegardez la table et quittez :
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Vérifiez la nouvelle partition :
fdisk -l
Extrait :
Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ 83 Linux
Répétez sur le second nœud (OEL642).
6. Configuration DRBD
Créez le fichier de ressource DRBD (/etc/drbd.d/s1.res) sur les deux nœuds. Le contenu d’exemple :
cd /etc/drbd.d/
vi s1.res
Contenu du fichier s1.res (conserver tel quel) :
resource s1 {
on OEL641 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.43.101:7799;
meta-disk internal;
}
on OEL642 {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.43.102:7799;
meta-disk internal;
}
}
Copiez ce fichier sur le second serveur (exemple avec scp) :
scp /etc/drbd.d/s1.res root@OEL642:/etc/drbd.d/s1.res
Initialisez le métadisque DRBD sur chaque nœud :
drbdadm create-md s1
Sortie attendue :
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.
success
7. Démarrer DRBD et établir le primaire initial
Sur le nœud A (OEL641) :
/etc/init.d/drbd status
Extrait :
drbd driver loaded OK; device status:
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by root@OEL641, 2016-08-20 01:23:44
m:res cs ro ds p mounted fstype
[root@OEL641 ~]# /etc/init.d/drbd start
Starting DRBD resources: [
create res: s1
prepare disk: s1
adjust disk: s1
adjust net: s1
]
..........
***************************************************************
DRBD's startup script waits for the peer node(s) to appear.
- If this node was already a degraded cluster before the
reboot, the timeout is 0 seconds. [degr-wfc-timeout]
- If the peer was available before the reboot, the timeout
is 0 seconds. [wfc-timeout]
(These values are for resource 's1'; 0 sec -> wait forever)
To abort waiting enter 'yes' [ 26]:
.
Démarrez aussi le service DRBD sur le nœud B (OEL642). Une fois le pair détecté, le nœud A sortira de la phase d’attente.
Vérifiez le statut sur les deux nœuds :
/etc/init.d/drbd status
Exemple de sortie en cours de synchronisation :
drbd driver loaded OK; device status:
1:s1 Connected Secondary/Secondary Inconsistent/Inconsistent C
Pour définir le primaire initial (sur OEL641 dans l’exemple) en forçant l’écrasement des données du pair :
drbdadm -- --overwrite-data-of-peer primary s1
/etc/init.d/drbd status
Extrait indiquant le rôle :
1:s1 SyncSource Primary/Secondary UpToDate/Inconsistent C
Sur le nœud secondaire vous verrez le statut complémentaire :
1:s1 SyncTarget Secondary/Primary Inconsistent/UpToDate C
Observation : OEL641 est Primary, OEL642 est Secondary — le flux de réplication est établi.
8. Phase de test DRBD
Ces tests vérifient que les changements effectués sur le volume primaire sont répliqués sur le secondaire.
Sur le primaire (OEL641) formatez le device DRBD et montez-le :
mkfs.ext3 /dev/drbd1
Extrait :
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
Créez le point de montage et montez :
mkdir /folderA
mount /dev/drbd1 /folderA
df -h
Extrait :
Filesystem Size Used Avail Use% Mounted on
/dev/drbd1 1004M 18M 936M 2% /folderA
Vérifiez le contenu et créez un fichier test de 30 MB :
cd /folderA/
ls -h
dd if=/dev/zero of=/folderA/testfile bs=1M count=30
ls -lh
Sorties attendues montrant testfile de 30M.
Basculer le primaire vers secondaire sur OEL641 :
umount /folderA
drbdadm secondary s1
Vérifiez que les deux nœuds sont en Secondary/Secondary :
/etc/init.d/drbd status
Sur OEL642 passez en primaire et montez :
mkdir /folderB
drbdadm primary s1
mount /dev/drbd1 /folderB
ls -lh /folderB/
Vous devriez voir le fichier testfile et le répertoire lost+found, preuve que la réplication a fonctionné.
9. Vérifications, tests et critères d’acceptation
Critères d’acceptation
- Le service DRBD démarre sur les deux nœuds sans erreurs.
- Après initialisation et promotion, le périphérique /dev/drbd1 est montable en primaire et visible sur le secondaire après bascule.
- Les fichiers créés sur le primaire existent après promotion du secondaire.
Tests recommandés
- Test de création/suppression de fichiers sur le primaire puis promotion du secondaire.
- Test de coupure réseau entre nœuds et observation des comportements (split-brain si mal configuré).
- Test d’arrêt propre et redémarrage des services DRBD.
10. Dépannage courant et solutions
Symptôme : module drbd non chargé
- Commandes : modprobe drbd ; vérifier lsmod
- Vérifier que le paquet drbd-km compatible avec votre version de kernel a été installé.
Symptôme : attente indéfinie au démarrage (wfc-timeout = 0)
- Vérifiez la connectivité réseau (ping, tcpdump sur le port configuré).
- Assurez-vous que le fichier s1.res est identique sur les deux nœuds et que les adresses IP correspondent.
Symptôme : split-brain (les deux nœuds Primary)
- Ne pas monter les deux volumes en même temps.
- Résolution : utilisez drbdadm connect/disconnect, vérifiez les logs (/var/log/messages) et suivez la procédure DRBD pour résoudre le split-brain (choisir quel nœud garde les données, resynchroniser).
Conseils supplémentaires
- Effectuez toujours un backup avant de forcer l’écrasement des données du pair.
- Testez les procédures de bascule en environnement de pré-production.
11. Alternatives et architecture évolutive
Alternatives à DRBD
- Réplication au niveau fichier : rsync, GlusterFS, Ceph (réplication distribuée et stockage objet).
- Solutions commerciales de clustering ou SAN.
Quand DRBD n’est pas adapté
- Lorsque vous avez besoin d’une solution multi‑nœud (>2) avec distribution automatique des données, considérez Ceph ou Gluster.
- Si vous avez besoin de gestion fine des fichiers et réplication de niveau fichier, rsync ou des solutions de fichiers distribués sont plus simples.
Évolution possible
- Intégration DRBD + Pacemaker pour gestion automatique du failover et des ressources.
- Utilisation de LVM au-dessus de DRBD pour snapshots et gestion flexible des volumes.
12. Checklist d’implémentation (rôles)
Administrateur système
- Vérifier la compatibilité kernel / drbd-km
- Construire ou récupérer les RPMs
- Ouvrir les ports nécessaires
- Synchroniser les fichiers de configuration (/etc/drbd.d/*.res)
Opérations
- Créer les partitions physiques
- Initialiser drbdadm create-md
- Démarrer le service DRBD et tester la réplication
Sécurité
- Vérifier SELinux / iptables pour autoriser la réplication
- Restreindre l’accès root et scp entre nœuds
13. Mini-méthodologie de déploiement
- Préparer les paquets et l’arborescence rpmbuild.
- Compiler et installer DRBD sur chaque nœud.
- Préparer la partition physique (sdb1).
- Déployer le fichier de ressource identique sur tous les nœuds.
- drbdadm create-md s1 sur chaque nœud.
- Démarrer DRBD et promouvoir un primaire initial.
- Formater, monter et tester la réplication.
- Ajouter Pacemaker si orchestration automatique souhaitée.
14. Foire aux questions rapide
Q : Puis-je utiliser un LVM au-dessus de DRBD ? R : Oui, mais la recommandation courante est d’utiliser DRBD en dessous et LVM au-dessus si vous avez besoin de snapshots côté système de fichiers primaire.
Q : Peut-on monter le même système de fichiers sur les deux nœuds en même temps ? R : Non, à moins d’utiliser un système de fichiers cluster-aware (ex. OCFS2, GFS2). Avec ext3/4, il faut monter uniquement sur le primaire.
15. Résumé et bonnes pratiques
- DRBD réplique au niveau bloc et est idéal pour une paire de nœuds en HA.
- Toujours tester la procédure de bascule et les retours arrière avant production.
- Conservez les RPMs compilés et documentez la version du kernel utilisée.
Faits clés
- DRBD s’installe souvent via compilation si les packages binaires ne correspondent pas au kernel.
- Utilisez drbdadm pour la gestion des ressources et /etc/init.d/drbd pour contrôler le service sur CentOS 6.
Important : ne montez jamais le périphérique DRBD en lecture/écriture sur deux nœuds non-clusterisés en même temps — risque de corruption.
FINI — Vous avez réussi à installer et configurer DRBD sur CentOS 6
Matériaux similaires

Convertir vidéos avec VLC : tutoriel simple

Photo de profil Netflix personnalisée

Smartcards et CCID sur IPFire : guide d'intégration

OTRS 5 sur CentOS 7 — Installation rapide

Comment télécharger des titres Netflix pour les regarder hors ligne
