Haute disponibilité - DRBD - Heartbeat - Mon (Lycée Laetitia Bonaparte)

De Mediase3
Aller à : Navigation, rechercher

Sommaire

Installation de DRBD

Il est nécessaire d'utiliser un module drbd compatible avec le noyeau. Si vous avez installé votre serveur avec digloo, il y a des chances que le drbd compatible soit intégré. Sinon, il faut le télécharger mais le noyau n'est certainement pas le noyau intégré dans la distribution stable. Nous supposerons que notre noyau est le 2.6.16-2-686.

Le plus simple (sans compilation à la "main") :

  • Ajouter temporairement les sources du backport (pour le linux-headers-2.6.16-2-686) et les sources de la testing :
deb http://www.backports.org/debian/ sarge-backports main contrib non-free
deb ftp://ftp2.fr.debian.org/debian/ testing main

Puis :

apt-get update

C'est beaucoup plus simple d'utiliser le paquet "module-assistant" qui va installer et compiler tout ce qu'il faut :

apt-get install module-assistant -t testing

Il faut ensuite :

  • Lancer la commande "module-assistant" puis sélectionner PREPARE, ce qui a pour effet de :
        * Récupérer les sources du noyau de la version : 2.6.16-2-686
        * Installer de divers paquets dont les compilateurs adéquats
     Toujours accepter les installations et/ou mises à jour proposées
  • On est toujours dans module-assistant : sélectionner SELECT puis cocher " drbd0.7-module" puis OK.
  • On est toujours dans module-assistant : sélectionner BUILD. Le message d'avertissement suivant apparaît :
"Le paquet source peut ne pas être installé. 
Voulez-vous installer ou mettre à jour maintenant les paquets source" : 
ceci est normal car drbd n'a pas encore été téléchargé mais module-assistant
s'en chargera à votre place. Donc VALIDER "oui".
  • Après téléchargement de drbd et compilation, l'assistant vous propose d'installer les paquets. Donc VALIDER "oui".
  • L'assistant contrôle les dépendances et propose alors l'installation de drbd0.7-utils (s'il n'a pas encore été installé).
  • ECHAP deux fois pour sortir de l'assistant.
  • A ce stade le module drbd devrait être installé, on le charge :
          * modprobe drbd
          * on vérifie : lsmod | grep drbd qui doit renvoyer une ligne avec drbd
  • Enlever et/ou commenter les sources de testing et du backport puis apt-get update

Configuration de DRBD

Préalable

  • Dans le cas d'une partition en xfs déjà "écrite", on ne peut pas avoir la directive "meta-disk internal" car dans ce cas drbd va essayer de réduire la partition que l'on veut synchroniser de 128M par ressource et on ne peut pas réduire une partition xfs.
  • Si l'on souhaite synchroniser des partitions de type xfs, on doit créer une partition (non monté de minimum 128 M par ressource donc par partition à synchroniser) sur chaque serveur réservé aux méta-données (meta-data).

Configuration

  • On démonte la partition à synchroniser sur les deux serveurs.
umount /home

Si on a créé une partition pour les meta-data et qu'elle est montée, il faut aussi la démonter.

  • On configure /etc/drbd.conf (identique sur chaque serveur) :
resource drbd0 {
protocol C;
incon-degr-cmd "halt -f";
on servllb {
device /dev/drbd0;
disk /dev/mapper/home_vg-home_lv;
address 172.16.0.150:7789;
meta-disk /dev/sda10[0];
}
on hdservllb {
device /dev/drbd0;
disk /dev/mapper/home_vg-home_lv;
address 172.16.0.152:7789;
meta-disk /dev/sda10[0];
}
syncer {
rate 650M;
}
}

resource drbd0 -> Nom de la ressource utilisée

protocol C -> Protocol de synchro à utiliser, C est le plus sécurisé (demande confirmation d'écriture après synchronisation), A est le moins sécurisé et le plus rapide

incon-degr-cmd "halt -f" -> Commande à effectuer en cas d'erreur lors de la synchro (ici "halt -f")

on master -> Nom du serveur 1

device /dev/drbd0 -> Emplacement de la ressource DRBD (drbd0, drbd1, drbd2...)

disk /dev/mapper/home_vg-home_lv -> Emplacement du disque à synchroniser

address 172.16.0.150:7789 -> Adresse et port du serveur 1

meta-disk /dev/sda10[0] -> Emplacement des meta-data, doit être externe (ici /dev/sda10) pour XFS mais peut être "internal" pour ext3

syncer -> Options de synchronisation

rate 650M -> Vitesse de transfert (ici 650MB : c'est à priori le max...)


  • Puis on démarre drbd : /etc/init.d/drbd start sur les deux serveurs.
  • Une fois que DRBD est démarré sur les deux serveurs, ils se mettent en "Secondary" tout les deux, DRBD attend qu'on lui précise le serveur maître (à partir duquel les données de la partition seront copiées) : sur le maitre, taper cette commande :
drbdsetup /dev/drbd0 primary --do-what-I-say
  • La synchro se lance, on peut voir à tout moment à quel point on en est en tapant sur un serveur (peu importe lequel) : cat /proc/drbd
  • Une fois la synchro effectuée à 100%, on monte la partition sur le serveur maître : mount /dev/drbd0 /home
  • ON N'OUBLIE PAS D'ENLEVER OU DE COMMENTER LA LIGNE CORRESPONDANTE DANS /ETC/FSTAB
  • A noter : si DRBD est installé sans Heartbeat, au lancement de la machine, il ne sait pas quel serveur sera le maître, les deux serveurs seront donc en Secondary/Secondary. Il faut donc soit installer Heartbeat qui s'en chargera tout seul, soit lui "dire" manuellement sur le serveur primaire) par la commande déjà vu précédemment:
drbdsetup /dev/drbd0 primary --do-what-I-say

Puis

mount /dev/drbd0 /home
  • Dans le cas où on synchronise plusieurs partitions, on configure une autre ressource (ex: resource drbd1) et on peut préciser les mêmes adresses IP que dans la ressource drbd0 mais il faut que les ports soient différents.

En clair, si la ressource drbd0 est configurée pour 10.22.1.1:7789 et 10.22.1.2:7789, la ressource drbd1 devra par exemple être configurée en 10.22.1.1:7788 et 10.22.1.2:7788. Il faudra aussi changer l'emplacement des meta-data (exemple : /dev/sda10[0] pour drbd0, et /dev/sda10[1] pour drbd1).

  • On peut à tout moment savoir quel est le serveur primaire en faisant un
cat /proc/drbd

Le serveur primaire renverra un Primary/Secondary, et le serveur secondaire renverra un Secondary/Primary. Si on a un Primary/Unknown ou Secondary/Unknown, ça signifie que la configuration est à revoir car les serveurs ne se "reconnaissent" et ne seront donc pas synchronisés entre eux.

Installation de heartbeat

C'est pour bientôt...

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Support
Téléchargements
Développement
Outils logiciels
Boîte à outils