From Gzav's Wiki

Clustering: Heart Beat

Continuité de service : créer un cluster de machines avec Heartbeat et DRBD

<< DRBD | Index | Mon >>

Basculer les services avec Heartbeat


Configuration


Fichier /etc/ha.d/ha.cf


# interface pour le heartbeat
bcast eth0

# délai entre deux battements de pouls
keepalive 2

# Temps d'attente avant de passer sur le deuxieme
deadtime 10

# Temps avant de diffuser un avertissement pour les pouls en retard
warntime 6

# deadtime spécifique pour les configurations ou le réseau est lent
initdead 60

# port de prise de pouls
udpport 694

# Identification des noeuds du cluster
node server1
node server2

# On interdit le rebasculement automatique vers le maitre lorsque celui-ci redeviendra UP
auto_failback off

# utilisation du démon logd
use_logd yes


Pensez à ouvrir les ports utilisés par HeartBeat dans le fichier iptables :

-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -j ACCEPT 


Fichier /etc/ha.d/haresource


server1 IPaddr::192.168.0.50 drbddisk::r0 Filesystem::/dev/drbd0::/mnt/mirroir::ext3::defaults httpd mysqld smb cups MailTo::root


Informations :

Lors du basculement du serveur 1 1 vers le backup 2 :

Lors du rebasculement sur 1 HeartBeat fera l'opération inverse et réattribuera l'IP du cluster à 1.


Options pour HeartBeat :

Fichiers à personnaliser après un clonage


Si vous avez opté pour le clonage d'un serveur vers l'autre (attention à drbd), vous devrez personnaliser ces fichiers sur chaque serveur :

NB : repris tel quel du tutoriel Ubuntu


Redémarrage de Heartbeat


Exécuter les opérations suivantes dans l'ordre.


Sur le serveur 2 : # /etc/init.d/heartbeat stop

Sur le serveur 1 : # /etc/init.d/heartbeat stop

Sur le serveur 1 : # /etc/init.d/heartbeat start

Sur le serveur 2 : # /etc/init.d/heartbeat start


Tests

Basculer sur le serveur 2

Sur le serveur 2 : # /etc/init.d/heartbeat restart


Troubleshooting


En cas de problème pensez toujours à consulter les logs de DRBD / Heartbeat dans /var/log/messages (ou ailleurs si vous avez défini des logs spécifiques).


Gestion manuelle des services

La règle est la suivante :

# /etc/init.d/heartbeat stop 2

# /etc/init.d/heartbeat stop 1

# /etc/init.d/drbd stop 2

# /etc/init.d/drbd stop 1

Split-brain

J'ai repris tel quel l'explication faite sur ce tuto.

En cas de coupure réseau, les 2 machines deviennent primaires et obtiennent la même adresse ip de la machine virtuelle !

Lorsque la connection est rétablie cela entraine un "split-brain" que l'on ne peut résoudre que manuellement.

Statut de DRBD

0: cs:StandAlone st:Primary/Unknown ld:Consistent 1

 0: cs:StandAlone st:Secondary/Unknown ld:Inconsistent  2

L'état des noeuds est passé en "Unknown".

Résolution

# drbdadm connect r0 sur les 2 machines démarre la synchro du primaire vers le secondaire

# drbdadm invalidate r0 sur la machine secondaire : invalide les données et force une resynchronisation.


Problème de reconnaissance des machines entre-elles

Si au redémarrage d'un serveur les services DRBD ne se reconnaissent plus.

Statut de DRBD sur les serveurs :

0: cs:StandAlone st:Primary/Unknown ds:UpToDate/DUnknown r--- 1

 0: cs:StandAlone st:Secondary/Unknown ds:UpToDate/DUnknown   r--- 2

Résolution du problème

# drbdadm -- --discard-my-data connect r0 (sur le node avec les données corrompues)

# drbdadm connect r0 (sur le node avec les données correctes)

Les nodes doivent ensuite se reconnaitre et renvoyer un statut correct (st:Primary/Secondary ds:UpToDate/UpToDate).


Synchronisation forcée

Pour forcer la synchronisation d'un des nodes taper une des commandes suivantes :

NB : l'invalidation des données déclenchera automatiquement la synchronisation.


<< DRBD | Index | Mon >>


Retrieved from http://www.ubbdf.fr/pmwiki/Clustering/HeartBeat
Page last modified on August 24, 2009, at 02:02 PM