Dieses Handbuch liefert Richtlinien zur Erstellung eines Ressourcentyps für eine Softwareanwendung, wie Oracle®, Sun JavaTM System Web Server (früher Sun ONE Web Server) oder DNS. Insofern ist es für Ressourcentypentwickler konzipiert.
Dieses Kapitel enthält eine Übersicht über die Konzepte, die Sie zum Entwickeln eines Datendienstes kennen sollten. Dieses Kapitel behandelt die folgenden Themen:
In diesem Buch werden die Begriffe Ressourcentyp und Datendienst synonym verwendet. Der Begriff Agent, der in diesem Handbuch nur selten verwendet wird, ist identisch mit den Begriffen Ressourcentyp und Datendienst.
Mit dem Sun Cluster-System können Anwendungen als hoch verfügbare und skalierbare Ressourcen ausgeführt und verwaltet werden. Der Ressourcengruppen-Manager (RGM) bietet den geeigneten Mechanismus für eine hohe Verfügbarkeit und Skalierbarkeit. Folgende Elemente bilden die Programmierschnittstelle für Folgendes:
Einen Satz Rückmeldemethoden, die Sie schreiben und mit denen RGM eine Anwendung im Cluster steuern kann.
Die Ressourcenverwaltungs-API (RMAPI), ein Satz API-Befehle niedriger Ebene und Funktionen, die Sie zum Schreiben der Rückmeldemethoden verwenden können. Diese APIs sind in der libscha.so-Bibliothek implementiert.
Process Monitor Facility (PMF) zur Überwachung und zum Neustarten von Prozessen im Cluster.
Die Data Service Development Library (DSDL), ein Satz Bibliotheksfunktionen, der die API niedriger Ebene und die Prozessverwaltungsfunktionen einkapselt. Die DSDL bietet zusätzliche Funktionen zur Vereinfachung des Schreibens von Rückmeldemethoden. Diese Funktionen sind in der libdsdev.so-Bibliothek implementiert.
Die folgende Abbildung stellt die Beziehung dieser Elemente zueinander dar.
SunPlex Agent Builder, das in Kapitel 9, SunPlex Agent Builder beschrieben wird, ist ein Tool im Sun Cluster-Paket, mit dem der Prozess zum Erstellen eines Datendienstes automatisiert wird. Agent Builder generiert einen Datendienstcode in C (unter Verwendung der DSDL-Funktionen zum Schreiben der Rückmeldemethoden) oder in der Korn-Shell-Befehlssprache (ksh) (unter Verwendung der API-Befehle zum Schreiben von Rückmeldemethoden).
RGM führt an jedem Cluster-Knoten einen Dämon aus und startet und stoppt die Ressourcen an den ausgewählten Knoten entsprechend der vorkonfigurierten Richtlinien automatisch. RGM sorgt im Falle eines Knotenfehlers oder Neustarts für eine hohe Verfügbarkeit, indem die Ressourcen am betroffenenen Knoten angehalten und an einem anderen Knoten gestartet werden. RGM startet und stoppt auch ressourcenspezifische Monitore automatisch. Diese Monitore entdecken Ressourcenfehler und leiten fehlerhafte Ressourcen an andere Knoten weiter oder überwachen andere Aspekte der Ressourcenleistung.
RGM unterstützt sowohl Failover-Ressourcen, die jeweils nur an einem Knoten online sein können, als auch skalierbare Ressourcen, die an mehreren Knoten gleichzeitig online sein können.
In diesem Abschnitt werden einige grundlegende Begriffe beschrieben und RGM und seine Schnittstellen detailliert erläutert.
RGM verarbeitet drei Haupttypen von zueinander in Beziehung stehenden Objekten: Ressourcentypen, Ressourcen und Ressourcengruppen. Eine Möglichkeit zur Einführung dieser Objekte besteht in folgendem Beispiel.
Sie implementieren einen Ressourcentyp, ha-oracle, mit dem eine bereits vorhandene Oracle DBMS-Anwendung hoch verfügbar wird. Ein Endbenutzer definiert separate Datenbanken für das Marketing, Engineering und Finanzwesen, wovon jede den Ressourcentyp ha-oracle aufweist. Der Cluster-Administrator legt diese Ressourcen in separaten Ressourcengruppen ab, sodass sie auf unterschiedlichen Knoten ausgeführt werden können und jeweils unabhängig voneinander ein Failover stattfinden kann. Zur Implementierung eines hoch verfügbaren Kalenderservers, für den eine Oracle-Datenbank erforderlich ist, erstellen Sie einen zweiten Ressourcentyp, ha-calendar. 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 Folgendem:
Einer Softwareanwendung, die im Cluster ausgeführt werden soll
Steuerungsprogrammen, die von RGM als Rückmeldemethoden zur Verwaltung der Anwendung als Cluster-Ressource verwendet werden
Einem Satz Eigenschaften, die Teil der statischen Konfiguration eines Clusters bilden
RGM verwendet Ressourcentypeigenschaften für die Verwaltung von Ressourcen eines bestimmten Typs.
Zusätzlich zu einer Softwareanwendung kann ein Ressourcentyp andere Systemressourcen darstellen, zum Beispiel Netzwerkadressen.
Sie geben die Eigenschaften für den Ressourcentyp an und legen Eigenschaftswerte in einer RTR-Datei (Resource Type Registration, Ressourcentypregistrierung) fest. Die RTR-Datei folgt dem Format, das im Abschnitt Einstellen der Ressourcen- und Ressourcentypeigenschaften und in der Online-Dokumentation zu rt_reg(4) beschrieben wird. Eine Beschreibung einer RTR-Beispieldatei finden Sie auch im Abschnitt Definieren der Ressourcentyp-Registrierungsdatei.
Der Abschnitt Ressourcentypeigenschaften enthält eine Liste mit Ressourcentypeigenschaften.
Der Cluster-Administrator installiert und registriert die Ressourcentypimplementierung und die zugrunde liegende Anwendung auf einem Cluster. Das Registrierungsverfahren übernimmt die Informationen aus der RTR-Datei in die Cluster-Konfiguration. Im Sun Cluster Data Services Planning and Administration Guide for Solaris OS wird das Verfahren für das Registrieren eines Datendienstes beschrieben.
Eine Ressource erbt die Eigenschaften und Werte ihres Ressourcentyps. Außerdem können Sie Ressourceneigenschaften in der RTR-Datei deklarieren. Der Abschnitt Ressourceneigenschaften enthält eine Liste mit Ressourceneigenschaften.
Der Cluster-Administrator kann die Werte bestimmter Eigenschaften je nach ihrer Definition in der RTR-Datei ändern. Eigenschaftsdefinitionen können zum Beispiel einen Bereich von zulässigen Werten angeben. Eigenschaftsdefinitionen können auch festlegen, wann die Eigenschaft optimiert werden kann: niemals, immer, zum Zeitpunkt der Erstellung (wenn die Ressource dem Cluster hinzugefügt wird) oder bei Deaktivierung der Ressource. Mithilfe dieser Spezifikationen kann der Cluster-Administrator die Eigenschaften mithilfe von Verwaltungsbefehlen ändern.
Der Cluster-Administrator kann viele Ressourcen desselben Typs erstellen, wobei jede Ressource einen eigenen Namen und einen eigenen Satz mit Eigenschaftswerten besitzt , sodass mehr als eine Instanz der zugrunde liegenden Anwendung im Cluster ausgeführt werden 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, werden Rückmeldemethoden für die einzelnen Ressourcen in der Gruppe ausgeführt.
Die Knoten, an denen eine Ressourcengruppe derzeit online ist, heißen Primärknoten. Eine Ressourcengruppe wird von jedem ihrer Primärknoten unterstützt. Jede Ressourcengruppe weist eine verknüpfte Nodelist-Eigenschaft auf, die alle potenziellen Primärknoten oder Master der Ressourcengruppe identifiziert. Der Cluster-Administrator legt die Nodelist-Eigenschaft fest.
Einer Ressourcengruppe ist auch ein Satz Eigenschaften zugewiesen. 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 Arten von Ressourcengruppen: Failover und skalierbar. 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 Informationen über diese Eigenschaften finden Sie in den Abschnitten Übertragen eines Datendienstes auf einen Cluster und Implementieren von Rückmeldemethoden.
Der Abschnitt Ressourcengruppeneigenschaften enthält eine Liste mit Ressourcengruppeneigenschaften.
Ressourcengruppen-Manager (RGM) wird als Dämon, rgmd, implementiert, der an jedem Mitgliedsknoten eines Clusters ausgeführt wird. Alle rgmd-Prozesse kommunizieren miteinander und werden als einzelne Cluster-weite Funktion verwendet.
RGM unterstützt folgende Funktionen:
Sobald ein Knoten gestartet wird oder fehlschlägt, versucht RGM, die Verfügbarkeit aller verwalteten Ressourcengruppen aufrecht zu erhalten, indem sie automatisch auf dem richtigen Master 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 der Verarbeitung einer Ressourcengruppe.
Aktivieren oder Deaktivieren einer bestimmten Ressource innerhalb einer Ressourcengruppe.
Erstellen, Löschen oder Ändern eines Ressourcentyps, einer Ressource oder einer Ressourcengruppe.
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ückmeldemechanismus, der die Kommunikation zwischen einem Datendienst und RGM bietet. Das Framework definiert einen Satz Rückmeldemethoden, u.a. ihre Argumente und Rückgabewerte, sowie die Umstände, unter denen die einzelnen Methoden von RGM aufgerufen werden.
Sie erstellen einen Datendienst, indem Sie einen Satz einzelner Rückmeldemethoden kodieren und jede Methode als Steuerungsprogramm implementieren, die von RGM aufgerufen werden kann. Das heißt, der Datendienst besteht nicht aus einer einfachen ausführbaren Datei, sondern aus mehreren ausführbaren Skripten (ksh) oder Binärdateien (C), die vom RGM direkt aufgerufen werden können.
Rückmeldemethoden werden mit RGM über die RTR-Datei registriert. In der RTR-Datei identifizieren Sie das Programm für jede Methode, die Sie für den Datendienst implementiert haben. Wenn ein Cluster-Administrator den Datendienst auf einem Cluster registriert, liest RGM die RTR-Datei, die die Identität von Rückmeldeprogrammen und andere Informationen liefert.
Die einzigen erforderlichen Rückmeldemethoden für einen Ressourcentyp sind eine Startmethode ( Start oder Prenet_start) und eine Stopp-Methode (Stop oder Postnet_stop).
Die Rückmeldemethoden lassen sich in folgende Kategorien zusammenfassen:
Steuerungs- und Initialisierungsmethoden
Die Start- und Stop-Methoden starten und stoppen Ressourcen in einer Gruppe, die online oder offline gebracht wird.
Die Init-, Fini- und Boot-Methoden führen den Initialisierungs- und Beendigungscode für Ressourcen aus.
Verwaltungsunterstützungsmethoden
Die Validate-Methode prüft die Eigenschaften, die durch eine Verwaltungsaktion festgelegt werden können.
Die Update-Methode aktualisiert die Eigenschaftseinstellungen einer Online-Ressource.
Netzbezogene Methoden
Prenet_start und Postnet_stop führen besondere Operationen zum Starten und Abschalten aus, bevor Netzwerkadressen in derselben Ressourcengruppe für das Starten konfiguriert werden, oder nachdem sie für das Abschalten konfiguriert werden.
Monitor-Steuerungsmethoden
Monitor_start und Monitor_stop starten oder stoppen den Monitor für eine Ressource.
Monitor_check beurteilt die Zuverlässigkeit eines Knotens, bevor eine Ressourcengruppe auf den Knoten verschoben wird.
Weitere Informationen zu den Rückmeldemethoden finden Sie in Kapitel 3, Ressourcenverwaltungs-API-Referenz und in der Online-Dokumentation zu rt_callbacks(1HA). Weitere Informationen zu den Rückmeldemethoden in Beispieldatendiensten finden Sie in Kapitel 5, Beispieldatendienst und Kapitel 8, Beispielressourcentyp-Implementierung mit DSDL .
Zum Schreiben von Datendienstcode bietet die Ressourcenverwaltungsarchitektur eine Basis-API, eine Bibliothek auf übergeordneter Ebene, die auf die Basis-API aufsetzt, sowie SunPlex Agent Builder, ein Tool, mit dem ein Datendienst automatisch anhand Ihrer Eingabe generiert wird.
Die Ressourcenverwaltungs-API (RMAPI, Ressource Management API) bietet einen Satz von Funktionen, mit dem ein Datendienst auf Informationen über die Ressourcentypen, die Ressourcen und Ressourcengruppen im System zugreifen kann, um einen lokalen Neustart oder Failover anzufordern und den Ressourcenstatus festzulegen. Sie rufen diese Funtionen über die libscha.so-Bibliothek auf. 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-Funktionen finden Sie in der Online-Dokumentation zu scha_calls(3HA) und in Kapitel 3, Ressourcenverwaltungs-API-Referenz. Beispiele zur Verwendung dieser Funktionen in Beispieldatendienst-Rückmeldemethoden finden Sie in Kapitel 5, Beispieldatendienst.
Auf die RMAPI aufgesetzt ist die Data Service Development Library (DSDL), die ein integriertes Framework auf höherer Ebene bietet, während das zugrunde liegende Methodenrückmeldemodell des RGM beibehalten wird. Die libdsdev.so-Bibliothek enthält die DSDL-Funktionen. Die DSDL bringt mehrere Funktionen der Datendienstentwicklung zusammen, u.a. folgende:
libscha.so. Die Ressourcenverwaltungs-APIs niedriger Ebene.
PMF. Process Monitor Facility (PMF), das ein Mittel zur Überwachung von Prozessen und ihren untergeordneten Prozessen darstellt sowie zum Neustarten dieser Prozesse, wenn diese sterben. Weitere Informationen finden Sie in der Online-Dokumentation zu pmfadm(1M) und rpc.pmfd(1M).
hatimerun. Eine Option zum Ausführen von Programmen unter einer Zeitüberschreitung. Weitere Informationen finden Sie in der Online-Dokumentation zu 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. Auf ähnliche Weise können Sie libscha.so-Funktionen aufrufen, wenn Sie die DSDL zum Kodieren des größten Teils des Datendienstes verwenden.
Weitere Informationen zur DSDL finden Sie in Kapitel 6, Data Service Development Library und in der Online-Dokumentation zu 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, der Quell- und ausführbaren Code (C oder Korn-Shell), eine benutzerdefinierte RTR-Datei sowie ein Solaris-Paket enthält.
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. Selbst in diesen Fällen können Sie Agent Builder jedoch zum Generieren des größten Teils des Codes verwenden und dann den Rest manuell kodieren. Auf jeden Fall können Sie Agent Builder zum Generieren des Solaris-Pakets verwenden.
Sun Cluster bietet sowohl eine grafische Benutzeroberfläche (GUI) als auch einen Befehlssatz zur Verwaltung eines Clusters.
SunPlex-Manager ist ein webbasiertes Tool, mit dem Sie folgende Aufgaben durchfü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 zur Verwendung von SunPlex-Manager für die Installation von Cluster-Software finden Sie im Sun Cluster Handbuch Softwareinstallation für Solaris OS. SunPlex-Manager stellt für die meisten einmaligen Verwaltungsaufgaben Online-Hilfe bereit.
Sie können die meisten Sun Cluster-Verwaltungsaufgaben interaktiv mit dem scsetup(1M)-Dienstprogramm durchführen.
Sie können die folgenden Sun Cluster-Elemente mit dem scsetup-Dienstprogramm verwalten:
Quorum
Ressourcengruppen
Datendienste
Cluster-Interconnect
Gerätegruppen und Datenträger
Private Hostnamen
Neue Knoten
Andere Cluster-Eigenschaften
Sie können auch die folgenden Operationen mit dem scsetupDienstprogramm ausführen:
Erstellen einer Ressourcengruppe
Hinzufügen einer Netzwerkressource zu einer Ressourcengruppe
Hinzufügen einer Datendienstressource zu einer Ressourcengruppe
Registrieren eines Ressourcentyps
Versetzen einer Ressourcengruppe in den Online- oder Offline-Modus
Wechseln einer Ressourcengruppe
Aktivieren oder Deaktivieren einer Ressource
Ändern von Ressourcengruppeneigenschaften
Ändern von Ressourceneigenschaften
Entfernen einer Ressource aus einer Ressourcengruppe
Entfernen einer Ressourcengruppe
Löschen des Stop_failed-Fehlererrorflags aus einer Ressource
Die Sun Cluster-Befehle zur Verwaltung von RGM-Objekten lauten scrgadm, scswitch und scstat -g.
Mit dem Befehl scrgadm können Sie einen Ressourcentyp, eine Ressourcengrpupe und die Ressourcenobjekte, die vom RGM verwendet werden, anzeigen, erstellen, konfigurieren und löschen. Dieser Befehl ist Teil der Verwaltungsschnittstelle für den Cluster, soll jedoch nicht im selben Programmierkontext wie die Anwendungsschnittstelle verwendet werden, die im restlichen Kapitel beschrieben wird. 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. Weitere Informationen über die Verwaltungsaufgaben, die Sie mit dem Befehl durchführen können, finden Sie in der Online-Dokumentation zu scrgadm(1M).
Mit dem Befehlscswitch werden die Ressourcengruppen an bestimmten Knoten online und offline geschaltet. Mit diesem Befehl wird eine Ressource bzw. ihr Monitor auch aktiviert oder deaktiviert. Weitere Informationen zu den Verwaltungsaufgaben, die mit diesem Befehl ausgeführt werden können, finden Sie in der Online-Dokumentation zu scswitch(1M).
Der Befehl scstat -g zeigt den aktuellen dynamischen Zustand aller Ressourcengruppen und Ressourcen an. In der Online-Dokumentation zu scstat(1M) finden Sie weitere Informationen zu den Verwaltungsaufgaben, die mit diesem Befehl ausgeführt werden können.