Upload
vuongxuyen
View
234
Download
2
Embed Size (px)
Citation preview
1
Tutoriel d’installation : DRBD et Heartbeat Sommaire
Avant-Propos ........................................................................................................................................... 1
1. Objectifs........................................................................................................................................... 1
2. Schéma ............................................................................................................................................ 2
3. Configuration des machines virtuelles ............................................................................................ 2
4. Préparation des disques .................................................................................................................. 3
5. Installation et configuration de DRBD ............................................................................................. 5
6. Installation et configuration d’Heartbeat ........................................................................................ 8
7. Installation d’Apache et de PHP .................................................................................................... 10
8. Installation de Mysql ..................................................................................................................... 12
9. Installation de PHPMyAdmin ......................................................................................................... 14
Avant-Propos Le tutoriel suivant est réalisé avec deux machines virtuelles Debian Wheezy ayant une adresse IP fixe
dans le cadre de l’épreuve E4 du BTS SIO : le laboratoire Galaxy Swiss Bourdin (cas GSB).
Qu’est-ce que DRBD?
DRBD pour Distributed Replicated Block Device est comparable à un RAID 1 mais en réseau, c’est à
dire que deux disques, partitions ou même un LVM peuvent être répliqué d’un disque à un autre via
un réseau Ethernet ou fibre optique.
Cela permet donc d’assurer la disponibilité de vos données en cas de crash complet d’une machine.
Ce que ne permet pas de faire un RAID classique.
C’est quoi Heartbeat ?
Heartbeat 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. Lorsqu’un serveur devient défaillant, Heartbeat le détecte
(puisqu’il n’entend plus ses battements de cœur) 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.
1. Objectifs Nous allons au cours de ce tutoriel :
Installer et configurer DRBD
Installer et configurer HeartBeat
Installer et configurer Apache et MySQL
2
2. Schéma Voici la topologie que nous allons mettre en place :
3. Configuration des machines virtuelles Dans un premier temps, nous allons configurer nos deux machines virtuelles (les noms de machines
ainsi que leurs adresses IP sont spécifiques au contexte, personnalisé les pour votre situation) :
a) Machine 1 :
Hostname: S-web-ext
Adresse IP: 192.168.1.11
Un second disque dur virtuel de 8 GO (pour DRBD)
b) Machine 2 :
Hostname: S-web-ext2
Adresse IP: 192.168.1.12
Un second disque dur virtuel de 8 GO (pour DRBD)
3
De plus, nous allons ajouter deux lignes dans le fichier /etc/hosts afin que nos machines puissent se
pinger par leur nom :
vim /etc/hosts
Ajouter :
#Serveurs du cluster
192.168.1.11 node1
192.168.1.12 node2
Voici le résultat de la commande ping :
4. Préparation des disques Nous allons commencer par créer une partition sur les seconds disques que nous avons rajoutés.
Sur les deux machines tapez les commandes suivantes :
fdisk /dev/sdb
n
p
1
appuyer sur entrée
4
appuyer une seconde fois sur entrée
w
Maintenant que nous avons partitionné les deux disques, nous allons installer les paquets
nécessaires à l’utilisation de DRBD.
5
5. Installation et configuration de DRBD Sur les deux machines (node 1 et node 2) tapez les commandes suivantes :
aptitude install drbd8-utils
Puis une fois le paquet installé, on active le module avec la commande suivante :
modprobe drbd
Vous pouvez vérifier la version de DRBD installée en tapant la commande :
modinfo drbd
Maintenant que nos disques et DRBD sont mis en place, nous allons configurer la réplication des
données entre les deux disques.
Pour ce faire, nous allons créer et éditer un fichier que nous allons appeler drbd0.res dans le dossier
/etc/drbd.d/
Attention les commandes et les configurations suivantes sont à faire sur les deux
serveurs.
cd /etc/drbd.d/
vim drbd0.res
Puis remplissez le fichier de la façon suivante :
Explications:
Tout d’abord on donne un nom à notre ressource DRBD dans notre cas, nous allons l’appeler r0.
6
Dans cette ressource, nous allons renseigner nos deux nodes, cela commence donc par on node 1
(node 1 doit être le hostname de la machine) avec les valeurs suivantes:
device /dev/drbd0; #Ceci est le nom du disque DRBD que nous allons créer
disk /dev/sdb1; #Ceci est le chemin de la partition que nous allons utiliser
address 192.168.2.101:7788; #Adresse IP du node1
meta-disk internal; #On écrit les MD sur le disque
Afin d’éviter toute erreur lors de la recopie du fichier, nous allons depuis node 1 l’envoyer à node 2 à
l’aide de la commande scp :
scp /etc/drbd.d/drbd0.res [email protected]:/etc/drbd.d/
Vérifier sur node 2 que le fichier est bien présent :
ls /etc/drbd.d/
Une fois ce fichier écrit sur les deux nodes nous allons enfin pouvoir mettre en place la réplication :
Toujours sur les deux nodes tapez les commandes suivantes :
drbdadm create-md r0
drbdadm up r0
Et voilà notre DRBD est pratiquement mis en place, vous pouvez vérifier que vos nodes se contactent
en tapant la commande suivante :
drbd-overview
Vous devriez avoir cette ligne en sortie :
Cela veut dire que vos nodes se connectent mais que la réplication n’est pas encore possible étant
donné qu’aucun des deux n’est en mode Primary, pour y remédier nous allons mettre node 1 en
primary avec la commande suivante :
drbdadm -- --overwrite-data-of-peer primary r0
Et node 2 en secondary :
drbdadm secondary r0
La synchronisation initiale se lance, vous pouvez vérifier l’état de la synchronisation avec la
commande suivante :
cat /proc/drbd
7
La synchronisation initiale peut être plus ou moins lente en fonction de l’espace disque et de la
rapidité de votre réseau local.
Vous pouvez suivre la synchronisation avec un rafraîchissement toutes les deux secondes avec la
commande suivante :
watch cat /proc/drbd
Vous pouvez quitter cette vue en faisant :
CTRL+C
Une fois la synchronisation terminée la commande cat /proc/drbd vous donneras ceci :
cat /proc/drbd
Si les deux sont en mode ds:UpToDate/UpToDate c’est que tout fonctionne bien.
Maintenant que notre raid réseau est fonctionnel, nous allons créer un système de fichiers en ext4
pour pouvoir écrire dessus.
Tapons la commande suivante sur le node primaire (node 1) :
mkfs.ext4 /dev/drbd0
8
Avec DRBD, vous devez savoir que l’on ne peut monter la partition DRBD uniquement sur le
serveur sur laquelle la partition DRBD est en Primary.
Maintenant, nous allons installer Heartbeat sur les deux nodes afin de mettre en place le
balancement de la partition DRBD entre les deux serveurs.
6. Installation et configuration d’Heartbeat
ATTENTION: Toutes les prochaines étapes sont à faire sur les deux serveurs !
Heartbeat s’installe simplement avec la commande :
aptitude install heartbeat
Une fois Heartbeat installé, nous allons devoir créer trois fichiers dans le répertoire /etc/ha.d/ :
ha.cf : Pour la configuration générale de HeartBeat
haresources : Pour la configuration des ressources
authkeys : Pour la clef partgaé entre les serveurs du cluster
Voici le contenu du fichier ha.cf :
Attention : assurez-vous que vous pouvez ping node 2 depuis node 1 et vice-versa.
Nous allons maintenant créer le contenu du fichier haresources :
Explications :
node 1 = nœud primaire du cluster
IPaddr::192.168.1.13/24/eth0 = Adresse IP balancée du cluster sur eth0
drbddisk::r0 = nom de la ressource drbd (spécifié dans /etc/drbd.d/drbd0.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 une clef partagée entre les deux
serveurs. Cela peut être un mot de passe, ou un simple mot.
Voici le mien:
9
Ce fichier la doit avoir les permissions 600. Donc sur les deux serveurs tapez :
chmod 600 /etc/ha.d/authkeys
On peut maintenant démarrer Heartbeat sur node 1 avec la commande suivante :
/etc/init.d/heartbeat start
Patientez quelques secondes et faites sur node 1 la commande drbd-overview et vérifiez si la
partition /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 node 2 démarrez aussi Heartbeat avec la commande :
/etc/init.d/heartbeat start
Et voilà votre cluster DRBD est opérationnel.
Comment le tester ?
Sur node 2 tapez la commande suivante pour vérifier l’état de drbd en temps réel :
watch drbd-overview
Depuis node 2 vous devriez voir cette ligne :
Cette ligne nous montre bien que node 2 est secondary et que la partition DRBD n’est pas montée
Maintenant sur node 1 on arrête Heartbeat avec la commande suivante :
/etc/init.d/heartbeat stop
Basculez tout de suite sur node 2 et voyez que la ligne va devenir :
Cela nous montre bien que node 2 est devenu primaire et que la partition DRBD est bien monté.
Vous pouvez aussi vérifier que l’IP de balancement est bien présent sur node 2.
Maintenant, on remet node 1 en primaire en redémarrant Heartbeat avec la commande :
10
/etc/init.d/heartbeat start
Comme nous avons mis la valeur auto_failback off dans le fichier ha.cf node 2 sera toujours en
primaire. Il faut donc arrêter Heartbeat sur node 2 avec la commande :
/etc/init.d/heartbeat stop
Attendre que la partition DRBD soit remonté sur node 1 et redémarrer Heartbeat sur node 2 :
/etc/init.d/heartbeat start
Maintenant que notre cluster DRBD est actif, on va installer Apache, MySQL et PHP pour mettre en
place un site hautement disponible.
7. Installation d’Apache et de PHP On commence par installer Apache et PHP5 sur les deux nodes avec la commande :
aptitude 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 node 2 avec la commande :
/etc/init.d/apache2 stop
Sur le node 1 nous allons créer dans le répertoire /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.
Sur node 1 faites :
mkdir /mnt/www
Puis dans ce dossier 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.
Je vais donc 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/
11
Vous pouvez vérifier que le lien est fonctionnel avec la commande :
ls -la /var/www
Vous devriez voir cette ligne :
Maintenant, nous allons configurer Heartbeat pour qu’il gère le démarrage automatique d’Apache.
Sur les deux nodes éditez le fichier /etc/ha.d/haresources et rajoutez simplement apache2 à la fin de
la ligne.
Vos fichiers /etc/ha.d/haresources devraient ressembler à ceci :
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ée de votre Cluster
DRBD/Apache.
Pour ma part l’ip est 192.168.1.13
Vous devriez voir une page avec le texte suivant (si bien sur node 1 est le node actif) :
Si vous voyez bien cela arrête HeartBeat sur le node 1, patientez quelques secondes et rechargez la
page web. Maintenant, le texte affiché devrait être :
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 node 1. Rechargez la page web et le texte :
12
Sur node 2 vous pouvez voir avec la commande suivante que le service Apache n’est pas démarré.
Heartbeat démarre et arrête automatiquement le service Apache :
/etc/init.d/apache2 status
Maintenant, nous allons installer MySQL.
8. Installation de Mysql On commence par installer MySQL Server sur les deux nodes avec la commande :
aptitude install mysql-server
Après l’installation de MySQL, 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 de
MySQL.
Sur les deux nodes lancez donc la commande :
insserv -r mysql
Et arrêtez Mysql les deux nodes avec la commande :
/etc/init.d/mysql stop
Sur le node 1 nous allons déplacer le dossier par défaut qui contient les bases de données dans le
répertoire /mnt/. Le dossier par défaut est le dossier /var/lib/mysql.
mv /var/lib/mysql/ /mnt/
Et on crée un lien symbolique de /mnt/mysql vers /var/lib/mysql :
ln -s /mnt/mysql/ /var/lib/
On fait la même chose avec le fichier debian.cnf, qui est dans /etc/mysql :
mv /etc/mysql/debian.cnf /mnt/mysql/
ln -s /mnt/mysql/debian.cnf /etc/mysql/
Maintenant connectez-vous sur node 2 et tapez les commandes suivantes :
rm -rvf /var/lib/mysql/
rm -vf /etc/mysql/debian.cnf
ln -s /mnt/mysql/ /var/lib/
ln -s /mnt/mysql/debian.cnf /etc/mysql/
Maintenant sur node 1, démarrez MySQL avec la commande :
/etc/init.d/mysql start
Nous allons créer une base de données appelée testDrbd en ligne de commande :
13
Maintenant, nous allons configurer Heartbeat sur les deux nodes pour démarrer automatiquement
MySQL.
Éditez le fichier /etc/ha.d/haresources et rajoutez mysql à la fin de la ligne comme ceci :
Rechargez le fichier de configuration Heartbeat sur les deux nodes avec la commande :
/etc/init.d/heartbeat reload
Maintenant, nous allons voir si le balancement se fait bien.
Sur node 1 stoppez Heartbeat avec la commande :
/etc/init.d/heartbeat stop
Allez sur node 2 et vérifiez que :
o Node 2 est bien devenu le node primaire et que /dev/drbd0 est bien monté dans /mnt/ :
drbd-overview
o l’IP balancée est bien sur node 2 :
ifconfig
o mysql est bien lancé sur node 2 :
14
/etc/init.d/mysql status
Si tout ok, connectez-vous au serveur MySQL et vérifiez que la base de données est bien présente :
On voit bien que la base de données est bien présente.
À partir de maintenant, vous avez un cluster Apache, PHP, MySQL Actif / Passif.
9. Installation de PHPMyAdmin On installe PHPMyAdmin afin d’avoir une interface web permettant la gestion de nos bases de
données.
On commence par installer PHPMyAdmin sur les deux nodes avec la commande :
aptitude install phpmyadmin
Il faudra cocher la case « Apache2 » puis faite OK comme ceci :
15
Laissez l’option « oui » :
Un mot de passe vous est demandé : entrez votre mot de passe et confirmez celui-ci à la question
d’après.
Vérifiez le bon fonctionnement de PhpMyAdmin en vous connectant avec votre navigateur en vous
connectant à l’adresse IP balancée par le cluster :
http://192.168.1.13/phpmyadmin
16
Vous pouvez maintenant vous connecter à l’aide de vos identifiants préalablement renseignés afin
d’ajouter des bases de données, en supprimer, etc.
ATTENTION: Si vos rajoutez des modules PHP où Apache, il faut les installer sur les deux nodes.
Vous pouvez aussi faire un lien symbolique de votre fichier php.ini vers votre partition DRBD si vous
modifiez ce fichier.