Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Koordinieren von Abhängigkeiten zwischen Ressourcen

Manchmal stellt ein Client-Server-Datendienst Anforderungen an einen anderen Client-Server-Datendienst, während er eine Anforderung für einen Client erfüllt. Datendienst A ist zum Beispiel von Datendienst B abhängig, wenn Datendienst B seinen Dienst bereitstellen muss, damit Datendienst A seinen Dienst bereitstellen kann. Um dieser Anforderung zu entsprechen, lässt Sun Cluster die Konfiguration von Ressourcenabhängigkeiten innerhalb einer Ressourcengruppe zu. Die Abhängigkeiten wirken sich auf die Reihenfolge aus, in der Sun Cluster Datendienste startet und stoppt. Einzelheiten finden Sie in der Online-Dokumentation unter scrgadm(1M).

Wenn die Ressourcen Ihres Ressourcentyps von einem anderen Typ abhängig sind, müssen Sie den Cluster-Administrator anweisen, die Ressourcen und Ressourcengruppen richtig zu konfigurieren. Liefern Sie als Alternative Skripts oder Tools für die richtige Konfiguration. Wenn die abhängige Ressource auf demselben Knoten wie die “depended-on”-Ressource ausgeführt werden muss, müssen beide Ressourcen in derselben Ressourcengruppe konfiguriert werden.

Entscheiden Sie, ob Sie ausdrückliche Ressourcenabhängigkeiten verwenden möchten oder ob Sie sie auslassen möchten und die Verfügbarkeit der anderen Datendienste im Code des HA-Datendienstes abfragen möchten. Falls die abhängige Ressource und diejenige, von der sie abhängt, auf unterschiedlichen Knoten laufen können, werden sie in unterschiedlichen Ressourcengruppen konfiguriert. In diesem Fall ist das Abfragen erforderlich, weil eine Konfiguration der Ressourcenabhängigkeiten über mehrere Gruppen hinweg nicht möglich ist.

Einige Datendienste speichern die Daten nicht direkt selbst. Stattdessen sind sie von einem anderen Backend-Datendienst abhängig, der alle ihre Daten speichert. Ein solcher Datendienst überträgt alle Lese- und Aktualisierungsanforderungen in Aufrufe an den Backend-Datendienst. Stellen Sie sich zum Beispiel einen hypothetischen Client-Server-Terminkalenderdienst vor, der alle Daten in einer SQL-Datenbank, z.B. Oracle, speichert. Der Terminkalenderdienst verfügt über ein eigenes Client/Server-Netzwerkprotokoll. Es kann zum Beispiel ein Protokoll unter Verwendung einer RPC-Spezifikationssprache definiert haben, wie ONC RPC.

In der Sun Cluster-Umgebung können Sie HA-ORACLE verwenden, um die Backend-ORACLE-Datenbank hoch verfügbar zu machen. Anschließend können Sie einfache Methoden zum Starten und Stoppen des Terminkalender-Dämons schreiben. Der Cluster-Administrator registriert den Terminkalender-Ressourcentyp bei Sun Cluster.

Wenn die Terminkalenderanwendung auf demselben Knoten ausgeführt werden muss wie die Oracle-Datenbank, konfiguriert der Cluster-Administrator die Terminkalenderressource in derselben Ressourcengruppe wie die HA-ORACLE-Ressource und macht die Terminkalender-Ressource abhängig von der HA-ORACLE-Ressource. Diese Abhängigkeit wird mit dem Resource_dependencies-Eigenschaftstag in scrgadm angegeben.

Wenn die HA-ORACLE-Ressource auf einem anderen Knoten als die Terminkalenderressource ausgeführt werden kann, konfiguriert sie der Cluster-Administrator in zwei separate Ressourcengruppen. Der Cluster-Administrator könnte eine Ressourcengruppenabhängigkeit der Kalenderressourcengruppe in der Oracle-Ressourcengruppe konfigurieren. Ressourcengruppenabhängigkeiten sind jedoch nur dann effektiv, wenn beide Ressourcengruppen auf demselben Knoten gleichzeitig gestartet bzw. gestoppt werden. Daher kann der Kalender-Datendienstdämon nach dem Starten das Warten auf die Verfügbarkeit der Oracle-Datenbank aufrufen. In diesem Fall gibt die Start-Methode des Kalenderressourcentyps in der Regel Erfolg aus. Wenn die Start-Methode unendlich lange blockieren würde, würde diese Methode jedoch ihre Ressourcengruppe in einen "Besetzt"-Zustand versetzen. Dieser Zustand würde alle weiteren Zustandsänderungen verhindern, z.B. Bearbeitungen, Failover oder Switchover in der Gruppe. Wenn die Start-Methode der Kalenderressource jedoch die Zeit überschritten hat oder mit einem Nicht-Null-Status beendet wurde, kann dies zu einem "Ping-Pong" der Ressourcengruppe zwischen zwei oder mehr Knoten führen und die Oracle-Datenbank nicht mehr verfügbar sein.