informatique:systeme:ha:pacemaker

Ceci est une ancienne révision du document !


Pacemaker

Il est tout d'abord très important que les machines puissent communiquer entre elle avec leur nom (court ou fqdn). Si la résolution DNS ne le permet pas, ajouter les lignes nécéssaires dans le fichier /etc/hosts.
  • 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 ]

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
}

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"

- 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>
  • informatique/systeme/ha/pacemaker.1347816519.txt.gz
  • Dernière modification : 2012/09/16 17:28
  • de bn8