Dieses Kapitel bietet einen Überblick über die Anwendungsprogrammierschnittstellen, aus denen sich die DSDL (Data Service Development Library, Datendienst-Entwicklungsbibliothek) zusammensetzt. Die DSDL ist in der libdsdev.so-Bibliothek implementiert und im Sun Cluster-Paket enthalten.
Dieses Kapitel behandelt die folgenden Themen:
Die DSDL-API befindet sich auf einer Ebene über der RMAPI. Sie übersteuert die RMAPI jedoch nicht, sondern kapselt sie ein und erweitert die RMAPI-Funktionalität. Die DSDL vereinfacht die Datendienstentwicklung, indem sie vorentwickelte Lösungen für bestimmte Sun Cluster-Integrationsfragen bereitstellt. Damit können Sie einen Großteil der für die Entwicklung erforderlichen Zeit für Fragen der Hochverfügbarkeit und Skalierbarkeit Ihrer Anwendung aufwenden, ohne sich lange mit der Integration der Start-, Schließ- und Monitor-Verfahren für die Anwendung mit Sun Cluster aufzuhalten.
Alle Rückmeldemethoden benötigen Zugriff auf die Konfigurationseigenschaften. Die DSDL unterstützt den Zugriff auf die Eigenschaften folgendermaßen:
Initialisieren der Umgebung,
Bereitstellen eines Satzes praktischer Funktionen zum Abrufen von Eigenschaftswerten.
Die scds_initialize-Funktion, die zu Beginn jeder Rückmeldemethode aufgerufen werden muss, führt folgende Aktionen aus:
Sie prüft und verarbeitet die Befehlszeilenargumente (argc und argv[]), die RGM an die Rückmeldemethode übergibt. Das erspart Ihnen das Schreiben einer Befehlszeilen-Analysefunktion.
Sie konfiguriert interne Datenstrukturen, die von anderen DSDL-Funktionen verwendet werden können. So speichern zum Beispiel die Funktionen, die Eigenschaftswerte von RGM abrufen, die Werte in diesen Strukturen. Auch Werte aus der Befehlszeile, die Vorrang vor den von RGM abgerufenen Werte haben, werden in den Datenstrukturen gespeichert.
Für die Validate-Methode analysiert scds_initialize die Eigenschaftswerte, die an die Befehlszeile übergeben werden. Damit ersparen Sie sich das Schreiben einer Analysefunktion für Validate.
Die scds_initialize-Funktion initialisiert auch die Protokollierumgebung und validiert die Testsignaleinstellungen des Fehler-Monitors.
Die DSDL stellt Funktionssätze zum Abrufen von Ressourcen-, Ressourcentyp- und Ressourcengruppeneigenschaften sowie von häufig verwendeten Erweiterungseigenschaften bereit. Diese Funktionen wenden folgende Konventionen für den standardmäßigen Zugriff auf Eigenschaften an:
Jede Funktion übernimmt nur ein Handle-Argument (zurückgegeben von scds_initialize).
Jede Funktion entspricht einer bestimmten Eigenschaft. Der Rückgabewerttyp der Funktion entspricht dem Typ des abgerufenen Eigenschaftswerts.
Funktionen geben keine Fehler zurück, da die Werte von scds_initialize vorberechnet wurden. Funktionen rufen Werte von RGM ab, es sei denn, es wird ein neuer Wert an die Befehlszeile übergeben.
Eine Start-Methode hat die Aufgabe, die erforderlichen Aktionen zum Starten eines Datendienstes auf einem Cluster-Knoten auszuführen. In der Regel umfasst dieser Vorgang das Abrufen der Ressourceneigenschaften, Suchen der anwendungsspezifischen ausführbaren Dateien und Konfigurationsdateien sowie das Starten der Anwendung über die entsprechenden Befehlszeilenargumente.
Die scds_initialize-Funktion ruft die Ressourcenkonfiguration ab. Die Start-Methode kann die bereitgestellten Eigenschaftsfunktionen zum Abrufen der Werte spezifischer Eigenschaften wie Confdir_list verwenden, welche die Konfigurationsverzeichnisse und -dateien für die zu startende Anwendung identifizieren.
Eine Start-Methode kann scds_pmf_start aufrufen, um eine Anwendung unter Steuerung durch PMF (Process Monitor Facility) zu starten. Mit PMF können Sie die Überwachungsebene angeben, die auf den Prozess angewendet werden soll. Außerdem ermöglicht PMF den Neustart des Prozesses, falls er fehlschlagen sollte. Ein Beispiel für eine mit der DSDL implementierte Start-Methode finden Sie unter xfnts_start-Methode.
Eine Stop-Methode muss idempotent sein, um mit Erfolg zu enden, auch wenn sie auf einem Knoten aufgerufen wird, auf dem die Anwendung nicht läuft. Wenn die Stop-Methode fehlschlägt, wird die zu stoppende Ressource in den STOP_FAILED-Zustand versetzt, was zu einem harten Neustart des Clusters führen kann.
Um einen STOP_FAILED-Zustand der Ressource zu vermeiden, muss die Stop-Methode die Ressource unbedingt stoppen. Die scds_pmf_stop-Funktion unternimmt in Phasen unterteilte Ressourcenstoppversuche. Sie versucht zunächst, die Ressource mit dem SIGTERM-Signal zu stoppen. Wenn dies nicht erfolgreich ist, wird ein SIGKILL-Signal verwendet. Weitere Details finden Sie unter scds_pmf_stop(3HA) .
Die DSDL vereinfacht das Implementieren eines Fehler-Monitors erheblich, indem sie ein vordefiniertes Modell bereitstellt. Eine Monitor_start-Methode startet den Fehler-Monitor unter PMF-Steuerung, wenn die Ressource auf einem Knoten gestartet wird. Der Fehler-Monitor läuft in einer Schleife, solange die Ressource auf dem Knoten ausgeführt wird. Die Logik auf hoher Ebene eines DSDL-Fehler-Monitors ist Folgende:
Die scds_fm_sleep-Funktion verwendet die Eigenschaft Thorough_probe_interval, um den Zeitabstand zwischen den Testsignalen zu bestimmen. Alle Anwendungsprozessfehler, die PMF während dieses Intervalls feststellt, führen zu einem Neustart der Ressource.
Das Testsignal selbst gibt einen Wert zurück, der die Schwere der Fehler angibt. Die Werte reichen von 0 (kein Fehler) bis 100 (Totalfehlschlag).
Der Rückgabewert des Testsignals wird an die scds_action -Funktion gesendet, die eine kumulative Fehlerhistorie innerhalb des Intervalls der Retry_interval-Eigenschaft unterhält.
Die scds_action-Funktion bestimmt folgendermaßen, wie im Fall eines Fehlers verfahren wird.
Wenn der kumulative Fehler unter 100 liegt, geschieht nichts.
Wenn der kumulative Fehler 100 (Totalfehlschlag) erreicht, wird der Datendienst neu gestartet. Wenn Retry_interval überschritten ist, wird die Historie zurückgesetzt.
Wenn die Anzahl der Neustarts den in der Retry_count-Eigenschaft angegebenen Wert innerhalb der in Retry_interval angegebenen Zeit überschreitet, wird für den Datendienst ein Failover ausgeführt.
Die DSDL stellt praktische Funktionen bereit, mit denen Netzwerkadressinformationen für Ressourcen und Ressourcengruppen zurückgegeben werden können. So ruft zum Beispiel scds_get_netaddr_list die Netzwerkadressressourcen ab, die von einer Ressource verwendet werden. Dadurch wird es dem Fehler-Monitor ermöglicht, die Anwendung zu testen.
Die DSDL enthält auch einen Satz Funktionen für die TCP-basierte Überwachung. In der Regel erstellen diese Funktionen eine einfache Socket-Verbindung mit einem Dienst, lesen und schreiben Daten an den Dienst und trennen dann die Verbindung mit dem Dienst. Das Testsignalergebnis kann an die DSDL-Funktion scds_fm_action gesendet werden, um über die auszuführende Aktion zu entscheiden.
Ein Beispiel für TCP-basierte Fehlerüberwachung finden Sie unter xfnts_validate-Methode.
Die DSDL verfügt über integrierte Funktionen, mit denen Sie Datendienstfehler beheben können.
Das DSDL-Dienstprogramm scds_syslog_debug() bietet einen grundlegenden Rahmen, in dem der Ressourcentypimplementierung Fehlerbehebungsanweisungen hinzugefügt werden können. Die Fehlerbehebungs-Ebene (eine Zahl zwischen 1 und 9) kann pro Ressourcentypimplementierung und Cluster-Knoten dynamisch eingerichtet werden. Eine Datei mit dem Namen /var/cluster/rgm/rt/RT-Name/loglevel, die lediglich eine ganze Zahl zwischen 1 und 9 enthält, wird von allen Ressourcentyp-Rückmeldemethoden gelesen. Die DSDL-Routine scds_initialize() liest diese Datei und stellt die Fehlerbehebungsebene intern auf die angegebene Ebene ein. Die Standard-Fehlerbehebungsebene ist 0 und gibt an, dass der Datendienst keine Fehlerbehebungsmeldungen protokolliert.
Die Funktion scds_syslog_debug() verwendet die Rückgabe der Funktion scha_cluster_getlogfacility() mit einem Vorrang von LOG_DEBUG. Diese Fehlerbehebungsmeldungen können in /etc/syslog.conf konfiguriert werden.
Manche Fehlerbehebungsmeldungen können in Informationsmeldungen für den regulären Betrieb des Ressourcentyps umgewandelt werden (zum Beispiel mit dem Vorrang LOG_INFO). Dafür wird das Dienstprogramm scds_syslog verwendet. In der DSDL-Beispielanwendung in Kapitel 8, Beispielressourcentyp-Implementierung mit DSDL können Sie sehen, dass sehr viele scds_syslog_debug- und scds_syslog-Funktionen eingesetzt werden.
Der Ressourcentyp HAStoragePlus kann eingesetzt werden, um ein lokales Dateisystem in einer Sun Cluster-Umgebung hoch verfügbar zu machen. Die Partitionen des lokalen Dateisystems müssen sich auf globalen Plattengruppen befinden. Affinitäts-Switchover müssen aktiviert sein, und die Sun Cluster-Umgebung muss für Failover konfiguriert sein. Mit diesen Einstellungen kann der Benutzer jedes Dateisystem auf Multihostplatten für jeden Host verfügbar machen, der direkt mit den Multihostplatten verbunden ist. Für einige E/A-intensive Datendienste wird die Verwendung eines hoch verfügbaren lokalen Dateisystems dringend empfohlen. Unter “Enabling Highly Available Local File Systems” in Sun Cluster Data Services Planning and Administration Guide for Solaris OS finden Sie Informationen zum Konfigurieren des HAStoragePlus-Ressourcentyps.