informatique:systeme:ha:drbd

DRBD

  • 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
  • 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
drbdadmin remove /dev/drbd0

Partons du principe qu'une ressource myvol partagé entre les machines hyp01 et hyp02 dans un LV myvol des VG LVM respectifs vg_hypXX :

  • On commence par redimensionner les LV LVM sous DRBD (avec [size] la taille en Go), sur chacune des machines :
    lvresize -L+[size]G /dev/vg_hypXX/myvol
  • 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 :
    drbdadm resize myvol
  • 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 :
    resize2fs /dev/drbd0

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";
}

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
drbdadm -- --overwrite-data-of-peer primary r0
  • informatique/systeme/ha/drbd.txt
  • Dernière modification : 2015/10/26 14:51
  • de bn8