
| Fencing (abzäunen, ausgrenzen) Falls der Cluster keine Informationen mehr über seine Partnerknoten bekommt, also z. B. die Heartbeat-Leitungen zerstört sind, tritt das Fencing ein. Es eröffnet verschiedene Lösungen, um mögliche Schäden zu verhindern wie z. B. STONITH, Self-Fencing RAID Controller, Abschalten des FibreChannel Port und SCSI3-Reservierungen. |
|
Heartbeat Name einer Hochverfügbarkeitslösung aus dem Open Source Umfeld, aber auch Bezeichnung für eine private Leitung zwischen Cluster-Knoten, mit deren Hilfe geprüft wird, ob die anderen Knoten noch "leben". |
|
OCF Open Cluster Framework. Definition von Standardzugriffschnittstellen des Heartbeat-Cluster. |
|
STONITH Shoot the other node in the head. Eine Möglichkeit, mit der man verhindert, dass zwei oder mehr Systeme schreibend auf ein Dateisystem oder auch eine Datenbank zugreifen. |
|
| Abb. 1: Konfiguration des eigenen Skriptes mit Hilfe der GUI von Heartbeat-Version 2. Vergrößern. |
<parameters> <parameter name="vmxpath" unique="0" required="1"> <longdesc lang="en"> VMX configuration file path </longdesc> <shortdesc lang="en">VMX file path</shortdesc> <content type="string"/> </parameter> <parameter name="vmwarecmdbin" unique="0" required="1"> <longdesc lang="en"> vmware-cmd executable path </longdesc> <shortdesc lang="en">vmware-cmdbin path</shortdesc> <content type="string" default="/usr/bin/vmware-cmd"/> </parameter> </parameters> |
| Abb. 2: Die Ausgabe eines OCF-Skriptes beim Aufruf mit dem Argument meta-data. |
# ocf-tester -n vmware_test1 -o vmxpath=/vmware/guests/Win- dows2003.vmx /usr/lib/ocf/resource.d/ORDIX/vmware Beginning tests for /usr/lib/ocf/resource.d/ORDIX/vmware... *Your agent does not support the notify action (optional) *Your agent does not support the demote action (optional) *Your agent does not support the promote action (optional) *Your agent does not support master/slave (optional) *Your agent does not support the reload action (optional) /usr/lib/ocf/resource.d/ORDIX/vmware passed all tests |
| Abb. 3: Benutzung des Tools ocf-tester zur Prüfung eines OCF-Skriptes. |
In hochverfügbaren Umgebungen werden die Dienste von der Cluster-Software gestartet, gestoppt und kontrolliert. Die Schnittstelle zwischen dem Cluster und den Diensten ist bei Heartbeat mit Hilfe von Shell-Skripten implementiert. Der Vorteil liegt hier auf der Hand: Shell-Skripte können individuell angepasst und verändert werden. Bei Heartbeat-Version 2 gibt es insgesamt vier verschiedene Arten von Shell-Skripten (Resourceagents), die für die Kontrolle der Ressourcen genutzt werden können:
LSB (Linux Standard Base)
LSB-Skripte sind die normalen init-Skripte, welche im Verzeichnis /etc/init.d abgelegt sind.
Zum Starten oder Stoppen eines Dienstes übergibt der Cluster die Argumente start/stop an die Skripte.
Wichtig ist auch, dass die Skripte zusätzlich das Argument status verstehen, da hiermit der Cluster
überprüft, ob eine Ressource gestartet oder gestoppt worden ist. Über Rückgabewerte entscheidet der
Cluster, ob der Befehl erfolgreich war oder fehlgeschlagen ist.
Heartbeat-Version 1
Die Skripte der Heartbeat-Version 1 befinden sich im Verzeichnis /etc/ha.d/resource.d.
Sie dienen vorwiegend dazu, cluster-interne Aufgaben durchzuführen, wie z. B. das Erstellen der virtuellen
IP-Adressen, das Versenden von E-Mails oder Net-Send-Nachrichten bei Veränderungen von Ressourcen. Aber auch
Skripte, die für das Mounten/Unmouten von Dateisystemen genutzt werden, sind hier zu finden. Skripte der Heartbeat-Version
erwarten die Argumente start, stop und status sowie Argumente, die skript-abhängig sind, wie z. B. IP-Adressen, E-Mail Adressen
oder Dateisystemnamen.
OCF (Open Cluster Framework)
OCF-Skripte stellen die modernste und bevorzugte Art der Skripte dar. Zusätzlich zu den Argumenten start und stop
beherrschen diese auch die Argumente monitor,meta-data und validate-all, einige auch promote, demote oder notify.
OCF-Skripte sind in dem Verzeichnis /usr/lib/ocf/resource.d/PROVIDER beheimatet.
STONITH (Shoot the other node in the head)
STONITH-Skripte werden für das Fencing genutzt. Hiermit sollen gefährliche Situationen,
wie das doppelte Mounten desselben SAN-Dateisystems, verhindert werden. Dieses geschieht
durch das Ausschalten des Partnerknotens oder das Deaktivieren von FibreChannel Ports.
Für seine eigenen OCF-Skripte erstellt man sich unter /usr/lib/ocf/resource.d bevorzugt ein eigenes Unterverzeichnis, in dem man die Skripte ablegt. Im Unterverzeichnis heartbeat befinden sich die mitgelieferten OCF-Skripte. Der Cluster durchsucht automatisch alle Verzeichnisse unterhalb von /usr/lib/ocf/resource.d nach vorhandenen Skripten. Wie in Abbildung 1 dargestellt, sieht man unter Class/Provider seinen selbst definierten Provider-Namen. Die beiden Parameter vmxpath und vmwarecmdbin müssen gesetzt werden. Weitere Attribute sind optional und können über Add Parameter hinzugefügt werden. Den konfigurierten Parametern werden vom Cluster beim Aufruf des OCF-Skriptes automatisch Variablen zugewiesen. Der Wert von vmxpath wird in der Variable OCF_RESKEY_vmxpath stehen und vmwarecmdbin der Variable OCF_RESKEY_vmwarecmdbin zugewiesen. Innerhalb des Skriptes kann man dann mit Hilfsmitteln der Shell auf die Variablen zugreifen.
OCF-Skripte sind normale Shell-Skripte, die bestimmte Argumente erwarten, wie z. B. meta-data. Ruft man ein OCF-Skript mit dem Argument meta-data auf, liefert es in XML-Sprache die möglichen, auswertbaren Parameter. In Abbildung 2 ist die Ausgabe von meta-data für das vmware-Skript abgebildet. vmwarecmdbin ist hier schon mit einem Defaultwert belegt und der Pfad für die VMware-Gastkonfigurationsdatei (vmxpath) muss noch gesetzt werden. Außer dem Argument meta-data können auch noch andere übergeben werden. Für die Entwicklung von eigenen OCF-Resource-Skripten ist es wichtig, die richtigen Rückgabewerte zurückzugeben.
Mögliche Parameter und Rückgabewerte:
Parameter, die bei Master/Slave- oder Clone-Ressourcen verwendet werden:
Da OCF-Skripte ganz normale Shell-Skripte sind, können diese auch außerhalb des Clusters in der Shell aufgerufen, eingesehen und analysiert werden. Zudem liefert das Heartbeat-Paket ein Kommandozeilen-Tool namens ocf-tester mit, mit dem OCF-Skripte getestet werden können. Abbildung 3 zeigt ein Beispiel.
Heartbeat-Version 2 hat für die meisten Einsatzgebiete passende Skripte parat. Normalerweise bringen die Cluster-Dienste ihre Start/Stopp-Skripte schon mit. Falls dies einmal nicht der Fall sein sollte oder spezielle Anpassungen notwendig sind, ist es sehr einfach, für den Cluster ein passendes Skript zu erstellen oder zu erweitern. Mit Hilfe des ocf-tester können Skripte, die dem OCF-Standard entsprechen, mit Übergabeparametern gefüttert und auf das korrekte Antwortverhalten geprüft werden.
Christian Fertsch (info@ordix.de).