:PROPERTIES:
:ID:       34ceb92e-c507-4c61-9c6a-51501b80f054
:mtime:    20220525221941
:ctime:    20220525214257
:END:
#+title: DRBD

* Introduction
DRBD :
 * *Distributed Replicated Block Device* en anglais, périphérique en mode bloc répliqué et distribué en français,
 * Architecture de stockage distribuée pour GNU/Linux,
 * Permet la réplication de périphériques de bloc (disques, partitions, volumes logiques etc.) entre des serveurs,
 * Open source et support commercial,
 * Est composé d'un module noyau et d'outils d'administration en /user space/,
 * peut être utilisé aussi bien en dessous qu'au-dessus de la pile de Linux LVM,
 * Support de la répartition de charge depuis la version 8,
 * Réplication entre 2 serveurs, plus à partir de la version 9.
 * Peut être intégré à un cluster ([[id:012e07b1-e12a-46e9-9a26-a93cde8b92ce][Pacemaker]] par exemple),
 * Est intégré au projet [[http://www.linux-ha.org/wiki/Main_Page][Linux HA]].

#+DOWNLOADED: https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Drbd-arch.png/640px-Drbd-arch.png @ 2022-05-25 22:06:08
#+ATTR_ORG: :width 500
[[file:Introduction/640px-Drbd-arch_2022-05-25_22-06-08.png]]
 
* Réplication de données
La réplication des données est réalisée :
 * En *temps réel* et *en permanence* : pendant que les applications modifient les données présentes sur le /block device/,
 * De façon *transparente* (réplication au niveau /block device/) : les applications n'ont pas conscience que ces
   données sont stockées et répliquées,
 * De façon synchrone ou asynchrone :
   * *Synchrone* : l'écriture sur le /block device/ entraine la mise à jour sur l'ensemble des serveurs avant la
     notification de fin d'écriture,
   * *Asynchrone* : la notification de fin d'écriture est réalisée avant la réplication de  la données sur les autres
     serveurs.

* Principes de fonctionnement
 * DRBD ajoute une couche logique de /block device/ (conventionnellement nommée /dev/drbdX, ou X est le numéro de périph. mineur),
 * Les écritures sur le noeud primaire sont transférées sur le /block device/ et propagées au noeud secondaire pour que
   celui-ci transfère les données à son /block device/,
 * Les lectures sont effectées localement.

 * En cas de défaillance du nœud primaire :
   * Un orchestrateur promeut le nœud /slave/ dans un état /master/,
   * Quand l'ancien nœud /master/, précédemment défaillant, revient, le système peut ou non l'élever au rôle de
     /master/, après une synchronisation des données du périphérique.
   * L'algorithme de synchronisation de DRBD est efficace : *seuls les blocs qui ont changé durant la panne doivent être
     resynchronisés*, plutôt que le périphérique dans son entièreté.

* Les outils
** drbdadm
Outil d'administration de haut niveau de DRBD. Il utilise le fichier de config ~/etc/drbd.conf~ et sert d'interface avec
les outils suivants.
*** Création d'une ressource (à faire sur chacun des serveurs)
#+BEGIN_SRC shell :results output
drbdadm create-md <resource> 
modprobe drbd
drbdadm up <resource>
#+END_SRC
*** Pour forcer un serveur à passer /master/ (suite à un /split-brain/ par exemple)
L'autre server devenant alors /slave/ et devant synchroniser ses données avec celles du nouveau maitre :
#+BEGIN_SRC shell :results output
drbdadm -- --overwrite-data-of-peer primary <resource> 
#+END_SRC
** drbdsetup
Outil du configuration du module DRBD après son chargement.
** drbdmeta
Outil permettant la manipulation des métadonnées des structures de DRBD.

* Références
 * [[https://fr.wikipedia.org/wiki/DRBD][Drbd - Wikipedia]]
 * [[https://fr-wiki.ikoula.com/fr/Mise_en_place_de_DRBD_en_mode_primaire-secondaire][Mise en place de DRBD en mode primaire/secondaire - wiki-ikoula]]
