HA-CLUSTER

HA-Cluster (high-availability cluster) est un gestionnaire de grappes sous Linux qui permet d'assurer les messages de synchronisation entre machines participant au cluster grâce à l'outil heartbeat et d'offrir des fonctions de partage de ressources grâce à un gestionnaire dédié (comme par exemple l'outil Pacemaker, non traité ici).

Nous traiterons ici uniquement du paramétrage de l'outil heartbeat qui permet du cluster en mode actif/passif.

Installation du service

L'outil heartbeat fait partie des paquetages supportés par Debian et Ubuntu. Après une mise à jour (update/upgrade) de la machine, on procèdera à l'installation comme suit :

apt install heartbeat

Configuration du service

Les fichiers

La configuration de heartbeat passe par le paramétrage de 3 fichiers (présents dans le dossier /etc/heartbeat/ ou /etc/ha.d/ ). Ces fichiers peuvent être à créer.

  • ha.cf : il définit la liste des équipements (on parle de nœuds ou node) concernés par le cluster et le mode de gestion de la reprise sur incident
  • haresources : il indique dans l'ordre :
    • la machine étant maître dans le cluster
    • l'adresse IP virtuelle active sur le nœud actif avec son masque
    • le nom de la carte réseau virtuelle
    • le ou les services activés dans le cluster.
  • authkeys : il définit les éléments de sécurité permettant aux membres du cluster d'entrer en communication

Procédure

La configuration doit être identique sur tous les membres du cluster. On pourra configurer une machine et recopier les fichiers sur l'autre.

La démarche est la suivante :

  1. Installer le service
  2. Créer et configurer le fichier ha.cf
  3. Enregistrer les associations [nom des nœuds / IP] dans le fichier /etc/hosts
  4. Créer et configurer le fichier haresources
  5. Créer et configurer le fichier authkeys et en restreindre l'accès
  6. Répliquer la configuration sur les autres membres (en pensant à adapter le fichier hosts sur chaque machine)
  7. Relancer le service heartbeat

Syntaxe du fichier ha.cf

# mode de gestion des journaux d'activité
logfacility     local0
# temps entre deux interrogations secondaire/maitre
keepalive       2
# temps au bout duquel le maître ou le secondaire est considéré hors jeu
deadtime        10
# mode de synchronisation maître/secondaire (ici en broadcast sur la carte eth0)
bcast           eth0
# liste des noeuds participant au cluster (l'ordre dans lequel on les place définit la hiérarchie)
node            <noeudMaitre> <noeudSecondaire>
# mode de gestion du retour à la normale 
auto_failback   no
# commandes pour gérer les actions en cas de défaillance
respawn         hacluster /usr/lib/heartbeat/ipfail
apiauth         ipfail gid=haclient uid=hacluster

Aide Paramétrage: http://www.foulquier.info/tutoriaux/mise-en-place-dun-cluster-heartbeat-apache

Fichier /etc/hosts

Le nom des noeuds à enregistrer dans la clause node est celui de la machine que l'on peut consulter en tapant la commande sur chaque nœud :

hostname

Les nœuds participant au cluster doivent tous être renseignés dans le fichier /etc/hosts avec l'adresse IP de la carte réseau sur laquelle ils seront contactés. On ne supprimera pas les informations existantes dans ce fichier.

La syntaxe ressemblera à cela

....
# à ajouter après les lignes existantes 
#*******Penser à adapter les valeurs exemple ********
172.30.0.199 srvMaitre      
172.30.0.200 srvSecondaire  

Syntaxe du fichier haresources

 <noeudMaitre> IPaddr::<ip_virtuelle_cluster>/<masque>/<carte_reseau>:<numVirtuel> <service(s)_à_inclure> 

Le fichier haresources définit les éléments suivants :

  • <noeudMaitre> : c'est le nom de la machine qui joue le rôle principal. Le nom doit être celui de la machine et être enregistré dans le fichier /etc/hosts
  • <ip_virtuelle_cluster>/<masque> : il s'agit d'une adresse IP (et de son masque) active sur l'un des noeuds (le maître s'il est opérationnel) par lequel les postes consultent le ou les services du cluster
  • <carte_reseau> : nom de la carte réseau qui possèdera l'adresse virtuelle (par exemple eth0)
  • <numVirtuel> : numéro de l'interface virtuelle qui possèdera l'IP virtuelle du cluster qui apparaîtra sous la forme eth0:1 par exemple
  • <service(s)_a_inclure> : heartbeat peut gérer de multiples services ; on les notera à la suite, séparés par des espaces

Exemple (valeurs à adapter) :

 srvMaitre IPaddr::172.30.0.201/24/eth0:0 apache2 mysql 

Syntaxe du fichier authkeys

Le fichier authkeys contient les informations de sécurité permettant aux noeuds de se synchroniser. Il doit donc être protégé contre un accès à des utilisateurs autres que root.

Contenu du fichier

auth <num_ligne>
<num_ligne> <algorithme> <passphrase>

L'<algorithme> pourra être md5 (mal sécurisé) ou sha1.

Exemple :

auth 2
2 sha1 textCQr1T3

Paramétrage des droits sur le fichier authkeys

On modifiera les droits d'accès pour limiter la lecture du contenu au compte root.

chmod 600 /etc/ha.d/authkeys

UPDATES

We've started shipping!

Posted 2 days ago

Suspendisse luctus at massa sit amet bibendum. Cras commodo congue urna, vel dictum velit bibendum eget. Vestibulum quis risus euismod, facilisis lorem nec, dapibus leo. Quisque sodales eget dolor iaculis dapibus. Vivamus sit amet lacus ipsum. Nullam varius lobortis neque, et efficitur lacus. Quisque dictum tellus nec mi luctus imperdiet. Morbi vel aliquet velit, accumsan dapibus urna. Cras ligula orci, suscipit id eros non, rhoncus efficitur nisi.

Launch begins manufacturing

Posted 9 days ago

Suspendisse luctus at massa sit amet bibendum. Cras commodo congue urna, vel dictum velit bibendum eget. Vestibulum quis risus euismod, facilisis lorem nec, dapibus leo. Quisque sodales eget dolor iaculis dapibus. Vivamus sit amet lacus ipsum. Nullam varius lobortis neque, et efficitur lacus. Quisque dictum tellus nec mi luctus imperdiet. Morbi vel aliquet velit, accumsan dapibus urna. Cras ligula orci, suscipit id eros non, rhoncus efficitur nisi.

Designs have now been finalized

Posted 17 days ago

Suspendisse luctus at massa sit amet bibendum. Cras commodo congue urna, vel dictum velit bibendum eget. Vestibulum quis risus euismod, facilisis lorem nec, dapibus leo. Quisque sodales eget dolor iaculis dapibus. Vivamus sit amet lacus ipsum. Nullam varius lobortis neque, et efficitur lacus. Quisque dictum tellus nec mi luctus imperdiet. Morbi vel aliquet velit, accumsan dapibus urna. Cras ligula orci, suscipit id eros non, rhoncus efficitur nisi.