DRBD

Un périphérique en mode bloc répliqué et distribué (Distributed Replicated Block Device ou DRBD) met en miroir des périphériques en mode bloc entre plusieurs hôtes. La réplication est transparente pour les autres applications sur les systèmes hôtes. N'importe quel périphérique en mode bloc (disque dur, partitions, périphériques RAID, volumes logiques, etc.) peut être mis en miroir.

Pour commencer à utiliser drbd, installez d'abord les paquets nécessaires. Dans un terminal, écrivez :

sudo apt install drbd8-utils

Si vous utilisez le noyau virtuel comme une partie d'une machine virtuelle, vous devrez compiler manuellement le module drbd. Il serait plus simple d'installer le paquet linux-server dans la machine virtuelle.

Cette section décrit le paramétrage de drbd pour répliquer une partition /srv distincte, avec un système de fichiers ext3, entre deux hôtes. La taille de partition n'est pas importante, mais les deux partitions doivent être de la même taille.

Configuration

Les deux hôtes dans cet exemple s'appellent drbd01 et drbd02. Ils auront besoin d'avoir la résolution d'adresse configurée soit par DNS, soit à l'aide du fichier /etc/hosts. Consultez Service de nom de domaine (DNS) pour de plus amples informations.

  • Pour configurer drbd, modifiez sur le premier hôte le fichier /etc/drbd.conf :

    global { usage-count no; }
    common { syncer { rate 100M; } }
    resource r0 {
            protocol C;
            startup {
                    wfc-timeout  15;
                    degr-wfc-timeout 60;
            }
            net {
                    cram-hmac-alg sha1;
                    shared-secret "secret";
            }
            on drbd01 {
                    device /dev/drbd0;
                    disk /dev/sdb1;
                    address 192.168.0.1:7788;
                    meta-disk internal;
            }
            on drbd02 {
                    device /dev/drbd0;
                    disk /dev/sdb1;
                    address 192.168.0.2:7788;
                    meta-disk internal;
            }
    } 
    

    Beaucoup d'autres options sont disponibles dans le fichier /etc/drbd.conf mais leur valeur par défaut seront suffisantes pour cet exemple.

  • Copiez maintenant /etc/drbd.conf vers le deuxième hôte :

    scp /etc/drbd.conf drbd02:~
    
  • Déplacez ensuite le fichier dans /etc sur drbd02 :

    sudo mv drbd.conf /etc/
    
  • Initialisez maintenant les méta données de stockage en utilisant drbdadm. Exécutez la commande suivante sur les deux serveurs :

    sudo drbdadm create-md r0
    
  • Lancez ensuite le démon drbd sur les deux hôtes :

    sudo systemctl start drbd.service
    
  • Sur l'hôte drbd01, ou celui que vous souhaitez définir comme hôte primaire, saisissez :

    sudo drbdadm -- --overwrite-data-of-peer primary all
    
  • Après l'exécution de la commande ci-dessus, les données commenceront à se synchroniser avec l'hôte secondaire. Pour suivre la progression, saisissez la commande suivante dans drbd02 :

    watch -n1 cat /proc/drbd
    

    Appuyez sur Ctrl+c pour arrêter la commande « watch ».

  • Pour finir, ajoutez un système de fichier à /dev/drbd0 et montez-le :

    sudo mkfs.ext3 /dev/drbd0
    sudo mount /dev/drbd0 /srv
    

Tests

Pour vérifier que les données se synchronisent réellement entre les deux hôtes, copiez quelques fichiers de drbd01, l'hôte primaire, sur /srv :

sudo cp -r /etc/default /srv

Démontez ensuite /srv :

sudo umount /srv

Rétrogradez le serveur primaire au rôle secondaire :

sudo drbdadm secondary r0

Maintenant, sur le serveur secondaire, le promouvoir au rôle principal :

sudo drbdadm primary r0

Enfin, montez la partition :

sudo mount /dev/drbd0 /srv

Avec ls, vous devriez voir le fichier /srv/default copié depuis l'ancien hôte primaire drbd01.

Références