Ceci est une ancienne révision du document !
Pacemaker
Installation
- Installation sur les deux machines :
apt-get install pacemaker dlm-pcmk openais
- Création de la clé partagér :
- Sur la machine 1 :
corosync-keygen
- Sur la machine 2 : Récupérer le fichier /etc/corosync/authkey sur la machine 1. Il doit appartenir à root:root et avoir les droits 400.
- Sur les deux machines, éditer le fichier /etc/corosync/corosync.conf et modifier la partie configurant l'interface d'écoute :
interface { # The following values need to be set based on your environment ringnumber: 0 bindnetaddr: 192.168.3.0 mcastaddr: 226.94.1.1 mcastport: 5405 }
- Si vous souhaitez utiliser une deuxième interfaces réseaux simultanément pour les dialogues entre les nodes corosync, il suffit ajouter un deuxième bloques interface en incrémentant ringnumber, en modifiant bindnetaddr et en veillant à se que mcastaddr et mcasport soient différents que pour l'autre interface. Il faudra également passer mettre rrp_mode à active.
- Si vous utilisez OCFS2 entre autre, il est nécéssaire d'activer le service cktp fournis par openais. Pour cela, créer le fichier /etc/corosync/service.d/cktp et ajouter y les lignes suivantes :
service { name: openais_ckpt ver: 0 }
- Sur les deux machines, activer le lancement du daemon corosync en éditant le fichier /etc/default/corosync et en mettant la variable START à yes
- Sur les deux machines, lancer le daemon :
/etc/init.d/corosync start
L'installation est prête a être configurée. La commande crm status devrait retourné quelque chose comme :
============ Last updated: Mon Dec 6 18:38:18 2010 Stack: openais Current DC: srvvirt1 - partition with quorum Version: 1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b 2 Nodes configured, 2 expected votes 0 Resources configured. ============ Online: [ srvvirt1 srvvirt2 ]
Communication Unicast
Par défaut, le dialogue entre les nodes se fait en multicast. Il peut être utile dans certain cas de configurer celui-ci en unicast. Pour cela, Corosync support l'UDP Unicast (ou UDPU) depuis sa version 1.3.0 (pour Debian, il faut au moins la version disponible dans squeeze-backports).
La configuration du mode Unicast ce fait comme expliquer ci dessus aux exceptions décrite ci-dessous :
totem { [...] interface { ringnumber: 0 bindnetaddr: 10.32.0. member { memberaddr: 10.32.0.10 } member { memberaddr: 10.32.1.11 } mcastaddr: 226.94.1.6 mcastport: 5605 } transport: udpu }
Configuration de base
Nous allons entre autre mettre en place un ping régulier pour s'assurer de la bonne connectivité réseaux des machines. Cette primitive pourra être utilisé pour établir les règles de localisation des ressources.
- Pour accéder à la configuration du cluster pacemaker, entrer dans crm, passer en mode configure et utilisez la commande edit pour éditer la configuration :
root@srvvirt1:~# crm crm(live)# configure crm(live)configure# edit
- Un éditeur vous ouvrira alors la configuration du cluster. Modifier la comme dans l'exemple suivant :
node srvvirt1 \ attributes standby="off" node srvvirt2 \ attributes standby="off" primitive pinggw ocf:pacemaker:ping \ params host_list="172.16.0.1 172.16.0.2" multiplier="100" dampen="5s" name="pinggwval" \ op monitor interval="10s" timeout="100s" \ op start interval="0" timeout="100s" \ op stop interval="0" timeout="100s" clone clonepinggw pinggw property $id="cib-bootstrap-options" \ dc-version="1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b" \ cluster-infrastructure="openais" \ expected-quorum-votes="2" \ stonith-enabled="false" \ no-quorum-policy="ignore"
- Si vous ne souhaitez pas que vos ressources migrent après un recovery ajouter :
rsc_defaults $id="rsc-options" \ resource-stickiness="100"
Trucs et astuces
Eviter que l'arrêt de ressources clonés au redémarrage d'un node
- Lorsque des ressources clonés sont ordonnés, au redémarrage d'un node, pour respecter l'ordre, les ressources du node déjà actif sont arrêtées puis relancer en même temps que le node arrivant. Pour éviter cela définissez vos clones comme cela :
clone cl_res res \ params interleave="true"
- Si une node a par exemple monté une ressource drbd suite à la défaillance du master et que vous voulez le repasser sur la machine de nouveau opérationnelle :
On liste les ressources
crm_resource -l
Puis on migre la resource
crm_resource --resource <name> --move --node <node_name>