DRBD: Distributed Replicated Block Device

Jean Baptiste FAVRE

juin 2009

Introduction

DRBD est un système de réplication de disque au travers d'un réseau. Il permet de "recopier" le contenu d'un disque vers un serveur distant.

Ceci est particulièrement intéressant (et utilisé) dans les architectures hautement disponibles (Architectures "HA").

Principe

DRBD est un module noyau qui se comporte comme un driver de système de fichier. Toutes modification est "interceptée" et envoyée au miroir via le réseau.

Par défaut, DRBD fonctionne en mode Primaire / Secondaire. Ceci signifie que l'un des disques supporte les lectures / écritures, mais que le second n'accepte que les opérations en lecture.

Dans les dernières version de DRBD, il est possible d'obtenir des disques répliqués en mode primary / primary. Cela signifie que les 2 disques supportent les écritures. Encore faut-il un système de fichier qui le supporte. Ce n'est pas le cas de systèmes de fichiers "classiques" tels que EXT2/3/4, ReiserFS, ...

Néanmoins, ce système est intéressant dans le cas du fail-over IP: vous n'aurez pas besoin d'activer les écriture sur le disque de secours, c'est déjà fait ! Par exemple, DRBD en mode primary / primary est très intéressant pour la virtualisation avec, par exemple, Xen.

Configuration

Globalement, tout se passe dans le fichier /etc/drbd.conf sous GNU/Debian Linux.

Pour plus d'informations, voir: le guide utilisateur DRBD

La configuration suivante suppose:

Ceci définit le comportement global de DRBD:

Configuration de DRBD: /etc/drbd.conf
global {
	usage-count no;
	minor-count 16;
    # disable-ip-verification;
}

common {
	syncer {
		rate 33M;
	}
	protocol C;
}

Pour chaque ressource DRBD:

Configuration de la ressource DRBD: à ajouter dans /etc/drbd.conf
resource lv_test {
  on node1 {
    device /dev/drbd1;
    disk /dev/test_vg/lv_test;
    meta-disk internal;
    address 192.168.0.1:7801;
  }
  on node2 {
    device /dev/drbd1;
    disk /dev/test_vg/lv_test;
    meta-disk internal;
    address 192.168.0.0:7801;
  }
  net { 
    allow-two-primaries; 
    after-sb-0pri discard-zero-changes;  
    after-sb-1pri discard-secondary;  
    timeout 60;
    connect-int 10;
    ping-int 10;
    max-buffers 2048;
    max-epoch-size 2048;
  }
  startup { 
    become-primary-on both;
    wfc-timeout 120;
    degr-wfc-timeout 120;
  }
}

Ici, nous définissons le comportement de DRBD pour une ressource. DRBD va créer un device /dev/drbd1 qui s'appuiera sur /dev/test_vg/lv_test

La réplication s'eefectuera entre le node1 (IP 192.168.0.1:7801) et le node2 (IP 192.168.0.0:7801)

Résumé des principales commandes

Une fois la ressource définie, voici les commandes à exécuter sur les nodes:

Commandes à exécuter sur chaque node Xen
drbdadm create-md lv_test
drbdadm attach lv_test
drbdadm syncer lv_test
drbdadm connect lv_test
Commandes à exécuter sur le noeud défini pour être primaire de la ressource DRBD
drbdadm -- --overwrite-data-of-peer primary lv_test

Une fois la synchro terminée, on peut activer le mode primary/primary sur le noeud secondaire.

Activation du mode primary/primary sur le node secondaire
drbdadm primary lv_test

À chaque étape, à partir du moment où DRBD est actif, vous pouvez contrôler l'état de DRBD.

Exemple de contrôle de DRBD
cat /proc/drbd
version: 8.0.14 (api:86/proto:86)
GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33

 1: cs:Connected st:Primary/Primary ds:UpToDate/UpToDate C r---
    ns:102684032 nr:483328 dw:103167360 dr:25266000 al:5386 bm:116 lo:0 pe:0 ua:0 ap:0
	resync: used:0/61 hits:30150 misses:58 starving:0 dirty:0 changed:58
	act_log: used:0/127 hits:25665622 misses:5577 starving:0 dirty:191 changed:5386

Voilà, notre "disque" répliqué est prêt. À partir d'ici, il n'y a plus de primaire ou de secondaire. Il y a 2 noeud DRBD primaires ! Le premier qui écrit gagne ;-)

Format

Ce document est disponible aux formats suivants:

À propos de Jean Baptiste FAVRE

Je suis responsable d'exploitation dans le domaine de l'hébergement. Je travaille, entre autres, sur la virtualisation et l'amélioration des performances web. De temps en temps, j'arrive à décrocher de mon clavier pour lire un bon bouquin en écoutant de la musique.

License

Creative Commons License Cette publication est publiée sous contrat Creative Common by-nc-sa

Valid XHTML 1.0 Strict |  Valid CSS |  contrat Creative Common by-nc-sa

Table des matières

  1. Introduction
  2. Principe
  3. Configuration
  4. Résumé des principales commandes
  5. Format
  6. À propos ...
  7. License