Installation et configuration de DRBD
Contents
1 Introduction
DRBD est un systeme permettant de faire du RAID1 logiciel à travers un réseau local.
cela permet par exemple de faire de la haute disponibilité et du partage de ressources sur un cluster sans baie de disque.
Ici nous installerons DRBD8, le but étant par la suite de pouvoir implementer un Filesystem cluster (voir doc sur OCFS2) ce qui n'est pas géré sur DRBD7.
Pour cela nous utilisons les packages DRBD8 des depots debian. Nous travaillerons ici sur un cluster de 2 noeuds.
2 Installation
pour commencer, installer les paquets suivant :
aptitude |
aptitude install drbd8-utils |
Puis nous allons charger le module et le mettre en persistant (pour les prochains reboot) :
modprobe drbd echo "drbd" >> /etc/modules |
3 Configuration
3.1 drbd.conf
Le fichier drbd.conf est plutôt pas mal de base car il permet d'écrire une configuration extensible :
/etc/drbd.conf |
# You can find an example in /usr/share/doc/drbd.../drbd.conf.example include "drbd.d/global_common.conf"; include "drbd.d/*.res"; |
Je n'y ai donc pas touché.
3.2 global_common.conf
Ce fichier est donc le fichier par défaut, qui ne peut contenir des configurations pour vos hosts, mais qui également permet d'avoir une configuration global pour vos différentes configurations DRBD (section common) :
J'ai mis en commentaire toutes mes modifications.
3.3 r0.res
Maintenant nous allons créer un fichier pour ajouter notre ressource 0 :
4 Synchronisation
Nous allons avoir besoin de lancer la première synchro maintenant.
Sur les 2 noeuds, lancez cette commande :
drbdadm |
drbdadm create-md r0 |
Toujours sur les 2 noeuds, lancez cette commande pour activer la ressource :
drbdadm |
drbdadm up r0 |
4.1 Node 1
Nous allons demander au premier node de faire la première réplication bloc par bloc :
drbdadm |
drbdadm -- --overwrite-data-of-peer primary r0 |
Il va ensuite falloir attendre la fin de la syncro avant de passer à la suite :
L'affichage de /proc/drbd permet de voir l'état de réplication. A la fin, vous devriez avoir quelque chose comme ceci :
4.2 Node 2
Si l'on veut faire du dual master, il faut que cette option soit active dans la configuration :
/etc/drbd.d/r0.res |
resource <resource> startup { become-primary-on both; } net { protocol C; allow-two-primaries yes; } } |
Maintenant nous pouvons activer l'autre noeud en tant que primaire :
drbdadm |
drbdadm primary r0 |
Une fois la synchronisation terminée, DRBD est installé et correctement configuré.
Il faut maintenant formater le device /dev/drbd0 avec un system de fichier, par exemple ext3 pour de l'actif/passif ou de l'OCFS2 par exemple si vous voulez de l'actif/actif (il en existe d'autres tel que le GFS2).
mkfs |
mkfs.ext3 /dev/drbd0 ou mkfs.ocfs2 /dev/drbd0 |
Puis montez le volume dans un dossier pour accéder aux données :
mount |
mount /dev/drbd0 /mnt/data |
Seul un noeud primaire peut monter et acceder aux données du volume DRBD.
Lorsque DRBD fonctionne avec HeartBeat en mode CRM, si le noeud primaire tombe, le cluster est capable de basculer le noeud secondaire en primaire.
Lorsque l'ancien primaire est à nouveau "UP" il se synchronisera et deviendra à son tour un secondaire.
5 Utilisation
5.1 Passer en master
Pour passer tous les volumes en primaire :
drbdadm |
drbdadm primary all |
Notes |
Remplacez all par le nom de votre volume si vous ne souhaitez opérer que sur un seul |
5.2 Passer en slave
Pour passer un volume en slave :
drbdadm |
drbdadm secondary all |
5.3 Synchronisation manuelle
Pour démarrer une synchronisation manuelle (va invalider toutes vos données) :
drbdadm |
drbdadm invalidate all |
Pour faire la même chose mais sur les autres noeuds :
drbdadm |
drbdadm invalidate_remote all |
6 FAQ
6.1 Ma syncro ne fonctionne pas, j'ai : Secondary/Unknown
Si vous avez ce type de message :
Il faut que vous vérifiez si les machines sont bien configurées au niveau de vos ressources et également qu'elles arrivent bien à se telnetter (firewalling etc...)
6.2 Que faire en cas de split brain ?
Si vous vous retrouvez dans ce cas de figure :
cat |
> cat /proc/drbd primary/unknown ou secondary/unknown |
1. Démontez les volumes drbd
2. Sur le primaire :
drbdadm |
drbdadm connect all |
3. Sur le secondaire (cela va détruire toutes les données et les réimporter depuis le master)
drbdadm -- --discard-my-data connect all |
7 Ressources
Documentation on Heartbeat2 Xen cluster with drbd8 and OCFS2
DRBD 8 3 Third Node Replication
DRBD advanced usages