logo université de Strasbourg logo CNRS logo INSA Strasbourg logo ENGEES

Service informatique

Drbd

De Service informatique
Aller à la navigation Aller à la recherche

Introduction

DRBD (Distributed Replicated Block Device) est un outil qui permet de synchroniser (par réplication) des périphériques de stockage (disque dur, partition, volume logique, etc.) entre deux nœuds via le réseau. Pour simplifier, il s'apparente à du RAID-1 sur IP. Quand une écriture a lieu sur le disque du serveur maître, l'écriture est simultanément réalisée sur le serveur esclave. La synchronisation est faite au niveau de la partition.

À l'heure où les serveurs d'entreprises doivent stocker un volume croissant de données et assurer une haute disponibilité, il est nécessaire d'imaginer des systèmes de mirroring (miroir) autres que simplement sur des disques durs.

La redondance de disques durs (RAID-1, RAID-5) permet déjà d'avoir une bonne résistance aux pannes d'un disque (ou plusieurs si on est en RAID-5). Cependant, si c'est la machine qui tombe (le processeur, l'alimentation, le contrôleur de disque, etc.), on n'a aucun moyen pour relancer le tout rapidement sans perte de données.

drbd permet de mettre en œuvre une solution de RAID-1 au travers du réseau. C'est-à-dire que sur deux serveurs, on a une partition par serveur qui est à tout moment une copie exacte d'une partition de l'autre serveur. C'est un mirroring (miroir) de partitions à travers une interface réseau.

À DRBD, il convient de rajouter un outil comme Heartbeat ou Pacemaker qui gère la haute disponibilité de services qui peuvent être fournis par plusieurs serveurs (2 au minimum).

Fonctionnalité

  • Gestion de 2 noeuds maximum (La gestion de n noeuds est prévu pour la version 9.x voir la roadmap).
  • Synchronisation en temps réel : elle se fait à la volée, pendant que les données sont modifiées.
  • Utilisation transparente : les applications, qui enregistrent leurs données sur le périphérique de stockage répliqué, le font sans même savoir qu'il s'agit d'une unité de stockage spéciale.

Plusieurs mode de synchronisation

  • Fonctionnement asynchrone (mode A), les opérations d'écriture en local sur le nœud principal sont considéré comme achevées dès que l'écriture sur le disque local a eu lieu,
  • Fonctionnement semi-synchrone (mode B) les opérations d'écriture en local sur le nœud principal sont considérées comme achevées dès que l'écriture sur le disque local a eu lieu, et le paquet de réplication a atteint les nœuds pairs.
  • En fonctionnement synchrone (mode C), les opérations d'écriture en local sur le nœud principal sont considérées comme achevées lorsque que les écritures sur disque local et le disque distant ont été confirmées.

Le protocole C étant le mode conseillé par la documentation officielle

Installation

  • paquet drbd8-utils
  • Fichier de configuration /etc/drbd.conf

LSIIT

L'installation de drbd sur les servers lsiit-s1 et lsiit-s2 se fait automatiquement via cfengine3

Il y a un lien dédié entre les 2 machines pour drbd

lsiit-s1

allow-hotplug eth1
iface eth1 inet static
       address 192.168.91.231
       netmask 255.255.255.0
       network 192.168.91.0
       broadcast 192.168.91.255

lsiit-s2

allow-hotplug eth1
iface eth1 inet static
       address 192.168.91.232
       netmask 255.255.255.0
       network 192.168.91.0
       broadcast 192.168.91.255

Utilisation

  • cat /proc/drbd

Fichier de configuration

/etc/drbd.conf

resource vz3 {

 protocol C;  # protocole d'acquittement

 net {
   cram-hmac-alg sha1;
   shared-secret "2t0411lF64t4nm0td2P6ss2!";
   allow-two-primaries;
 }

 startup {
  wfc-timeout 240;    # Au démarrage du noeud, on attend (cela bloque le démarrage) le noeud distant pendant 4 minutes.
  degr-wfc-timeout 240;
  become-primary-on both;
 }


 syncer {
   rate 700000K;  # On ne limite pas la vitesse de synchronisation.
   al-extents 257;
 }

 on lsiit-s1 {
      device     /dev/drbd3;
      disk       /dev/sda3;
      address    192.168.91.231:7783;
      meta-disk  internal;
 }
 on lsiit-s2 {
      device     /dev/drbd3;
      disk       /dev/sda3;
      address    192.168.91.232:7783;
      meta-disk  internal;
 }
}
 
resource vz4 {
  
 protocol C;  # protocole d'acquittement
 net {
   cram-hmac-alg sha1;
   shared-secret "2t0411lF64t4nm0td2P6ss2!";
   allow-two-primaries;
 }

 startup {
  wfc-timeout 240;    # Au démarrage du noeud, on attend (cela bloque le démarrage) le noeud distant pendant 4 minutes.
  degr-wfc-timeout 240;
  become-primary-on both;
 }

 syncer {
   rate 700000K;  # On ne limite pas la vitesse de synchronisation.
   al-extents 257;
 }

 on lsiit-s1 {
      device     /dev/drbd4;
      disk       /dev/sda4;
      address    192.168.91.231:7784;
      meta-disk  internal;
 }
 on lsiit-s2 {
      device     /dev/drbd4;
      disk       /dev/sda4;
      address    192.168.91.232:7784;
      meta-disk  internal;
 }
}

DRBD Management Console

  • cf: [oss.linbit.com/drbd-mc/]
  • Documentation offcielle: [www.drbd.org/docs/about/]

à Faire

  • cf chaque ligne du fichier de configuration
  • chercher articles
  • voir drbd-mc

Liens

  • help.ubuntu.com/10.04/serverguide/C/drbd.html
  • doc.ubuntu-fr.org/tutoriel/mirroring_sur_deux_serveurs
  • www.drbd.org/
  • www.drbd.org/users-guide-emb/ch-configure.html
  • www.drbd.org/users-guide-emb/p-work.html
  • doc.ubuntu-fr.org/drbd