Un service de haute dispo minimaliste avec drbd et Heartbeat

Fichier de configuration drbd et heartbeat

Fichier ha.cf :
udpport       694
ucast           eth0 debian01
ucast           eth0 debian02

debugfile     /var/log/ha.debug
logfile         /var/log/ha.log
logfacility    local0

keepalive     2
deadtime      30
warntime      10
initdead       60

node          debian01
node          debian02

auto_failback off

respawn hacluster /usr/lib/heartbeat/ipfail
# ping sur la gateway
ping 192.168.1.1
Fichier haresource :
debian01   drbddisk::res0 Filesystem::/dev/drbd0::/data::ext3 \
            tomcat \
debian02
Fichier drbd.conf
global {
    usage-count yes;
}

common {
  syncer {
     rate 10M;
  }
}

resource mail {
  protocol C;

  handlers {

 # a activer si dopd utilisé
 #   outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";

  }

  startup {
    degr-wfc-timeout 120;    # 2 minutes.
  }

  disk {
# a activer si dopd utilisé
#       fencing resource-only;
        on-io-error   detach;
        on-io-error   detach;
  }

  net {

    cram-hmac-alg "sha1";
    shared-secret "blablabla";

     after-sb-0pri disconnect;

# pas de disconnect sur rr-conflict sinon la resolution manuelle ne passe pas
#    rr-conflict disconnect;

  }

  syncer {
    rate 10M;
    al-extents 257;
  }

   on debian01 {
    device     /dev/drbd0;
    disk       /dev/sda4;
    address    192.168.1.11:7788;
    meta-disk  internal;
  }

  on  debian02 {
    device    /dev/drbd0;
    disk        /dev/sda2;
    address   192.168.1.12:7788;
    meta-disk internal;
  }
}

Quelques commandes utiles :

Afficher l’état de drbd :
drbd-overview 
ou
cat /proc/drbd

Restaurer des données apres un split brain

(les 2 noeuds sont secondaires et standalone) sur le noeud ayant les dernières données :

drbdadm primary res0

sur le noeud desynchro :

drbdadm secondary res0
drbdadm -- --discard-my-data connect  res0

Si le noeud valide est standalone, lancer sur le noeud valide :

drbdadm connect res0

Si les 2 nœuds sont primaires, repasser en secondaire/secondaire et régler le conflit.

Invalider un noeud :
drbdadm invalidate res0

attention cela entraine une resynchro complète avec le noeud primaire.

Notes :

les uid et gid doivent correspondre entre les noeuds sinon les accès aux répertoires sur le disque drbd vont planter apres un fail-over.

Le site drbd :

resoudre un split brain manuellement

Auteur/autrice : Chrystophe Vergnaud

Prendre du recul pour identifier les réels besoins et faire un choix technologique en fonction de ces besoins.

Laisser un commentaire