Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Konzepte für den generischen Datendienst

Der GDS ist ein Mechanismus, um einfache Anwendungen mit und ohne Netzwerkunterstützung hoch verfügbar oder skalierbar zu machen, indem sie auf das Sun Cluster-RGM-Framework aufgesetzt werden (Resource Group Management, Ressourcengruppenverwaltung). Bei diesem Mechanismus müssen Sie keinen Datendienst kodieren, was in der Regel erforderlich ist, wenn Sie eine Anwendung hoch verfügbar oder skalierbar machen möchten.

Der GDS ist ein einzelner, vorkompilierter Datendienst. Sie können den vorkompilierten Datendienst und seine Komponenten, die Rückmeldemethodenimplementierung (rt_callbacks) und die Ressourcentyp-Registrierungsdatei (rt_reg) nicht ändern.

In diesem Abschnitt werden die folgenden Themen behandelt:

Vorkompilierter Ressourcentyp

Der Ressourcentyp des generischen Datendienstes SUNW.gds ist im Lieferumfang des SUNWscgds-Pakets enthalten. Dieses Paket wird während der Cluster-Installation vom Dienstprogramm scinstall installiert. Weitere Informationen finden Sie in der Online-Dokumentation zu scinstall(1M). Das SUNWscgds-Paket umfasst die folgenden Dateien:


# pkgchk -v SUNWscgds

/opt/SUNWscgds
/opt/SUNWscgds/bin
/opt/SUNWscgds/bin/gds_monitor_check
/opt/SUNWscgds/bin/gds_monitor_start
/opt/SUNWscgds/bin/gds_monitor_stop
/opt/SUNWscgds/bin/gds_probe
/opt/SUNWscgds/bin/gds_svc_start
/opt/SUNWscgds/bin/gds_svc_stop
/opt/SUNWscgds/bin/gds_update
/opt/SUNWscgds/bin/gds_validate
/opt/SUNWscgds/etc
/opt/SUNWscgds/etc/SUNW.gds

Vorteile und Nachteile der Verwendung des GDS

Die Verwendung des GDS hat gegenüber Agent Builder-Quellcode (siehe Online-Dokumentation zu scdscreate(1HA)) oder Sun Cluster-Verwaltungsbefehlen folgende Vorteile :

Obwohl die Verwendung des GDS viele Vorteile hat, ist der GDS für folgende Fälle nicht der richtige Mechanismus:

Erstellungsmöglichkeiten für einen Dienst, der den GDS verwendet

Es gibt zwei Möglichkeiten zum Erstellen eines Dienstes, der den GDS verwendet:

GDS und Agent Builder

Verwenden Sie Agent Builder und wählen Sie den GDS als generierten Quellcodetyp aus. Die Benutzereingabe wird für das Generieren einer Reihe von Skripts verwendet, die Ressourcen für die entsprechende Anwendung konfigurieren.

GDS und Sun Cluster-Verwaltungsbefehle

Bei dieser Methode wird der vorkompilierte Datendienstcode in SUNWscgds verwendet. Der Cluster-Administrator muss jedoch die Sun Cluster-Verwaltungsbefehle zum Erstellen und Konfigurieren der Ressource verwenden. Weitere Informationen finden Sie in der Online-Dokumentation zu scrgadm(1M) und scswitch(1M).

Auswahl der Methode für die Erstellung eines GDS-basierten Dienstes

Es ist ein erheblicher Eingabeaufwand erforderlich, um die richtigen scrgadm- und scswitch-Befehle auszuführen. Weitere Informationen finden Sie in den Abschnitten So verwenden Sie Sun Cluster-Verwaltungsbefehle zum Erstellen eines hoch verfügbaren Dienstes, der den GDS verwendet. und So verwenden Sie Sun Cluster-Verwaltungsbefehle zum Erstellen eines Scalable-Dienstes, der den GDS verwendet..

Die Verwendung des GDS mit Agent Builder vereinfacht den Prozess, da dadurch die Skripts generiert werden, welche die Befehle scrgadm und scswitch für Sie ausgeben.

GDS-Ereignisprotokollierung

Mit dem GDS können Sie die relevanten Informationen protokollieren, die vom GDS an die vom GDS gestarteten Skripts übergeben werden. Diese Informationen umfassen den Status der Start-, Testsignal- und Stopp-Methoden sowie die Eigenschaftsvariablen. Sie können diese Informationen für die Diagnose von Problemen oder Fehlern in Ihren Skripten verwenden oder sie für andere Zwecke anwenden.

Sie verwenden die Log_level-Eigenschaft, die unter Log_level-Eigenschaft beschrieben wird, um die Stufe oder den Typ der Meldungen festzulegen, die vom GDS protokolliert werden sollen. Sie können NONE, INFO oder ERRangeben.

GDS-Protokolldateien

Die beiden folgenden GDS-Protokolldateien werden im Verzeichnis /var/cluster/logs/DS/Ressourcengruppenname/Ressourcenname abgelegt:

Folgendes Beispiel zeigt die Arten von Informationen, die in start_stop_log.txt enthalten sind:

10/20/2005 12:38:05 phys-node-1 START-INFO> Start succeeded. [/home/brianx/sc/start_cmd]
10/20/2005 12:42:11 phys-node-1 STOP-INFO> Successfully stopped the application

Folgendes Beispiel zeigt die Arten von Informationen, die in probe_log.txt enthalten sind:

10/20/2005 12:38:15 phys-node-1 PROBE-INFO> The GDS monitor (gds_probe) has been started
10/20/2005 12:39:15 phys-node-1 PROBE-INFO> The probe result is 0
10/20/2005 12:40:15 phys-node-1 PROBE-INFO> The probe result is 0
10/20/2005 12:41:15 phys-node-1 PROBE-INFO> The probe result is 0

Erforderliche GDS-Eigenschaften

Wenn Ihre Anwendung Netzwerkunterstützung bietet, müssen Sie sowohl die Erweiterungseigenschaft Start_command und Port_list angeben. Wenn Ihre Anwendung keine Netzwerkunterstützung bietet, müssen Sie lediglich die Erweiterungseigenschaft Start_command angeben.

Start_command-Erweiterungseigenschaft

Der start-Befehl, den Sie in der Erweiterungseigenschaft Start_command angeben, startet die Anwendung. Dabei muss es sich um einen UNIX-Befehl zusammen mit den entsprechenden Argumenten handeln, die direkt an eine Shell übergeben werden können, um die Anwendung zu starten.

Port_list-Eigenschaft

Die Eigenschaft Port_list identifiziert die Liste von Ports, die von der Anwendung abgehört werden. Die Port_list-Eigenschaft muss im Start-Skript angegeben werden, das von SunPlex Agent Builder erstellt wird, bzw. im scrgadm-Befehl, wenn Sie die Standardverwaltungsbefehle von Sun Cluster verwenden.

Optionale GDS-Eigenschaften

Optionale GDS-Eigenschaften sind u.a. systemdefinierte Eigenschaften und Erweiterungseigenschaften. Bei den systemdefinierten Eigenschaften handelt es sich um einen von Sun Cluster bereitgestellten Standardsatz von Eigenschaften. Eigenschaften, die in der RTR-Datei definiert sind, werden als Erweiterungseigenschaften bezeichnet. Im Folgenden erhalten Sie eine Liste optionaler GDS-Eigenschaften:

Eigenschaft Network_resources_used

Der Standardwert für diese Eigenschaft ist null. Diese Eigenschaft muss angegeben werden, wenn die Anwendung an eine oder mehrere spezifische Adressen gebunden werden muss. Wenn diese Eigenschaft ausgelassen oder als null festgelegt wird, wird angenommen, dass die Anwendung alle Adressen abhören soll.

Vor Erstellung der GDS-Ressource muss bereits eine LogicalHostname- oder SharedAddress-Ressource konfiguriert worden sein. Im Sun Cluster Data Services Planning and Administration Guide for Solaris OS finden Sie Informationen zum Konfigurieren einer LogicalHostname- oder SharedAddress-Ressource.

Zum Festlegen eines Wertes geben Sie einen oder mehrere Ressourcennamen an. Jeder Ressourcenname kann einen oder mehrere LogicalHostname bzw. eine oder mehrere SharedAddress-Ressourcen enthalten. Weitere Informationen finden Sie in der Online-Dokumentation zu r_properties(5).

Stop_command-Eigenschaft

Der Stopp-Befehl muss die Anwendung beenden und wird nur zurückgegeben, nachdem die Anwendung vollständig beendet wurde. Bei diesem Befehl muss es sich um einen vollständigen UNIX-Befehl handeln, der direkt an die Shell übergeben werden kann, um die Anwendung zu beenden.

Wenn die Stop_command-Erweiterungseigenschaft angegeben ist, startet Stopp-Methode des GDS den Stop-Befehl mit 80 Prozent der Stopp-Zeitüberschreitung. Unabhängig vom Ergebnis der Ausgabe des Stopp-Befehls sendet die Stopp-Methode des GDS SIGKILL mit 15% der Stopp-Zeitüberschreitung. Die restlichen 5% der Zeit werden für Systemverwaltungsaufwand reserviert.

Wenn der Stopp-Befehl ausgelassen wird, versucht der GDS die Anwendung mit dem unter Stop_signal angegebenen Signal zu stoppen.

Probe_command-Eigenschaft

Der Testsignal-Befehl prüft den Zustand einer bestimmten Anwendung in regelmäßigen Zeitabständen. Dabei muss es sich um einen UNIX-Befehl zusammen mit den entsprechenden Argumenten handeln, der zum Testen der Anwendung direkt an eine Shell übergeben werden kann. Der Testsignal-Befehl wird mit einem Beendigungsstatus von 0 ausgegeben, wenn die Anwendung ordnungsgemäß ausgeführt wird.

Der Beendigungsstatus des Testsignal-Befehls wird verwendet, um den Schweregrad des Anwendungsfehlers zu ermitteln. Dieser Beendigungsstatus, der als Testsignal-Status bezeichnet wird, muss eine Ganzzahl zwischen 0 (Erfolg) und 100 (Totalfehlschlag) sein. Beim Testsignal-Status kann es sich auch um einen besonderen Wert von 201 handeln, der zu einem unmittelbaren Anwendungs-Failover führt, wenn Failover_enabled nicht auf FALSE gesetzt ist. Der GDS-Testsignal-Algorithmus verwendet den Testsignal-Status, um zu ermitteln, ob die Anwendung lokal neu gestartet werden soll oder ob ein Failover erfolgen soll. Weitere Informationen finden Sie in der Online-Dokumentation zu scds_fm_action(3HA). Wenn der Beendigungsstatus 201 ist, wird für die Anwendung ein sofortiges Failover ausgeführt.

Wenn der Testsignal-Befehl ausgelassen wird, verwendet der GDS ein eigenes einfaches Testsignal. Dieses Testsignal stellt eine Verbindung mit der Anwendung an dem Satz von IP-Adressen her, der von der Network_resources_used-Eigenschaft oder von der Ausgabe der scds_get_netaddr_list()-Funktion abgeleitet wird. Weitere Informationen finden Sie in der Online-Dokumentation zu scds_get_netaddr_list(3HA). Wenn die Verbindung erfolgreich ist, wird die Verbindung sofort getrennt. Wenn sowohl die Verbindung als auch die Verbindungstrennung erfolgreich sind, sollte die Anwendung ordnungsgemäß ausgeführt werden.


Hinweis –

Das Testsignal des GDS ist nur ein einfacher Ersatz für das anwendungsspezifische Testsignal mit vollem Funktionsumfang.


Start_timeout-Eigenschaft

Diese Eigenschaft legt die Start-Zeitüberschreitung für den Start-Befehl fest. Weitere Informationen finden Sie im Abschnitt Start_command-Erweiterungseigenschaft. Der Standardwert für Start_timeout ist 300 Sekunden.

Stop_timeout-Eigenschaft

Diese Eigenschaft gibt die Stopp-Zeitüberschreitung für den Stopp-Befehl an. Weitere Informationen finden Sie im Abschnitt Stop_command-Eigenschaft. Der Standardwert für Stop_timeout ist 300 Sekunden.

Probe_timeout-Eigenschaft

Diese Eigenschaft legt den Zeitüberschreitungswert für den Testsignalbefehl fest. Weitere Informationen finden Sie im Abschnitt Probe_command-Eigenschaft. Der Standardwert für Probe_timeout ist 30 Sekunden.

Child_mon_level-Eigenschaft


Hinweis –

Wenn Sie mit Sun Cluster-Verwaltungsbefehlen arbeiten, können Sie die Child_mon_level-Eigenschaft verwenden. Wenn Sie mit Agent Builder arbeiten, können Sie diese Eigenschaft nicht verwenden.


Mit dieser Eigenschaft können die Prozesse gesteuert werden, die von Process Monitor Facility (PMF) überwacht werden. Diese Eigenschaft gibt die Ebene an, bis zu der die untergeordneten Prozesse überwacht werden. Diese Eigenschaft hat dieselbe Wirkung wie das -C-Argument für den pmfadm-Befehl. Weitere Informationen finden Sie in der Online-Dokumentation zu pmfadm(1M).

Wenn diese Eigenschaft ausgelassen bzw. der Standardwert auf -1 gesetzt wird, hat dies die gleiche Wirkung wie das Auslassen der Option -C im Befehl pmfadm. Das bedeutet, dass alle untergeordneten Prozesse und deren Folgeprozesse überwacht werden.

Failover_enabled-Eigenschaft

Diese boolesche Erweiterungseigenschaft steuert das Failover-Verhalten der Ressource. Wenn diese Erweiterungseigenschaft auf TRUE gesetzt ist, findet ein Anwendungs-Failover statt, sobald die Anzahl der Neustarts den Wert für Retry_count innerhalb der unter Retry_interval angegebenen Anzahl Sekunden überschreitet.

Wenn diese Eigenschaft auf FALSE gesetzt ist, startet die Anwendung nicht neu bzw. führt keinen Failover an einen anderen Knoten aus, wenn die Anzahl der Neustarts den Wert von Retry_count innerhalb der unter Retry_interval angegebenen Anzahl Sekunden überschreitet.

Diese Erweiterungseigenschaft kann verwendet werden, um zu verhindern, dass die Anwendungsressource ein Failover der Ressourcengruppe einleitet. Der Standardwert für diese Eigenschaft lautet TRUE.

Stop_signal-Eigenschaft

Der GDS verwendet den Wert dieser Ganzzahl-Erweiterungseigenschaft, um das Signal zu ermitteln, das zum Stoppen der Anwendung mit der PMF verwendet wird. Eine Liste der Ganzzahlwerte, die Sie angeben können, finden Sie in der Online-Dokumentation zu signal(3HEAD). Der Standardwert lautet 15 (SIGTERM ).

Log_level-Eigenschaft

Diese Eigenschaft gibt die Stufe oder den Typ der Diagnosemeldungen an, die vom GDS protokolliert werden. Für diese Eigenschaft können Sie NONE, INFO oder ERR angeben. Wenn Sie NONE angeben, werden vom GDS keine Diagnosemeldungen protokolliert. Wenn Sie INFO angeben, werden lediglich Informationsmeldungen protokolliert. Wenn Sie ERR festlegen, werden lediglich Fehlermeldungen protokolliert. Der GDS protokolliert standardmäßig keine Diagnosemeldungen (NONE).