Dieses Buch enthält Richtlinien zum Erstellen von Ressourcentypen für Softwareanwendungen wie Oracle®, Sun JavaTM System Web Server (früher Sun TM ONE Web Server), DNS usw. Insofern ist es für Ressourcentypentwickler konzipiert.
Dieses Kapitel bietet einen Überblick über die Konzepte, die Sie für die Entwicklung eines Datendienstes beherrschen sollten, und enthält folgende Informationen:
In diesem Buch werden die Begriffe Ressourcentyp und Datendienst synonym verwendet. Der Begriff Agent kommt in dem Handbuch kaum vor, entspricht aber Ressourcentyp und Datendienst.
Mithilfe des Sun Cluster-Systems können Anwendungen als hoch verfügbare und Scalable-Ressourcen ausgeführt und verwaltet werden. Das Cluster-Programm mit der Bezeichnung Ressourcengruppen-Manager bzw. RGM stellt den Mechanismus für hohe Verfügbarkeit und Skalierbarkeit bereit. Die Programmierschnittstelle für dieses Programm setzt sich aus folgenden Elementen zusammen.
Einem Satz Rückmeldemethoden, die Sie schreiben und mit deren Hilfe RGM eine Anwendung auf dem Cluster steuern kann.
Die Ressourcenverwaltungs-API (RMAPI), ein Satz Routinen und Funktionen auf niedriger Ebene, die zum Schreiben von Rückmeldemethoden eingesetzt werden können. Diese APIs sind in der libscha.so-Bibliothek implementiert.
Prozessverwaltungsprogramme (Process Management Facilities, PMF) für das Überwachen und Neustarten von Prozessen auf dem Cluster.
DSDL (Data Service Development Library, Datendienst-Entwicklungsbibliothek), eine Reihe von Bibliotheksfunktionen, welche die API niedriger Ebene und Prozessverwaltungsfunktionen auf einer höheren Ebene einkapseln. Sie bieten weitere Funktionalität und erleichtern damit das Schreiben von Rückmeldemethoden. Diese Funktionen sind in der libdsdev.so -Bibliothek implementiert.
Die folgende Abbildung verdeutlicht die Beziehungen zwischen den aufgeführten Elementen.
Im Sun Cluster-Paket ist SunPlexTM Agent Builderenthalten, ein Tool zur Automatisierung des Datendienst-Erstellungsprozesses (siehe Kapitel 9). Agent Builder generiert Datendienstcode entweder in C unter Verwendung von DSDL-Funktionen zum Schreiben der Rückmeldemethoden oder in Korn-Shell (ksh) unter Verwendung von API-Befehlen auf niedriger Ebene zum Schreiben der Rückmeldemethoden.
RGM wird als Dämon auf jedem Cluster-Knoten ausgeführt und startet und stoppt die Ressourcen auf ausgewählten Knoten automatisch, entsprechend den vorkonfigurierten Richtlinien. RGM macht eine Ressource hoch verfügbar, wenn ein Knoten versagt oder neu startet, indem die Ressource auf dem betroffenen Knoten gestoppt und auf einem anderen Knoten neu gestartet wird. RGM sorgt auch für das automatische Starten und Stoppen der ressourcenspezifischen Monitore, die Ressourcenfehler feststellen und fehlerhafte Ressourcen auf einen anderen Knoten verschieben sowie andere Aspekte der Ressourcenleistung überwachen können.
RGM unterstützt sowohl Failover-Ressourcen, die jeweils nur auf einem Knoten online sein können, als auch Scalable-Ressourcen, die auf mehreren Knoten gleichzeitig online sein können.
Dieser Abschnitt stellt einige grundlegende Begriffe vor und geht auf Einzelheiten von RGM und der dazugehörigen Schnittstellen ein.
RGM unterstützt drei große Gruppen von miteinander verbundenen Objekten: Ressourcentypen, Ressourcen und Ressourcengruppen. Anhand des folgenden Beispiels sollen diese Objekte vorgestellt werden.
Ein Entwickler implementiert einen Ressourcentyp, ha-oracle, der eine vorhandene Oracle DBMS-Anwendung hoch verfügbar macht. Ein Endbenutzer definiert jeweils eine Datenbank für Marketing, IT und Finanzen. Alle Datenbanken sind Ressourcen des Typs ha-oracle. Der Cluster-Administrator legt diese Ressourcen in unterschiedlichen Ressourcengruppen ab, so dass sie auf verschiedenen Knoten laufen und unabhängig voneinander Failover ausführen können. Ein Entwickler erstellt einen zweiten Ressourcentyp, ha-calender, um einen hoch verfügbaren Kalenderserver zu implementieren, der eine Oracle-Datenbank benötigt. Der Cluster-Administrator legt die Ressource für den Finanzkalender in derselben Ressourcengruppe wie die Finanzdatenbankressource ab, so dass beide Ressourcen auf demselben Knoten laufen und gemeinsam Failover ausführen.
Ein Ressourcentyp besteht aus einer Softwareanwendung, die auf dem Cluster ausgeführt wird, Steuerprogrammen, die von RGM als Rückmeldemethoden zum Verwalten der Anwendung als Cluster-Ressource verwendet werden, sowie einem Satz Eigenschaften, die Bestandteil der statischen Cluster-Konfiguration sind. RGM verwendet Ressourcentypeigenschaften für die Verwaltung von Ressourcen eines bestimmten Typs.
Neben einer Softwareanwendung kann ein Ressourcentyp weitere Systemressourcen wie Netzwerkadressen darstellen.
Der Ressourcentypentwickler gibt die Eigenschaften für den Ressourcentyp an und stellt deren Werte in einer Ressourcentyp-Registrierungsdatei (RTR-Datei) ein. Die RTR-Datei hat ein klar definiertes Format, das in Einstellen der Ressourcen- und Ressourcentypeigenschaften und in der Online-Dokumentation unter rt_reg(4) beschrieben wird. Die Beschreibung einer RTR-Beispieldatei finden Sie in Definieren der Ressourcentyp-Registrierungsdatei.
Tabelle A–1 enthält eine Liste der Ressourcentypeigenschaften.
Der Cluster-Administrator installiert und registriert die Ressourcentypimplementierung und die zugrunde liegende Anwendung auf einem Cluster. Das Registrierungsverfahren gibt die Informationen aus der Ressourcentyp-Registrierungsdatei in die Cluster-Konfiguration ein. Das Verfahren für das Registrieren eines Datendienstes wird im Sun Cluster Data Services Planning and Administration Guide for Solaris OS beschrieben.
Eine Ressource erbt die Eigenschaften und Werte ihres Ressourcentyps. Zusätzlich kann ein Entwickler Ressourceneigenschaften in der Ressourcentyp-Registrierungsdatei deklarieren. Eine Liste mit Ressourceneigenschaften finden Sie unter Tabelle A–2.
Der Cluster-Administrator kann die Werte bestimmter Eigenschaften ändern, abhängig davon, wie sie in der Ressourcentyp-Registrierungsdatei (RTR-Datei) angegeben wurden. Eigenschaftsdefinitionen können zum Beispiel einen Bereich zulässiger Werte angeben und bestimmen, wann die Eigenschaft einstellbar ist. Beispiel: Bei Erstellung, Jederzeit, Nie. Innerhalb dieser Spezifikationen kann der Cluster-Administrator mithilfe von Verwaltungsbefehlen Änderungen an den Eigenschaften vornehmen.
Der Cluster-Administrator kann viele Ressourcen desselben Typs erstellen. Dabei hat jede Ressource ihren eigenen Namen und einen eigenen Satz Eigenschaftswerte, so dass mehr als eine Instanz der zugrunde liegenden Anwendung auf dem Cluster laufen kann. Für jede Instanz ist ein einmaliger Name innerhalb des Clusters erforderlich.
Jede Ressource muss in einer Ressourcengruppe konfiguriert werden. RGM bringt alle Ressourcen in einer Gruppe gemeinsam auf demselben Knoten online bzw. offline. Wenn RGM eine Ressourcengruppe online oder offline bringt, ruft das Programm Rückmeldemethoden für die einzelnen Ressourcen in der Gruppe auf.
Die Knoten, auf denen eine Ressourcengruppe zurzeit online ist, werden als primär bzw. Primärknoten bezeichnet. Eine Ressourcengruppe wird von jedem ihrer Primärknoten unterstützt. Jeder Ressourcengruppe ist eine Nodelist-Eigenschaft zugeordnet, die vom Cluster-Administrator eingestellt wird und die alle potenziellen Primärknoten bzw. Master der Ressourcengruppe identifiziert.
Eine Ressourcengruppe verfügt zudem über einen Satz Eigenschaften. Diese Eigenschaften umfassen Konfigurationseigenschaften, die vom Cluster-Administrator eingestellt werden, sowie dynamische Eigenschaften, die RGM einstellt und die den aktiven Zustand der Ressourcengruppe wiedergeben.
RGM definiert zwei Typen von Ressourcengruppen, Failover und Scalable. Eine Failover-Ressourcengruppe kann nur jeweils auf einem Knoten online sein, während eine Scalable-Ressourcengruppe auf mehreren Knoten gleichzeitig online sein kann. RGM stellt einen Satz Eigenschaften bereit, um die Erstellung der einzelnen Ressourcengruppentypen zu unterstützen. Weitere Einzelheiten zu diesen Eigenschaften finden Sie unter Übertragen eines Datendienstes auf einen Cluster und Implementieren von Rückmeldemethoden.
Eine Liste von Ressourcengruppeneigenschaften finden Sie unter Tabelle A–3.
Ressourcengruppen-Manager (RGM) wird als Dämon, rgmd, implementiert, der auf jedem Mitgliedsknoten des Clusters läuft. Alle rgmd-Prozesse kommunizieren miteinander und arbeiten als eine Cluster-weite Funktion zusammen.
RGM unterstützt folgende Funktionen:
RGM versucht bei jedem Knotenstart oder -absturz, alle verwalteten Ressourcen verfügbar zu halten, indem sie automatisch auf den entsprechenden Mastern online gebracht werden.
Wenn eine bestimmte Ressource fehlschlägt, kann ihr Überwachungsprogramm anfordern, dass die Ressourcengruppe auf demselben Master neu gestartet wird oder dass sie zu einem neuen Master wechselt.
Der Cluster-Administrator kann einen Verwaltungsbefehl ausgeben, um eine der folgenden Aktionen anzufordern:
Ändern des Masters für eine Ressourcengruppe,
Aktivieren oder Deaktivieren einer bestimmten Ressource innerhalb einer Ressourcengruppe,
Erstellen, Löschen oder Ändern einer Ressource, einer Ressourcengruppe oder eines Ressourcentyps.
Wenn RGM Konfigurationsänderungen aktiviert, koordiniert das Programm seine Aktionen auf allen Mitgliedsknoten des Clusters. Diese Aktivität wird als Rekonfiguration bezeichnet. Um eine Zustandsänderung bei einer einzelnen Ressource vorzunehmen, ruft RGM eine für den Ressourcentyp spezifische Rückmeldemethode auf.
Das Sun Cluster Framework verwendet einen Rückmeldemechanimus für die Kommunikation zwischen einem Datendienst und RGM. Das Framework definiert eine Reihe von Rückmeldemethoden, einschließlich deren Argumente und Rückgabewerte sowie der Umstände, unter denen RGM jede Methode aufruft.
Ein Datendienst wird erstellt, indem der Entwickler eine Reihe von einzelnen Rückmeldemethoden codiert und jede Methode als ein von RGM aufrufbares Steuerprogramm implementiert. Das bedeutet, dass der Datendienst nicht aus einer einzigen ausführbaren Datei besteht, sondern aus einer Reihe ausführbarer Skripts (ksh) oder Binärdateien (C), die jeweils direkt von RGM aufgerufen werden können.
Rückmeldemethoden werden bei RGM über die Ressourcentyp-Registrierungsdatei (RTR-Datei) registriert. In der RTR-Datei wird das Programm für jede Methode identifiziert, die Sie für den Datendienst implementiert haben. Wenn ein Systemadministrator den Datendienst auf einem Cluster registriert, liest RGM die RTR-Datei, die neben anderen Informationen die Identität der Rückmeldeprogramme enthält.
Die einzigen erforderlichen Rückmeldemethoden für einen Ressourcentyp sind eine Start-Methode (Start oder Prenet_start) und eine Stopp-Methode (Stop oder Postnet_stop).
Die Rückmeldemethoden lassen sich in folgende Kategorien zusammenfassen:
Steuerungs- und Initialisierungsmethoden
Start und Stop starten und stoppen Ressourcen in einer Gruppe, die online bzw. offline gebracht wird.
Init, Fini und Boot führen Initialisierungs- und Beendigungscode für Ressourcen aus.
Verwaltungsunterstützungsmethoden
Validate überprüft von einer Verwaltungsaktion eingestellte Eigenschaften.
Update aktualisiert die Eigenschaftseinstellungen einer Online-Ressource.
Netzbezogene Methoden
Prenet_start und Postnet_stop führen spezielle Aktionen zum Hoch- bzw. Herunterfahren aus, bevor Netzwerkadressen in derselben Ressourcengruppe als aktiv bzw. inaktiv konfiguriert werden.
Monitor-Steuerungsmethoden
Monitor_start und Monitor_stop starten bzw. stoppen den Monitor für eine Ressource.
Monitor_check beurteilt die Zuverlässigkeit eines Knotens, bevor eine Ressourcengruppe auf den Knoten verschoben wird.
In Kapitel 4 und der Online-Dokumentation rt_callbacks(1HA) finden Sie weitere Informationen über die Rückmeldemethoden. Rückmeldemethoden in Beispieldatendiensten finden Sie in Kapitel 5 und Kapitel 8.
Für das Schreiben von Datendienstcode stellt die Ressourcenverwaltungsarchitektur Folgendes bereit. eine API auf niedriger Ebene bzw. Basis-API, eine Bibliothek auf höherer Ebene, die auf der Basis-API aufbaut, sowie das Tool SunPlex Agent Builder. Letzteres generiert einen Datendienst anhand einiger grundlegender Benutzereingaben automatisch.
Die RMAPI (Resource Management API, Ressourcenverwaltungs-API) stellt eine Reihe von Routinen auf niedriger Ebene bereit, mit denen ein Datendienst auf Informationen zu Ressourcen, Ressourcentypen und Ressourcengruppen im System zugreifen, einen lokalen Neustart oder Failover anfordern und den Ressourcenstatus einstellen kann. Der Zugriff auf diese Funktionen erfolgt über die libscha.so-Bibliothek. Die RMAPI stellt diese Rückmeldemethoden sowohl in Form von Shell-Befehlen als auch in Form von C-Funktionen bereit. Weitere Informationen zu den RMAPI-Routinen finden Sie unter scha_calls(3HA) und in Kapitel 4. Beispiele für die Verwendung der Routinen in Rückmeldemethoden für Beispieldatendienste finden Sie in Kapitel 5.
Auf der RMAPI setzt die DSDL auf, die ein integriertes Framework auf höherer Ebene bereitstellt, jedoch das zugrunde liegende Methoden-Rückmeldemodell von RGM beibehält. Die DSDL stellt mehrere Funktionen für die Datendienstentwicklung zusammen, zu denen u. a. folgende gehören:
libscha.so — die Ressourcenverwaltungs-APIs auf niedriger Ebene
PMF — die Prozessverwaltungsfunktion, die das Überwachen von Prozessen und untergeordneten Prozessen sowie bei Versagen deren Neustart ermöglicht (siehe pmfadm(1M) und rpc.pmfd(1M)).
hatimerun — eine Funktion für das Ausführen von Programmen mit Zeitüberschreitungen (siehe hatimerun(1M)).
Für die meisten Anwendungen bietet die DSDL den größten Teil der Funktionen, die für das Erstellen eines Datendienstes erforderlich sind. Beachten Sie jedoch, dass die DSDL die API auf niedriger Ebene nicht ersetzt, sondern einkapselt und erweitert. Viele DSDL-Funktionen rufen die libscha.so-Funktionen auf. Sie können libscha.so-Funktionen auch direkt aufrufen, während Sie die DSDL zum Codieren eines Großteils des Datendienstes verwenden. Die libdsdev.so-Bibliothek enthält die DSDL-Funktionen.
Weitere Informationen zur DSDL finden Sie in Kapitel 6 und in der Online-Dokumentation unter scha_calls(3HA).
Agent Builder ist ein Tool, das die Erstellung eines Datendienstes automatisiert. Der Benutzer gibt grundlegende Informationen über die Zielanwendung und den zu erstellenden Datendienst ein.Agent Builder generiert einen Datendienst mit Quell- und ausführbarem Code (C- oder Korn-Shell), einer angepassten RTR-Datei und einem SolarisTM-Paket.
Für die meisten Anwendungen können Sie Agent Builder zum Generieren eines vollständigen Datendienstes einsetzen. Anschließend sind nur noch kleinere manuelle Änderungen erforderlich. Anwendungen mit komplizierteren Anforderungen, wie zum Beispiel Validierungsprüfungen für zusätzliche Eigenschaften, stellen möglicherweise Ansprüche, denen Agent Builder nicht gerecht werden kann. Auch in diesen Fällen können Sie jedoch Agent Builder für das Generieren eines großen Teils des Codes einsetzen und den restlichen Code manuell erstellen. Zumindest kann Agent Builder für das Generieren des Solaris-Pakets verwendet werden.
Sun Cluster stellt sowohl eine grafische Benutzeroberfläche als auch eine Reihe von Befehlen für die Verwaltung eines Clusters bereit.
SunPlex-Manager ist ein webbasiertes Tool, mit dem Sie folgende Aufgaben ausführen können:
Installieren eines Clusters,
Verwalten eines Clusters,
Erstellen und Konfigurieren von Ressourcen und Ressourcengruppen,
Konfigurieren von Datendiensten mit der Sun Cluster-Software.
Anweisungen zum Installieren von SunPlex-Manager und zur Verwendung von SunPlex-Manager für die Installation der Cluster-Software finden Sie im Sun Cluster Software Installation Guide for Solaris OS. SunPlex-Manager stellt für die meisten einmaligen Verwaltungsaufgaben Online-Hilfe bereit.
Die Sun Cluster-Befehle für die Verwaltung von RGM-Objekten sind scrgadm(1M), scswitch(1M) und scstat(1M) -g.
Der scrgadm-Befehl ermöglicht das Anzeigen, Erstellen, Konfigurieren und Löschen der von RGM verwendeten Ressourcentypen, Ressourcengruppen und Ressourcenobjekte. Der Befehl ist Bestandteil der Verwaltungsschnittstelle für den Cluster und darf nicht in demselben Programmierkontext wie die im Rest dieses Kapitels beschriebene Anwendungsschnittstelle verwendet werden. scrgadm ist jedoch das Tool für den Aufbau der Cluster-Konfiguration, in der die API arbeitet. Ein Verständnis der Verwaltungsschnittstelle stellt den Kontext für das Verstehen der Anwendungsschnittstelle bereit. In der Online-Dokumentation scrgadm( 1M) finden Sie Einzelheiten über die Verwaltungsaufgaben, die mit dem Befehl ausgeführt werden können.
Der scswitch-Befehl schaltet die Ressourcengruppen auf angegebenen Knoten zwischen online und offline um und aktiviert bzw. deaktiviert eine Ressource oder deren Überwachung. Einzelheiten zu den Verwaltungsaufgaben, die mit diesem Befehl ausgeführt werden können, finden Sie in der Online-Dokumentation unter scswitch(1M).
Der Befehl scstat -g zeigt den aktuellen dynamischen Zustand aller Ressourcengruppen und Ressourcen an.