Accueil > Logiciel, Système > Un cluster DRBD / Apache avec Heartbeat sur Debian 7

Un cluster DRBD / Apache avec Heartbeat sur Debian 7

16/09/2015 Categories: Logiciel, Système Tags: , , , ,

C’est quoi Heartbeat?

drbd apache debianHeartbeat est un logiciel de surveillance de la disponibilité des programmes, pour les systèmes d’exploitation Linux, FreeBSD, OpenBSD, Solaris et MacOS X. Il est distribué sous licence GPL.

Heartbeat écoute les battements de cœur – des signaux émis par les services d’une grappe de serveurs lorsqu’ils sont opérationnels. Lorsque qu’un serveur devient défaillant, Heartbeat le detecte (puisqu’il n’entend plus ses battements de coeurs) et bascule les services surveillés sur un autre serveur. Pour que cela soit transparent pour les utilisateurs, Heartbeat met en place une IP virtuelle unique qui est balancée entre les deux serveurs.

Voici ce que nous allons mettre en place

Schéma

Mise en place de la solution

Pour ce tuto, nous allons partir du Cluster DRBD que nous avons mis en place dans le tutoriel précédent:

DRDB sur Debian 6

Voici les machines que nous allons utiliser

Machine 1:

  • Hostname: node1
  • Adresse IP: 192.168.2.55

Machine 2 :

  • Hostname: node2
  • Adresse IP: 192.168.2.56

Et il faut donc que DRBD soit déja fonctionnel entre les deux serveurs.

Par contre, nous allons modifier le fichier de configuration de DRBD sur les deux serveurs.

Dans mon tutoriel précédent nous avions le fichier « /etc/drbd.d/drbd1.res » avec le contenu suivant:

resource r0 {
 
# Taux de transfert
# 10M pour du 100mbits
# 100M pour du 1Gbits
syncer {
rate 10M;
}
 
on node1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.10.128:7788;
meta-disk internal;
}
on node2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.10.129:7788;
meta-disk internal;
}
}

Nous allons rajouter deux options intéressantes pour améliorer le cluster, voici le nouveau fichier.

resource r0 {
 
startup {
wfc-timeout 30;
degr-wfc-timeout 15;
}
 
disk {
on-io-error detach;
}
 
# Taux de transfert
# 10M pour du 100mbits
# 100M pour du 1Gbits
syncer {
rate 100M;
}
 
on node1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.2.55:7788;
meta-disk internal;
}
on node2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.2.56:7788;
meta-disk internal;
}
}

PS: C’est normal que les IP ont changées, ne pas en prendre compte.

ATTENTION: Ne pas oublier de modifier ce fichier sur les deux serveurs DRBD.

Si votre partition /dev/drbd0 est montée démontez la avant de continuer ce tutoriel. Si vous avec aussi configurer le montage automatique de cettepartition dans fstab supprimez cette ligne. HeartBeat va gérer le montage de la partition drbd.

Donc maintenant que tout est OK et que DRBD est bien fonctionnel sur les deux serveurs on va pouvoir installer Heartbeat.

Installation et configuration de Heartbeat

ATTENTION: Toutes les prochaines étapes sont à faire sur les deux serveurs !

HeartBeat s’installe simplement avec la commande:

apt-get install heartbeat

Une fois heartbeat installer nous allons devoir créer trois fichiers dans le dossier « /etc/ha.d/ »

ha.cf : Pour la configuration générale de HeartBeat
haresources : Pour la configuration des ressources
authkeys : Pour la clef partagée entre les serveurs du cluster

Voici le contenu du fichier ha.cf

mcast eth0 239.0.0.10 694 1 0
 
warntime 4
deadtime 5
initdead 15
keepalive 2
 
#Re-balance les services sur le node primaire quqnd il revient en ligne
auto_failback on
 
#Serveurs du cluster
node node1
node node2

Attention Pour que tout fonctionne bien il faut s’assurer que vous puissiez ping node2 depuis node1 et vice-versa.

Nous allons maintenant créer le contenu du fichier haresources

node1 IPaddr::192.168.2.57/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/mnt::ext4

Explications:
node1 = noeud primaire du cluster
IPaddr::192.168.2.57/24/eth0 = Adresse IP balancée du cluster sur eth0
drbddisk::r0 = nom de la ressource drbd (spécifé dans /etc/drbd.d/drbd1.res)
Filesystem::/dev/drbd0::/mnt::ext4 = Nom de la partition drbd, point de montage et type de système de fichier.

Et pour finir nous allons créer le fichier « authkeys ». Ce fichier contient un clef partagé entre les deux serveurs. Cela peut être un mot de passe, ou un simple mot.

Voici le mien:

auth 3
3 md5 my-auth-key

Ce fichier la doit avoir les permissions « 600 ». Donc sur les deux serveurs tapez:

chmod 600 /etc/ha.d/authkeys

Et voilà tout est bon maintenant 🙂

Sur node1 démarrez Heartbeat avec la commande suivante:

/etc/init.d/heartbeat start

Patientez quelques seconde et faites sur node1 la commande « drbd-overview » et vérifiez si la parition /dev/drbd0 est bien montée dans /mnt/.

Vous pouvez aussi vérifier avec la commande ifconfig, vous verrez qu’une nouvelle interface « eth0:0 » a été créer avec l’adresse IP configuré dans le fichier haresources.

Maintenant sur node2 démarrez aussi heartbeat avec la commande:

/etc/init.d/heartbeat start

Et voila votre cluster DRBD est opérationnel.

Comment le tester?

Connectez vous si ce n’est pas déja fait en SSH sur les deux nodes.

Sur node2 tapez la commande suivante pour vérifier l’état de drbd en temps réel:

watch drbd-overview

Actuellent depuis node2 vous devriez voir cette ligne:

0:r0 Connected Secondary/Primary UpToDate/UpToDate C r-----

Cette ligne nous montre bien que node2 est secondary et que la partition drbd n’est pas montée

Maintenant sur node1 on arrête Heartbeat avec la commande suivante:

/etc/init.d/heartbeat stop

Basculez tout de suite sur node2 et voyez que la ligne va devenir:

0:r0 Connected Primary/Secondary UpToDate/UpToDate C r----- /mnt ext4 7.9G 146M 7.4G 2%

Cela nous montre bien que node2 est devenu primaire et que la parition drbd est bien monté. Vous pouvez aussi vérifier que l’ip de balancement est bien présente sur node2.

Maintenant on remet node1 en primaire en redémarrant Heartbeat avec la commande:

/etc/init.d/heartbeat start

Maintenant que notre cluster drbd est actif on va installer apache pour mettre en place un site hautement disponible.

Installation d’apache

On commence par installer Apache et PHP5 sur les deux nodes avec la commande:

apt-get install apache2 php5

Après l’installation d’Apache, nous allons désactiver sur les deux nodes le démarrage automatique du service au lancement de la machine parce que c’est Heartbeat qui va gérer le lancement d’Apache.

Sur les deux nodes lancez donc la commande:

insserv -r apache2

Et arrêtez Apache sur node2 avec la commande:

/etc/init.d/apache2 stop

Sur le node1 nous allons créer dans /mnt/ un dossier « www » pour stocker les pages web. Dans ce dossier nous allons créer une page Web par défaut pour vérifier que le balancement fonctionne.

Donc dans « /mnt/www/ » créez un fichier index.php avec le contenu suivant:

<?php
echo "Un coucou de ".gethostname()."n"
?>

Nous allons faire en sorte que le dossier des pages par défaut d’Apache soit /mnt/www au lieu de /var/www.

Comme je suis un feignant, je vais créer un lien symbolique de « /var/www » vers « /mnt/www/ »

Sur les deux nodes faites les commandes suivantes:

rm -rvf /var/www/
ln -s /mnt/www/ /var/

Vous pouvez vérifier que le lien est fonctionnel avec la commande:

ls -la /var/www

Vous devriez voir cette ligne:

lrwxrwxrwx 1 root root 9 Dec 22 11:05 /var/www -> /mnt/www/

Maintenant nous allons configurer Heartbeat pour qu’il gère le démarrage automatique d’Apache.

Sur les deux nodes editez le fichier « /etc/ha.d/haresources » et rajoutez simplement apache2 à la fin de la ligne.

Vos fichiers /etc/ha.d/haresources devraient ressembler à ceci:

node1 IPaddr::192.168.2.57/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/mnt::ext4 apache2

Rechargez le fichier de configuration Heartbeat sur les deux nodes avec la commande:

/etc/init.d/heartbeat reload

Nous allons vérifier si le balancement fonctionne bien.

Ouvrez un navigateur internet et connectez-vous à l’adresse IP balancé de votre Cluster DRBD/Apache.

Pour ma part l’ip est 192.168.2.57.

Vous devriez voir une page avec le texte suivant: « Un coucou de node1″ si bien sur node 1 est le node actif.

Si vous voyez bien cela arrêtez HeartBeat sur le node1, patientez quelques secondes et rechargez la page web. Maintenant le texte affiché devrait être « Un coucou de node2″.

Cool non? La page index.php qui nous avons mis dans « /mnt/www/ » nous affiche le hostname de la machine. Nous voyons donc bien que le balancement se fait bien entre les deux nodes de notre Cluster DRBD/Apache.

Pour finir relancez Heartbeat sur node1. Rechargez la page web et le texte « Un coucou de node1″ apparait de nouveau.

Sur node2 vous pouvez voir avec la commande « /etc/init.d/apache2 status » que le service Apache n’est pas démarré. Heartbeat démarre et arrète automatiquement le service Apache.

Source: denisrosenkranz.com

Print Friendly, PDF & Email

Related Post

Les commentaires sont fermés.