un service de haute dispo minimaliste avec drbd et heartbeat

Fichier ha.cf :
--
udpport 694
ucast th0' '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 acluster' '/usr/lib/heartbeat/ipfail
# ping sur la gateway
ping 192.168.1.1

Fichier haresource :
--
debian01 drbddisk::res0 Filesystem::/dev/rbd0::'/'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/eartbeat'/'drbd-peer-outdater -t 5'';

}

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

disk {
# a activer si dopd tilisé
# ' '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 asse pas
# rr-conflict' 'disconnect;

}

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

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

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

quelques commandes utiles :
Afficher 'é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 oeud ayant les dernières données :
drbdadm' 'primary res0

sur le noeud desynchro :
drbdadm secondary res0
drbdadm -- --discard-my-data connect es0

si le noeud valide est' 'standalone'

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