HACMP
| 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)