informatique:systeme:ha:drbd

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
informatique:systeme:ha:drbd [2010/02/15 15:59] – Reprise ancien Wiki bn8informatique:systeme:ha:drbd [2015/10/26 14:51] (Version actuelle) – [Agrandir une ressource] bn8
Ligne 1: Ligne 1:
-====== Fichier de configuration type ====== +====== DRBD ====== 
-  resource disk-semele + 
-   + 
-    protocol C;+===== Procédure de mise en place ===== 
 +==== Mode Primaire/Secondaire ==== 
 + 
 +  * Installation de drbd : <code>apt-get install drbd8-utils</code> 
 +  * Créer le fichier de configuration de la ressource : ///etc/drbd.d/r0.res//<code>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; 
 +        } 
 +}</code> 
 + 
 +  * Initialiser les devices via la commande : <code>drbdadm create-md r0</code> 
 +  * Lancer drbd : <code>/etc/init.d/drbd restart</code> 
 +  * Sur une des deux machines, forcer en primary : <code>drbdadm -- --overwrite-data-of-peer primary r0</code> 
 + 
 +==== Mode Primaire/Primaire ==== 
 + 
 +  * Installation de drbd : <code>apt-get install drbd8-utils</code> 
 +  * Créer le fichier de configuration de la ressource : ///etc/drbd.d/r0.res//<code>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; 
 +        } 
 +}</code> 
 + 
 +  * Initialiser les devices via la commande : <code>drbdadm create-md r0</code> 
 +  * Lancer drbd : <code>/etc/init.d/drbd restart</code> 
 +<note>Si vous êtes en prod vous pouvez utiliser la commande <code>drbdadmn up r0</code></note> 
 +  * Sur une des deux machines, forcer en primary : <code>drbdadm -- --overwrite-data-of-peer primary r0</code> 
 +  * La synchro commence, elle peut être suivie dans ///proc/drbd//. Une fois terminée, passer l'autre machine en primaire également : <code>drbdadm primary r0</code> 
 +===== Supprimer une ressource ===== 
 +  drbdadmin remove /dev/drbd0
      
-    handlers { +===== Agrandir une ressource ===== 
-      pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f"; + 
-   +Partons du principe qu'une ressource //myvol// partagé entre les machines //hyp01// et //hyp02// dans un LV //myvol// des VG LVM respectifs //vg_hypXX//
-      pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f"; + 
-   +  * On commence par redimensionner les LV LVM sous DRBD (avec **[size]** la taille en //Go//), sur chacune des machines : <code>lvresize -L+[size]G /dev/vg_hypXX/myvol</code> 
-      local-io-error "echo o > /proc/sysrq-trigger ; halt -f"; +  * Un fois les LV agrandi, il faut que DRBD le prenne en compte. La commande si après ne doit être fait que si **UN SEUL** des noeuds est **PRIMAIRY**, que l'état du volume est **CONNECTED** et les volumes sont **UpToDate** : <code>drbdadm resize myvol</code> 
-    } +  * La machine //secondary// doit alors être en //resync//. Sans forcément attendre la fin de la synchro, il nous reste à redimenssionner le //filesystem// depuis la machine **PRIMARY** : <code>resize2fs /dev/drbd0</code> 
-   +===== Trucs et astuces ===== 
-    startup { +==== Triggers ==== 
-      degr-wfc-timeout 120;    # 2 minutes. + 
-    } +Exemple : 
-   + 
-    disk { +  handlers { 
-        on-io-error   detach; +    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";
-    net { +
-      after-sb-0pri disconnect; +
-      after-sb-1pri disconnect; +
-      after-sb-2pri disconnect; +
-      rr-conflict disconnect; +
-    } +
-   +
-    syncer { +
-      rate 80M; +
-      al-extents 257; +
-    } +
-   +
-    on toto { +
-      device     /dev/drbd0; +
-      disk       /dev/sdb1; +
-      address    172.16.0.1:7789; +
-      #flexible-meta-disk  internal; +
-      meta-disk  internal; +
-    } +
-   +
-    on titi { +
-      device    /dev/drbd0; +
-      disk      /dev/sdb1; +
-      address   172.16.0.2:7789; +
-      meta-disk internal; +
-    }+
   }   }
  
-====== Supprimer une ressource ====== +==== Reconnecter une ressource après incident ==== 
-  drbdadmin remove /dev/drbd0+ 
 +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 : <code>drbdadm secondary r0 
 +drbdadm -- --discard-my-data connect r0</code> 
 +  * sur la machine contenant les données valides, lancer la commande : <code>drbdadm connect r0</code> 
 + 
 +La synchronisation des données démarre alors, on peut suivre son état via la comande : <code>cat /proc/drbd</code> 
 + 
 +==== En cas de blocage en état Consistent alors qu'un seul des deux nœuds est présent ==== 
 + 
 +<code>drbdadm -- --overwrite-data-of-peer primary r0</code>
  
  • informatique/systeme/ha/drbd.1266249586.txt.gz
  • Dernière modification : 2011/06/21 12:48
  • (modification externe)