72 lines
3.7 KiB
Org Mode
72 lines
3.7 KiB
Org Mode
: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]]
|