Ceci est une ancienne révision du document !
DRBD
Procédure de mise en place
Mode Primaire/Secondaire
- Installation de drbd :
apt-get install drbd8-utils
- Créer le fichier de configuration de la ressource : /etc/drbd.d/r0.res
resource r0 { protocol C; handlers { } startup { degr-wfc-timeout 120; outdated-wfc-timeout 2; } disk { on-io-error detach; } net { after-sb-0pri discard-younger-primary; after-sb-1pri consensus; after-sb-2pri disconnect; rr-conflict disconnect; cram-hmac-alg "sha1"; shared-secret "mon_sercret"; } syncer { rate 90M; al-extents 257; } on srvvirt1 { device /dev/drbd0; disk /dev/vg_srv1/drbd0; address 172.20.0.6:7788; meta-disk internal; } on srvvirt2 { device /dev/drbd0; disk /dev/vg_srv2/drbd0; address 172.20.0.7:7788; meta-disk internal; } }
- Initialiser les devices via la commande :
drbdadm create-md r0
- Lancer drbd :
/etc/init.d/drbd restart
- Sur une des deux machines, forcer en primary :
drbdadm -- --overwrite-data-of-peer primary r0
Mode Primaire/Primaire
- Installation de drbd :
apt-get install drbd8-utils
- Créer le fichier de configuration de la ressource : /etc/drbd.d/r0.res
resource r0 { protocol C; handlers { } startup { degr-wfc-timeout 120; outdated-wfc-timeout 2; become-primary-on both; } disk { on-io-error detach; } net { after-sb-0pri discard-younger-primary; after-sb-1pri consensus; after-sb-2pri disconnect; rr-conflict disconnect; allow-two-primaries; cram-hmac-alg "sha1"; shared-secret "mon_sercret"; } syncer { rate 90M; al-extents 257; } on srvvirt1 { device /dev/drbd0; disk /dev/vg_srv1/drbd0; address 172.20.0.6:7788; meta-disk internal; } on srvvirt2 { device /dev/drbd0; disk /dev/vg_srv2/drbd0; address 172.20.0.7:7788; meta-disk internal; } }
- Initialiser les devices via la commande :
drbdadm create-md r0
- Lancer drbd :
/etc/init.d/drbd restart
Si vous êtes en prod vous pouvez utiliser la commande
drbdadmn up r0
- Sur une des deux machines, forcer en primary :
drbdadm -- --overwrite-data-of-peer primary r0
- La synchro commence, elle peut être suivie dans /proc/drbd. Une fois terminée, passer l'autre machine en primaire également :
drbdadm primary r0
Supprimer une ressource
drbdadmin remove /dev/drbd0
Trucs et astuces
Triggers
Exemple :
handlers { pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f"; pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f"; local-io-error "echo o > /proc/sysrq-trigger ; halt -f"; }
Reconnecter une ressource après incident
Lorsque la communication entre les serveurs a été interrompu et que les périphériques DRBD sont donc désynchronisé, il faut :
- décider quelle machine contient les données valides (à priori la dernière machine ayant été active)
- sur la machine contenant les données invalides, lancer les commandes :
drbdadm secondary r0 drbdadm -- --discard-my-data connect r0
- sur la machine contenant les données valides, lancer la commande :
drbdadm connect r0
La synchronisation des données démarre alors, on peut suivre son état via la comande :
cat /proc/drbd