Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Kapitel 1 Überblick über die Ressourcenverwaltung

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:


Hinweis –

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.


Sun Cluster-Anwendungsumgebung

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.

Die folgende Abbildung verdeutlicht die Beziehungen zwischen den aufgeführten Elementen.

Abbildung 1–1 Programmierarchitektur

Diagramm zur Darstellung der Beziehungen zwischen Rückmeldemethoden, RMAPI, Prozessverwaltungsprogramm (PMF) und DSDL

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.

RGM-Modell

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.

Ressourcentypen

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.


Hinweis –

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.

Ressourcen

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.

Ressourcengruppen

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

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:

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.

Rückmeldemethoden

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:

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.

Programmierschnittstellen

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.

RMAPI

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.

DSDL

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:

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).

SunPlex Agent Builder

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.

Verwaltungsschnittstelle von Ressourcengruppen-Manager

Sun Cluster stellt sowohl eine grafische Benutzeroberfläche als auch eine Reihe von Befehlen für die Verwaltung eines Clusters bereit.

SunPlex-Manager

SunPlex-Manager ist ein webbasiertes Tool, mit dem Sie folgende Aufgaben ausführen können:

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.

Verwaltungsbefehle

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.