Ceci est une ancienne révision du document !



Pacemaker

Cette page est en cours de construction

Pacemaker est un gestionnaire de cluster haute disponibilité. Il est chargé de démarrer , arrêter et monitorer les ressources du cluster. Ce projet est supporté par les entreprises Red hat, Novel et Linbit. Un cluster est un groupe de deux ou plusieurs machines.

Pour des services vraiment délicats comme un serveur web il peut être intéressant de configurer deux serveurs webs sur deux machines physiques. Si l'un des deux serveurs tombe en panne pacemaker se chargera de remplacer le serveur défaillant par le deuxième. L'utilisateur ni aura vu que du feu et ne se sera jamais rendu compte que l'un des serveurs était tombé en panne.

Comme l'on peut le voir sur le schéma Pacemaker s'appuie sur les logiciels heartbeat ou corosync pour controler les machines. Cependant pacemaker utilise corosync par défaut sous Ubuntu.

Une interface java développée par la sociétée Linbit permet une configuration graphique.

Cette interface permet à partir d'un accès ssh d'installer et de configurer le logiciel pacemaker et les logiciels sur lesquels pacemaker se base.

Cette interface est initialement prévu pour mettre en place la technologie de raid réseau drbd. Bien entendu dans notre cas nous n'utiliserons pas cette fonctionnalité.

Il est tout de même conseillé de bien comprendre la configuration en ligne de commande avant d'utiliser cet outil.

Télécharger l'applet java ici.

  • Avoir au minimum deux postes sous ubuntu 10.04 sinon il n'y a pas vraiment d'interêt à faire un cluster.
  • Savoir ce qu'est la notion de haute disponibilités
  • Avoir des rudiments de connaissances concernant le réseau

Pour installer ce logiciel, il suffit d'installer le paquet pacemaker.

Dans cet example nous metterons en place un cluster de deux machines. Avant de passer à la configuration du cluster il est nécéssaire de faire quelques modifications pour que nos deux machines puissent communiquer entre elle.

Voici un tableau de la configuration que nous allons utiliser par la suite:

Nom de poste adresse ip
pc 1 machine1 192.168.1.101
pc 2 machine2 192.168.1.102

Configuration des machines

Modification du nom des machines

Donner des noms à nos deux machines permettra d'avoir une configuration plus lisible dans le futur.

sudo hostname <nom de machine>

Editer le fichier /etc/hostname et modifier le nom de la machine

Fermer votre session et reconnecter vous

Editer le fichier /etc/hosts

sudo vim /etc/hosts

Vous devriez voir un contenu semblable a celui ci (le nom de machine depend bien sur de votre configuration):

127.0.0.1       localhost
127.0.1.1       ubuntu1

Rajouter ceci:

127.0.0.1     <nom du poste>
192.168.1.101 machine1
192.168.1.102 machine2

Configuration l'adresses ip des interfaces

Fixer les adresse ip des machines en suivant cette procédure. Penser à configurer les serveur DNS.

Editer le fichier /etc/resolv.conf et ajouter ceci:

nameserver <adresse ip serveur dns>

Configuration de la partie exécutive du cluster

Comme je vous l'ai dit précédement pacemaker s'appuie sur d'autres logiciels pour agir et surveiller les postes heartbeat ou corosync. Dans cette section nous allons permettre aux deux postes de s'envoyer des informations soit par corosunc soit par heartbeat.

Configuration de corosync

Création d'une clée d'authentification, cette commande créra le fichier /etc/corosync/authkey.

corosync-keygen
Si vous êtes connecté au poste à distance. Ouvrer une autre session et télécharger un fichier pour créer des entrées sortie au lieu de taper au clavier.

Envoi de ce fichier et modification des droits de ce fichier sur l'autre poste

sudo scp /etc/corosync/authkey nom_utilisateur@machine2:

Sur la machine 2

sudo mv ~/authkey /etc/corosync/authkey
sudo chown root:root /etc/corosync/authkey
sudo chmod 400 /etc/corosync/authkey

Configuration du fichier /etc/corosync.conf

sudo vim /etc/corosync/corosync.conf

La partie du fichier à modifier est la partie concernant la configuration de l'interface.

interface {
                # The following values need to be set based on your environment 
                ringnumber: 0
                bindnetaddr: 127.0.0.1
                mcastaddr: 226.94.1.1
                mcastport: 5405
        }
        
Options Description
ringnumber numéro de l'interface, laissez zéro si vous en déclarer une seule
bindnetaddr correspond au réseau configuré sur la carte allant servir pour les tests entre membres
mcastaddr adresse de multicast utilisé pour les tests
mcast port port multicast utilisé

Activer le démon corosync

vim /etc/default/corosync

Faites la modifiacation suivante

START=yes

Lancement des deux démons sur les deux membres:

/etc/init.d/corosync start

Affichage de l'état du cluster:

 sudo crm_mon --one-shot

Le résultat de la commande devrait ressembler à ça:

Last updated: Mon May  3 10:08:55 2010
Stack: openais
Current DC: Ha-proxy-master - partition with quorum
Version: 1.0.8-2c98138c2f070fcb6ddeab1084154cffbf44ba75
2 Nodes configured, 2 expected votes
0 Resources configured.
============
Online: [ machine1 machine2 ]
Configuration avancée de corosync

Il peut être judicieux de configurer plusieurs interfaces redondantes pour le lien entre les deux postes.

Pour cela il suffit de déclarer une deuxième interface avec le paramètre ringnumber incrémenté, penser à changer l'adresse de multicast et le port de destination, bien sue je ne sois pas sur que ce soit indispensable.

interface {
        ringnumber:  0
	bindnetaddr: 192.168.0.0
	mcastaddr:   226.94.1.0
	mcastport:   5400
}
interface {
	ringnumber:  1
	bindnetaddr: 192.168.1.0
	mcastaddr:   226.94.1.1
	mcastport:   5401
}

Modifier le paramètre rrd_mode

rrd_mode: active
Options Description
active Les deux interfaces sont utilisés
passive La deuxièmle est utilisé seulement dans le cas où la première ne fonctionne plus

Informations sur l'état du cluster

Afficher l'état du cluster

crm_mon
Options Explications
-f –fail-count permet d'afficher les compteurs
-1 –one-shot Affiche l'état à un seul instant et quitte (utile dans les scripts)

Action sur les postes et les ressources

Accéder à l'interface de configuration du cluster

sudo crm

Mettre un poste en maintenance

sudo crm node standby

Sortir un poste de maintenance

sudo crm node online

Migrer une ressource vers un autre poste

sudo crm ressource migrate <nom ressource> <nom du poste allant accueillir la ressource>

Annuler la migration de la ressource

sudo crm ressource unmigrate <nom ressource> 

Cette section regroupe tout les liens vers des tutoriels proposant des configurations de clusters. Si cette documentation vous a permit de comprendre et d'utiliser pacemaker. Il serait intéressant que vous laissiez une trace de la configuration que vous avez réalisé.

Trap snmp

Pacemaker gère l'envoi de traps snmp. Si quelqu'un à réussit à les utiliser, sa contribution est la bienvenue.

Supervision avec l'agent nrpe

Cette partie s'adresse aux personnes connaissant nagios et l'agent nrpe.

Il est possible de créer un script permettant de savoir si les compteurs d'échec ont été incrémentés.

Création du script dans le répertoire /usr/lib/nagios/plugins/

sudo vim /usr/lib/nagios/plugins/check_pacemaker

Contenu de ce script

héhé

Déclarer le script dans la configuration de l'agent nrpe

Editer le fichier /etc/nagios/nrpe.cfg et rajouter dans la section commands cette ligne

command[check_pacemaker]=/usr/lib/nagios/plugins/check_pacemaker

Pour supprimer cette application, il suffit de supprimer son paquet. Selon la méthode choisie, le configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.


Contributeurs principaux : Miam Miam.

  • pacemaker.1277664435.txt.gz
  • Dernière modification: Le 27/06/2010, 20:47
  • par 86.210.64.20