HACMP

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Cluster haute disponibilité (AIX)
Commande clstat / SMIT (smit hacmp)
Contexte IBM PowerHA (AIX) — anciennement nommé HACMP
Voir aussi MSCS (équivalent conceptuel Windows)

HACMP (High Availability Cluster Multi-Processing) est la solution de cluster à haute disponibilité d'IBM pour AIX, renommée par la suite PowerHA SystemMirror (à vérifier, selon la version). Plusieurs nœuds (machines AIX) sont regroupés en cluster et se répartissent des groupes de ressources (adresses IP, volumes/filesystems partagés, applications) ; en cas de panne d'un nœud, HACMP bascule automatiquement ces ressources vers un autre nœud du cluster pour maintenir le service disponible.

Modes d'arrêt du cluster

Trois modes d'arrêt du démon cluster, avec des conséquences différentes sur les ressources et le basculement :

  • forced — HACMP s'arrête sur le nœud mais les ressources restent actives (pas de libération)
  • graceful — HACMP s'arrête et libère les ressources, mais sans bascule vers un autre nœud
  • takeover — HACMP s'arrête et déclenche la bascule des ressources vers un autre nœud du cluster

Disaster recovery

Deux briques complémentaires, à ne pas confondre avec le clustering HACMP local :

  • VM Recovery Manager HA (VMR HA) — détecte une défaillance et déclenche une migration à chaud (Live Partition Mobility) de la partition affectée vers un autre serveur
  • VM Recovery Manager DR (VMR DR), anciennement Geographically Dispersed Resiliency (GDR) — reprise après sinistre entre deux sites géographiquement distincts, par arrêt puis relance des machines virtuelles sur le site de secours en cas de défaillance

Démons

clstrmgr    # cluster manager
clsmuxpd    # cluster SMUX peer daemon
clinfo      # cluster information services
cllockd     # cluster lock manager
topsvcs     # cluster topology services daemon
grpsvcs     # cluster group services daemon
grplsm      # cluster global server daemon
emsvcs      # cluster event management daemon

Vérifier l'état des démons via lssrc :

lssrc -g cluster
lssrc -g topsvcs   # ou : lssrc -s topsvcs
lssrc -g grpsvcs   # ou : lssrc -s grpsvcs
lssrc -g grpglsm   # (à vérifier, orthographe du groupe)

Supervision et identification des ressources

Afficher l'état du cluster :

clstat     # supervision en mode console
xclstat    # supervision en mode graphique X11

Identifier et localiser les groupes de ressources :

clfindres          # lister les groupes de ressources
clfindres -s       # variante courte
clshowres          # détail des ressources d'un groupe

netstat -i         # interfaces réseau actives
df                 # filesystems montés
lsvg -o            # volume groups actuellement online

Tester si un volume group partagé est en ligne :

if lsvg -o | grep -q -w sharedvg; then
  echo "sharedvg is online"
else
  echo "sharedvg is offline"
fi

Identifier les processus qui occupent un filesystem partagé (utile avant un basculement) :

fuser -k /dev/sharedlv

Logs

Fichiers de logs à consulter en cas d'incident :

/var/adm/cluster.log
/tmp/hacmp.out
/tmp/emuhacmp.out
/usr/sbin/cluster/history/cluster.mmdd
/tmp/cm.log
/tmp/csproc.log
# + le error log système AIX (errpt)

Repérer les erreurs et les événements du cluster :

errpt -t                    # liste des erreurs du error log AIX
errpt -a | grep msg         # détail, filtré sur un motif
grep EVENT /tmp/hacmp.out   # événements de basculement/cluster

Notification d'erreurs personnalisée (ODM) : les règles se configurent via odmget errnotify (pour lister l'existant) et odmadd (pour ajouter une entrée depuis un fichier de définition) ; odmdelete permet de retirer une entrée.

Pannes courantes

Remplacer un disque partagé

Sur le premier nœud :

rmdev -dl hdisk3
cfgmgr -l scsi2
exportvg sharedvg
recreatevg -y sharedvg hdisk3

Attention : les noms des LV et FS changent après recreatevg — il faut les renommer puis mettre à jour /etc/filesystems.

Sur l'autre nœud :

rmdev -dl hdisk3
cfgmgr -l scsi2
importvg -y sharedvg hdisk3
chdev -l hdisk3 -a pv=clear   # le disque passe au statut NONE
chdev -l hdisk3 -a pv=yes
recreatevg -y sharedvg hdisk3

Remplacer une carte réseau

ifconfig en0 down
rmdev -l en0
rmdev -l ent0
chdev -l ent0 -a media_speed=100_Full_Duplex
mkdev -l ent0
mkdev -l en0
ifconfig en0 up

⚠️ Ne jamais laisser l'autonégociation active sur une interface utilisée par HACMP — fixer explicitement la vitesse/duplex des deux côtés du lien.

Configuration

Résolution de noms/etc/hosts convient pour un cluster d'au plus 25 nœuds environ et doit lister toutes les adresses IP des nœuds du cluster. L'ordre de résolution se règle dans /etc/netsvc.conf :

hosts=local,nis,bind,dns

La variable d'environnement NSORDER prend le pas sur ce fichier si elle est définie. Pour que HACMP tienne compte de NIS/DNS, les services correspondants doivent être actifs ; le réglage se fait via smit hacmp → Cluster Configuration → Cluster Resources → Configure Run-Time Parameters.

Créer un disque/filesystem partagé :

mklv -t jfslog sharedvg 1 -y jfslog2
logform /dev/jfslog2
mklv -t jfs sharedvg -y mylv 1
crfs -t jfs -g sharedvg -d mylv -m /mydata -a log=jfslog2

Créer une adresse IP alias :

ifconfig en0 10.6.100.10 alias

⚠️ Ne jamais utiliser l'adresse IP de boot du nœud comme adresse alias.

Voir aussi

  • MSCS — équivalent conceptuel côté Windows (cluster à basculement / Failover Clustering)