| orm@doc-tcpip.org | Erstellt: Januar 2001 - Letzte Modifikation: November 2007 |
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
[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]
Copyright 2001-2021 by Orm Hager - Es gilt die GPL