Sun Cluster Konzepthandbuch für Solaris OS

Entwickeln von neuen Datendiensten

Sun stellt Vorlagen für Konfigurationsdateien und Verwaltungsmethoden zur Verfügung, mit denen Sie unterschiedliche Anwendungen zu Failover- oder Scalable-Diensten innerhalb eines Clusters machen können. Wenn die Anwendung, die Sie als Failover- oder Scalable-Dienst ausführen möchten, von Sun derzeit nicht angeboten wird, können Sie diese Anwendung mit einer API oder mit der DSET-API als Failover- oder Scalable-Dienst konfigurieren.

Es gibt eine Reihe von Kriterien, mit denen Sie feststellen können, ob eine Anwendung als Failover-Dienst ausgeführt werden kann. Die Beschreibung des spezifischen Kriteriums finden Sie in den SunPlex-Dokumenten zu den APIs, die Sie für Ihre Anwendung verwenden können.

Wir stellen Ihnen hier einige Richtlinien vor, mit deren Hilfe Sie erkennen können, ob Ihr Dienst die Scalable-Datendienst-Architektur nutzbringend einsetzen kann. Allgemeine Informationen zu Scalable-Diensten finden Sie unter Scalable-Datendienste.

Neue Dienste, die folgende Richtlinien erfüllen, können Scalable-Dienste verwenden. Wenn ein vorhandener Dienst diese Richtlinien nicht genau einhält, müssen Teile davon möglicherweise neu geschrieben werden, damit der Dienst den Richtlinien entspricht.

Ein Scalable-Datendienst weist folgende Merkmale auf. Erstens: Ein solcher Dienst besteht aus einer oder mehreren Serverinstanz(en). Jede Instanz wird auf einem anderen Knoten des Clusters ausgeführt. Zwei oder mehr Instanzen desselben Dienstes können nicht auf demselben Knoten ausgeführt werden.

Zweitens: Wenn der Dienst einen externen logischen Datenspeicher zur Verfügung stellt, muss der gleichzeitige Zugriff auf diesen Speicher durch mehrere Serverinstanzen synchronisiert werden, um den Verlust von Aktualisierungen oder das Lesen von Daten zu verhindern, wenn diese gerade geändert werden. Beachten Sie, dass der Begriff “extern” verwendet wird, um den Speicher vom Arbeitsspeicherstatus zu unterscheiden, und der Begriff “logisch”, weil der Speicher als einzelne Entität angezeigt wird, auch wenn er möglicherweise repliziert ist. Außerdem hat dieser logische Datenspeicher die Eigenschaft, dass eine Aktualisierung des Speichers durch eine beliebige Instanz sofort von anderen Instanzen erkannt wird.

Das SunPlex-System stellt einen solchen externen Speicher über das Cluster-Dateisystem und die globalen Partitionen im raw-Modus zur Verfügung. Angenommen, ein Dienst schreibt neue Daten in eine externe Protokolldatei oder ändert die dort vorhandenen Daten. Wenn mehrere Instanzen dieses Dienstes ausgeführt werden, hat jede Instanz Zugriff auf dieses externe Protokoll und jede kann gleichzeitig auf dieses Protokoll zugreifen. Jede Instanz muss den Zugriff auf dieses Protokoll synchronisieren, andernfalls kommt es zu Interferenzen zwischen den Instanzen. Der Dienst kann die normale Solaris-Dateisperrung über fcntl(2) und lockf(3C) verwenden, um die gewünschte Synchronisierung zu erreichen.

Ein weiteres Beispiel für diesen Speichertyp ist eine Backend-Datenbank wie das hoch verfügbare Oracle oder Oracle Parallel Server/Real Application Clusters für SPARC-basierte Cluster. Beachten Sie, dass bei diesem Typ von Backend-Datenbankserver die Synchronisierung über Datenbankabfragen oder Aktualisierungstransaktionen integriert ist, so dass bei mehreren Serverinstanzen nicht jede einzelne Instanz eine eigene Synchronisierung durchführen muss.

Ein Beispiel für einen nicht skalierbaren Dienst ist die aktuelle Zusammensetzung des IMAP-Servers von Sun. Der Dienst aktualisiert einen Speicher, aber dieser Speicher ist privat. Wenn mehrere IMAP-Instanzen in diesen Speicher schreiben, werden die jeweiligen Einträge überschrieben, weil die Aktualisierungen nicht synchronisiert sind. Der IMAP-Server muss für die Synchronisierung eines gleichzeitigen Zugriffs umgeschrieben werden.

Beachten Sie schließlich, dass Instanzen über private Daten verfügen können, die von den Daten anderer Instanzen getrennt sind. In einem solchen Fall muss der Dienst den gleichzeitigen Zugriff nicht selbst sznchronisieren, weil die Daten privat sind und nur diese Instanz sie bearbeiten kann. In diesem Fall müssen Sie darauf achten, diese privaten Daten nicht unter dem Cluster-Dateisystem zu speichern, weil die Möglichkeit eines globalen Zugriffs besteht.

Datendienst-API und API der Datendienst-Entwicklungsbibliothek

Das SunPlex-System stellt Folgendes zur Verfügung, um Anwendungen hoch verfügbar zu machen:

Im Sun Cluster Data Services Planning and Administration Guide wird die Installation und Konfiguration der Datendienste beschrieben, die zum Lieferumfang des SunPlex-Systems gehören. Im Sun Cluster Data Services Developer's Guide wird das Einrichten anderer Anwendungen als hoch verfügbar im Sun Cluster-Framework beschrieben.

Mit den Sun Cluster-APIs können Anwendungsprogrammierer Fehler-Monitore sowie Skripts zum Starten und Anhalten von Datendienstinstanzen entwickeln. Mit diesen Tools kann eine Anwendung als Failover- oder Scalable-Datendienst eingerichtet werden. Zudem stellt das SunPlex-System einen “generischen” Datendienst zur Verfügung, mit dem die benötigten Start- und Stoppmethoden für eine Anwendung, die als Failover- oder Scalable-Dienst ausgeführt werden soll, schnell generiert werden können.