orm@doc-tcpip.org

Erstellt: Januar 2001 - Letzte Modifikation: November 2007

[ Main | Local ]


HACMP Tips

Was man so braucht..

 
Authentifizierung:
Die Source-Adresse wird geprüft:
- gegen /usr/sbin/cluster/etc/rhosts
- gegen HACMPadapter ODM (etc/objrepos/)
- gegen HACMPnode ODM (etc/objrepos/)

==> ohne Cluster rhosts keine Verbindung möglich!

Wenn die Source-Adresse gefunden wurde, dann wird geantwortet,
und der Hostname wird abgefragt. Ist der wie erwartet aus der
Cluster-Konfiguration, wird die Verbindung zugelassen.

==> Alle Adressen müßen in der Cluster rhosts stehen!

Nach der Synchronisation (!) kann man den clcomd abschalten
und die rhosts des Clusters umbenennen.

Jeder Knoten eines Clusters cached eine Kopie der ODM beider
Knoten. Diese Kopien lagern in 
/var/hacmp/odmcache/name_des_knotens
Darin findet sich _etc_objrepos mit den ODM Files.
Für das Caching und die Kopie zuständig ist der godm-Daemon. 

Die Kommunikation erfolgt über den clcomd.
Dieser loggt in das clcomd.log, was in der Regel in
/var/hacmp/clcomd zu finden ist.
Hier werden alle Verbindungen und Zugriffe auf Services geloggt.

Im gleichen Verzeichnis findet sich das Debug-Log.
Der Deamon startet normalerweise als clcomd -d, und das Log
wird gefüllt. Das geht auch per traceon.

clRGinfo => zeigt Information zu allen RGs.

Priority Override Location (POL)
Info dazu im clstrmgr.debug (meist in /var/cluster/log oder
/var/hacmp/log)).

Ein clRGmove Kommando löst ein CLRM_USER_RG_MOVE Event aus,
was sich auch im Log findet.

HACMP Version Verification:
/usr/es/sbin/cluster/etc/config/haver.info
Hier wird mit einem Zeitstempel die aktuelle Software-Version
des Clusters (für beide Knoten) angezeigt.
Das File wird regelmäßig (täglich?) neu erzeugt.

Es gibt ein Cluster-Kommando für rsh und dsh:
cl_rsh [-p -n]
cl_dsh [-p -n]

DNP: Dynamic Node Priority.

Resource Group
Die alten Bezeichnungen (Cascading, Rotating, Concurrent)
lassen sich durch die folgenden Parameter erreichen:

Cascading  OHNO FOHP FBHP
CWOF+IT+DNP OFAN FDNP NFB
Rotating OFAN FOHP NFB
Concurrent OAAN BOEN NFB

Man kann Fallback-Timer setzen, also z.B. nur am Sonntag 
zurückschwenken.

RG-Timer
Settling-Timer: Zeit nach dem Anfahren des Clusters, die
gewartet wird, bevor die RG auf die Nodes des Clusters 
verteilt wird (um unnötige RG Moves zu verhindern).

==> Details sind in clstrmgr.debug zu sehen.
==> Im hacmp.out gibt es dann einen Eintrag, das die RG
noch nicht bearbeitet wurde, weil der Zähler noch läuft.

cllsclstr
cllsif
cllsnode
cllsnw

Diese Kommandos gehen noch, sind aber jetzt als cltopinfo
implementiert:

cltopinfo
-c  Cluster-Konfiguration
-i  Interface-Konfiguration
-n  Node-Konfiguration
-w  Network-Konfiguration
-m  Status Heartbeat

Cluster-Single Point of Control (C-SPOC)

Cluster Starten:
smit clstart

/usr/es/sbin/cluster/etc/rc.cluster
oder einfach rc.cluster 
Man kann die Node/Nodes mit angeben.
 Arguments: -boot : configures service adapter to use boot address
            -i    : start client information daemon
            -b    : broadcast these start events
            -N    : start now
            -R    : start on system restart
            -B    : both
            -r    : re-acquire resources after forced down

/usr/es/sbin/cluster/utilities/clstart
-i == start Cluster Information Services (clinfo)
-m == start Cluster Manager (clstrmgr)
-s == start Cluster SMUX Peer Daemon (clsmuxpd)
-b == broadcast startup message via /usr/sbin/wall
-D == disable DeadMan Switch.
-G == start GPFS
Also: 
/usr/es/sbin/cluster/utilities/clstart -smG Cluster_name 

Cluster Stoppen:
smit clstop

/usr/es/sbin/cluster/utilities/clstop
clstop -y -f  == Forced, schmeisst alles hin. Man muß dann mit
"reaquire RG" starten.
-g  == Gracefull, fährt alles runter, macht aber keine Übernahme.
-gr == Gracefull mit Release der RG. Also mit Takeover.
-s  == Kein Broadcast des shutdown über wall Kommando.
-y  == Es wird kein Prompt gezeigt, man muß nichts bestätigen.
-N  == Jetzt stoppen.
-R  == Beim restart stoppen (Eintrag aus der inittab wird gelöscht).
-B  == -R und -N
-S  == aus der rc.shutdown im Rahmen eines system halt.

Läuft der Cluster?
lssrc -g cluster 
lsvg -o  == sind die VGs da?
netstat -i == sind die Service Interfaces da?

Wie geht es dem Cluster?
lssrc -ls clstrmgrES
clstat -a
(Das kann man immer wieder refreshen)q
/usr/es/sbin/cluster/utilities/cldisp
cldump

Funktioniert RSCT?
lssrc -ls topsvcs

Das ist dafür gesetzt:
root:/usr/es/sbin/cluster # odmget HACMPtopsvcs

HACMPtopsvcs:
        hbInterval = 1
        fibrillateCount = 4
        runFixedPri = 1
        fixedPriLevel = 38
        tsLogLength = 5000
        gsLogLength = 5000
        instanceNum = 8

Die Logfiles:
/usr/es/adm/cluster.log
/usr/es/sbin/cluster/history
/tmp/hacmp.out
/tmp/clstrmgr.debug
== Adapter und Label Probleme
File				Default Directory		New Directory

cluster.log			/usr/es/adm			/var/cluster
cluster.mmddyyyy		/usr/es/sbin/cluster/history	/var/cluster/history
clavan.log			/usr/adm			/var/cluster
clverify.log			/var/hacmp/clverify		/var/cluster/clverify
clcomd.log			/var/hacmp/clcomd		/var/cluster/clcomd
clcomdiag.log			/var/hacmp/clcomd		/var/cluster/clcomd
clcofigassist.log		/var/hacmp/log			/var/cluster/log
clutils.log			/var/hacmp/log			/var/cluster/log
cl_testtool.log			/var/hacmp/log			/var/cluster/log

Unveränndert in /tmp bleiben:
clstrmgr.debug
cl_sm.log
cspoc.log
dms_loads.out
emuhacmp.out
hacmp.out

Eine Resource-Gruppe verschieben:
cldare -M FIREWALL:FW1  -v -i

(verschiebt die Resource FIREWALL auf den Knoten FW1)
oder
  /usr/es/sbin/cluster/utilities/clRGmove -s false  -m -i -g RG_name -n Knoten_Ziel

Cluster Topologie, Resourcen, Netzwerke etc.:
Es gibt eine Reihe praktische Befehle in /usr/es/sbin/cluster/utilities.

cltopinfo == Topologie
cllsres -g meine_RG == Resource Group - Alle Shell Variablen
clshowres == Resource Gruppen
cllsif == Interfaces
clstat -a == Status
cllscf == Konfiguration des Clusters
cllsdisk -g meine_RG == alle PVID der RG
cllsfs -g meine_RG == alle FS der RG
cllslv -g meine_RG == alle LV der RG
cllsnode == Angaben zu den beiden Knoten
cllsvg == Angaben zur VG:
-v  active VGs
-n  Knoten, die ein VG teilen
-s  shared VGs
-c  concurrent VGs
-g  VGs einer RG


Cluster Konfiguration wegwerfen:
- Cluster runterfahren
- auf *beiden* Knoten /usr/sbin/cluster/utilities/clrmclstr

Liste der letzten DMS Timeouts:
/usr/sbin/rsct/bin/hatsdmsinfo
Zeigt die letzten 20 Timeouts. Ist z.B. der DMS Timeout auf 20
Sekunden gesetzt (also wenn nach 20 Sekunden keine Antwort kommt,
dann den DMS aktivieren) zeigt diese Ausgabe, nach welcher Zeit
die Antwort kam (es wird der verbleibende Rest dieses Timeout
angezeigt...).


Disk Heartbeat (HACMP 5):
dhb_read -p devicename
= Dump aller Info
-r Setzt den Deamon/Socket auf Emfpang.
-t Sendet eine Nachricht.
= Dient zum Testen der Verbindung

/usr/es/sbin/cluster/utilities/clrsctinfo -cp cllsif
== Alle Heartbeat Devices

| grep diskhb == Nur die Devices für den Diskheartbeat.

/usr/es/sbin/cluster/utilities/clrsctinfo -cp cllsnw
== Zeigt, ob das Netzwerk aliases für den HB nutzt.

clip_config |grep diskhb
== Es gibt eine Pickliste, in der alle potentiellen Platten
sind. Taucht ein Device nicht auf: Dieses Kommando hilft 
eventuell.

Tuning Parameter wie bei RS232.
Es sollten nur Platten mit weniger als 60 Seeks pro Sekunde
ausgewählt werden.
1 Disk Heartbeat Pfad pro Enclosure pro Node.

diskhb nutzt den Datasektor auf der Platte, den bisher der
clvmd benutzt hat.

Testen des Heartbeat Netzes:
0:root@eule1:/ # /usr/sbin/rsct/bin/dhb_read -p rvpath4 -r
Receive Mode:
Waiting for response . . .
Link operating normally
0:root@eule1:/ #

1:root@eule3:/ # /usr/sbin/rsct/bin/dhb_read -p rvpath4 -t
Transmit Mode:
Detected remote utility in receive mode.  Waiting for response . . .
Link operating normally
1:root@eule3:/ #


Es gibt jetzt den Cluster Communication Deamon:
clcomd

Cluster Manager
Lock Deamon
clsmuxpd 
== Eigenes Protokoll

Für die Installation ist noch rsh nötig, das cl_rsh Kommando sollte also
funktionieren. 
/usr/es/sbin/cluster/utilities/cl_rsh cluster_node date 

Lösung: Kreuzweises editieren der "/usr/es/sbin/cluster/etc/rhosts"

Kann auch sein: clcomdES läuft nicht - und der wird beim lssrc -a 
auch nicht angezeigt, startet dann aber trotzdem.

Wenn VGs sich nicht importieren lassen: 

chdev: chdev -a pv=yes -l hdiskx
== yes == Wenn die Platte eine PVID hat, nimm diese - sonst vergib eine neue.
== clear == Wenn die Platte eine PVID hat, dann lösche diese.

Wenn dann alle PVIDs auf den Hdisk sitzen und nicht auf den vpaths:
dpovgfix mein_vg


Bei der HACMP Konfig stellt sich heraus, daß die Major Number der VGs auf beiden 
Seiten unterschiedlich ist.

Auf der einen Seite varoffvg, auf der anderen exportvg bla_vg (schmeisst alles weg).
Auf der einen Seite in lspv eine hdisk/vpath identifizieren, auf denen die VG liegt.

importvg -V majornum. -y ora_bla vpathX

Wie finde ich raus, daß die VG auf dieser Maschine auf hdisk5 liegt?
Auf der ersten Maschine lspv, das gibt beim vpath eine PVID, die auf die VG
zeigt. Diese auf der anderen Maschine in lspv suchen.
Maschine A:
vpath3          00cb329ec1256cea                    hb_b_vg         active
Maschine B:
hdisk5          00cb329ec1256cea       
Dann importvg.

Beispiele für die lssrc -ls Kommandos:

root:/usr/es/sbin/cluster/utilities # lssrc -ls clstrmgrES
Current state: ST_STABLE
i_local_nodeid 0, i_local_siteid -1, my_handle 1
ml_idx[1]=0     ml_idx[2]=1
There are 0 events on the Ibcast queue
There are 0 events on the RM Ibcast queue
CLversion: 7
sccsid = "@(#)36   1.137   src/43haes/usr/sbin/cluster/hacmprd/main.C, hacmp.pe, 51haes_r520 12/9/04 14:52:34"
local node vrmf is 5204
cluster fix level is "4"
The following timer(s) are currently active:
Current DNP values
DNP Values for NodeId - 1  NodeName - gsnptmr1
    PgSpFree = 375711  PvPctBusy = 0  PctTotalTimeIdle = 99.241667
DNP Values for NodeId - 2  NodeName - gsnptmr2
    PgSpFree = 375815  PvPctBusy = 0  PctTotalTimeIdle = 98.450000

Hier ist eigentlich die erste Zeile am wichtigsten: Der Cluster ist stabil.
Andere Zustände sind UNSTABLE, BARRIER, JOINING ...

root:/usr/es/sbin/cluster/utilities # lssrc -ls topsvcs
Subsystem         Group            PID     Status
 topsvcs          topsvcs          725176  active
Network Name   Indx Defd  Mbrs  St   Adapter ID      Group ID
ETHERNET_1_0   [ 0] 2     2     S    172.17.20.3     172.17.20.66
ETHERNET_1_0   [ 0] en2              0x3b58e78a      0x3b58eb24
HB Interval = 1.000 secs. Sensitivity = 10 missed beats
Missed HBs: Total: 0 Current group: 0
Packets sent    : 525713 ICMP 0 Errors: 0 No mbuf: 0
Packets received: 774288 ICMP 0 Dropped: 0
NIM's PID: 729306
ETHERNET_1_1   [ 1] 2     2     S    172.17.10.3     172.17.10.66
ETHERNET_1_1   [ 1] en0              0x3b58e78b      0x3b58eb25
HB Interval = 1.000 secs. Sensitivity = 10 missed beats
Missed HBs: Total: 0 Current group: 0
Packets sent    : 525723 ICMP 0 Errors: 0 No mbuf: 0
Packets received: 774287 ICMP 0 Dropped: 0
NIM's PID: 737456
diskhb_0       [ 2] 2     2     S    255.255.10.0    255.255.10.2
diskhb_0       [ 2] rhdisk6          0x8358e788      0x8358eb2c
HB Interval = 2.000 secs. Sensitivity = 4 missed beats
Missed HBs: Total: 154 Current group: 154
Packets sent    : 249047 ICMP 0 Errors: 0 No mbuf: 0
Packets received: 249037 ICMP 0 Dropped: 0
NIM's PID: 741426
diskhb_1       [ 3] 2     2     S    255.255.10.1    255.255.10.3
diskhb_1       [ 3] rhdisk4          0x8358e789      0x8358eb24
HB Interval = 2.000 secs. Sensitivity = 4 missed beats
Missed HBs: Total: 159 Current group: 159
Packets sent    : 249036 ICMP 0 Errors: 0 No mbuf: 0
Packets received: 249014 ICMP 0 Dropped: 0
NIM's PID: 745644
  2 locally connected Clients with PIDs:
haemd(757894) hagsd(749678)
  Dead Man Switch Enabled:
     reset interval = 1 seconds
     trip  interval = 20 seconds
  Configuration Instance = 8
  Daemon employs no security
  Segments pinned: Text Data.
  Text segment size: 767 KB. Static data segment size: 957 KB.
  Dynamic data segment size: 4233. Number of outstanding malloc: 224
  User time 61 sec. System time 81 sec.
  Number of page faults: 294. Process swapped out 0 times.
  Number of nodes up: 2. Number of nodes down: 0.
root:/usr/es/sbin/cluster/utilities #

Hier findet man pro Verbindung, über die ein Heartbeat läuft, wichtige Informationen.
Einen Header findet man in der dritten Zeile. Es sollte die Anzahl der definierten
Interfaces gleich der aktuellen "Members" sein, und die Zahl der gesendeten/empfangenen
Packete sollte etwa gleich sein; Errors und Drops sollten nicht vorkommen...

Interessant ist auch die Angabe der Configuration Instance. Diese muß auf beiden 
Knoten gleich sein. 

Verifizieren des Clusters:
/usr/sbin/cluster/diag/clverify

Prozesse:
Cluster Manager - /usr/sbin/cluster/clstrmgr
Cluster SMUX Peer Daemon - /usr/sbin/cluster/clsmuxpd
Braucht SNMP. User Interface ist clinfo.

Killt man den Cluster Manager unfreundlich, so wird das Skript /usr/sbin/cluster/utilities/clexit.rc
ausgeführt und das System wird angehalten.

Alle HACMP Software löschen:
installp -u cluster.\*  == wenn man allen Cluster Quatsch wegwerfen will.
(Mit \* interpretiert installp das Sternchen, und nicht die Shell).

Neu in HACMP 5.3:

Der clstrmgrES läuft immer. Mit lssrc -ls clstrmgrES bekommt man, wenn HACMP auf dem Knoten
nicht läuft, den Status ST_INIT.

Resource-Gruppen:
Policies für Startup, Failover und Fallback:

OHN   Online on Home-Node only
OFAN  Online on next available node
OAAN  Online on any available node

FNPN   Fallover to next priority node
FUNDP  Fallover using dynamic node priority
BO     Bring offline

FBHPN  Fallback to higher priority node
NFB    Never fallback
OUDP   Online using distribution policy

[ Main | Local ]

[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | SMTP | Tracing | GPS ]

Copyright 2001-2014 by Orm Hager - Es gilt die GPL
Feedback bitte an: Orm Hager (orm@doc-tcpip.org )