Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Überblick über den GDS

Der GDS ist ein Mechanismus zur Einrichtung von hoher Verfügbarkeit bzw. Skalierbarkeit für einfache Anwendungen mit oder ohne Netzwerkunterstützung durch Integrierung in das Sun Cluster RGM-Framework (Resource Group Management). Dieser Mechanismus erfordert keine Agentencodierung, wie dies sonst beim Einrichten von hoher Verfügbarkeit bzw. Skalierbarkeit üblich ist.

Der GDS ist ein einzelner, vorkompilierter Datendienst. Der vorkompilierte Datendienst und seine Komponenten, die Implementierungen der Rückmeldemethoden (rt_callbacks (1HA)) und die Ressourcentyp-Registrierungsdatei (rt_reg( 4)) können nicht geändert werden.

Vorkompilierter Ressourcentyp

Der Ressourcentyp des generischen Datendienstes SUNW.gds ist im SUNWscgds-Paket enthalten. Das Dienstprogramm scinstall installiert dieses Paket während der Cluster-Installation (siehe scinstall( 1M) in der Online-Dokumentation). 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

Der GDS verfügt gegenüber dem in SunPlex Agent Builder erzeugten Quellcodemodell (siehe scdscreate( 1HA) in der Online-Dokumentation) oder gegenüber den Standardverwaltungsbefehlen von Sun Cluster über die folgenden Vorteile:

Obwohl die Verwendung des GDS große Vorteile bietet, ist sein Einsatz in manchen Fällen ungeeignet. In den folgenden Fällen ist der GDS kein geeigneter Mechanismus:

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

Es gibt zwei Möglichkeiten zur Erstellung eines Dienstes, der den GDS verwendet:

GDS und SunPlex Agent Builder

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

GDS und die Standardverwaltungsbefehle von Sun Cluster

Bei dieser Methode wird der vorkompilierte Datendienstcode in SUNWscgds verwendet. Sie erfordert jedoch, dass der Systemadministrator zum Erstellen und Konfigurieren der Ressource die Standardverwaltungsbefehle von Sun Cluster verwendet. Informationen hierzu finden Sie unter scrgadm( 1M) und scswitch( 1M) in der Online-Dokumentation.

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

Wie in den Verfahren So verwenden Sie Sun Cluster-Verwaltungsbefehle zum Erstellen eines hoch verfügbaren Dienstes, der GDS verwendet und So verwenden Sie Sun Cluster-Verwaltungsbefehle zum Erstellen eines skalierbaren Dienstes, der GDS verwendet gezeigt, bedeutet die Ausgabe der geeigneten scrgadm- und scswitch-Befehle erheblichen Schreibaufwand.

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

GDS-Ereignisprotokollierung

Der GDS ermöglicht die Protokollierung wichtiger Informationen, die er an die von ihm gestarteten Skripts übergibt. Zu diesen wichtigen Informationen gehören der 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 Skripts verwenden oder sie zu anderen Zwecken einsetzen.

Mithilfe der Eigenschaft Log_level, die unter Log_level-Eigenschaft beschrieben ist, können Sie die Stufe oder den Typ der Meldungen festlegen, die der GDS protokollieren soll. Mögliche Einstellungen sind NONE, INFO oder ERR.

GDS-Protokolldateien

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

Das folgende Beispiel zeigt die Arten von Informationen, die start_stop_log.txt enthält:

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

Das folgende Beispiel zeigt die Arten von Informationen, die probe_log.txt enthält:

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

Erforderliche GDS-Eigenschaften

Wenn Ihre Anwendung keine Netzwerkunterstützung bietet, müssen Sie sowohl die Erweiterungseigenschaft Start_command als auch die Eigenschaft Port_list angeben. Wenn Ihre Anwendung Netzwerkunterstützung bietet, müssen Sie nur die Eigenschaft Port_list angeben.

Start_command-Erweiterungseigenschaft

Der Start-Befehl, den Sie in der Start_command-Erweiterungseigenschaft angeben, startet die Anwendung. Es muss sich um einen UNIX-Befehl mit Argumenten handeln, die direkt an eine Shell zum Starten der Anwendung übergeben werden können.

Port_list-Eigenschaft

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

Optionale GDS-Eigenschaften

Die folgende Liste enthält optionale 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 Erstellen der GDS-Ressource muss bereits eine LogicalHostname- oder SharedAddress-Ressource konfiguriert worden sein. In Sun Cluster Data Services Planning and Administration Guide for Solaris OS finden Sie Informationen zum Konfigurieren einer LogicalHostname- bzw. SharedAddress-Ressource.

Zum Festlegen eines Wertes geben Sie einen oder mehrere Ressourcennamen an. Jeder Ressourcenname kann eine oder mehrere Instanzen von LogicalHostname oder SharedAddress enthalten. Detaillierte Informationen hierzu finden Sie in der Online-Dokumentation unter r_properties (5).

Stop_command-Eigenschaft

Der Stopp-Befehl muss die Anwendung stoppen und erst dann einen Wert zurückgeben, wenn die Anwendung vollständig gestoppt wurde. Dabei muss es sich um einen vollständigen UNIX-Befehl handeln, der direkt an eine Shell zum Stoppen der Anwendung übergeben werden kann.

Wenn die Stop_command-Erweiterungseigenschaft bereitgestellt wird, startet die GDS-Stopp-Methode den Stopp-Befehl mit 80% der Stopp-Zeitüberschreitung. Unabhängig vom Ergebnis der Ausgabe des Stopp-Befehls sendet die GDS-Stopp-Methode 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 unter Verwendung des in Stop_signal angegebenen Signals anzuhalten.

Probe_command-Eigenschaft

Der Testsignal-Befehl prüft in regelmäßigen Abständen die Fehlerfreiheit einer bestimmten Anwendung. Es muss sich um einen UNIX-Befehl mit Argumenten handeln, die direkt an eine Shell zum Testen der Anwendung übergeben werden können. Der Testsignal-Befehl gibt einen Beendigungsstatus von 0 zurück, wenn die Anwendung fehlerfrei läuft.

Der Beendigungsstatus des Testsignal-Befehls dient zum Feststellen, wie schwerwiegend der Fehler der Anwendung ist. Dieser Beendigungsstatus, der als Testsignal-Status bezeichnet wird, muss eine Ganzzahl zwischen 0 (Erfolg) und 100 (Totalfehlschlag) sein. Der Testsignal-Status kann auch 201 lauten. Dieser Wert bewirkt, dass für die Anwendung sofort ein Failover durchgeführt wird, es sei denn, Failover_enabled ist auf FALSE eingestellt. Der Testsignal-Status wird innerhalb des GDS-Testalgorithmus verwendet (siehe scds_fm_action(3HA) in der Online-Dokumentation), um zu entscheiden, ob die Anwendung lokal neu gestartet oder ob ein Failover auf einen anderen Knoten ausgeführt werden soll. 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, das eine Verbindung zur Anwendung an die aus der Eigenschaft Network_resources_used oder aus der Ausgabe von scds_get_netaddr_list abgeleiteten IP-Adressen herstellt (siehe scds_get_netaddr_list(3HA) in der Online-Dokumentation). Wenn die Verbindung erfolgreich ist, wird sie sofort wieder getrennt. Wenn sowohl die Verbindungsherstellung als auch die Verbindungstrennung erfolgreich verlaufen, wird davon ausgegangen, dass die Anwendung fehlerfrei läuft.


Hinweis –

Das von dem GDS bereitgestellte Testsignal soll lediglich ein einfacher Ersatz für das voll funktionsfähige anwendungsspezifische Testsignal sein.


Start_timeout-Eigenschaft

Diese Eigenschaft gibt die Startzeitüberschreitung für den Start-Befehl an. Weitere Informationen hierzu finden Sie in 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 hierzu finden Sie in Stop_command-Eigenschaft. Der Standardwert für Stop_timeout ist 300 Sekunden.

Probe_timeout-Eigenschaft

Diese Eigenschaft gibt den Zeitüberschreitungswert für den Testsignal-Befehl an. Weitere Informationen hierzu finden Sie in Probe_command-Eigenschaft. Der Standardwert für Probe_timeout ist 30 Sekunden.

Eigenschaft Child_mon_level


Hinweis –

Bei Verwendung der Standardverwaltungsbefehle von Sun Cluster können Sie diese Option verwenden. Bei Verwendung von SunPlex Agent Builder kann diese Option jedoch nicht eingesetzt werden.


Diese Eigenschaft ermöglicht die Steuerung der Prozesse, die mittels PMF (Process Monitor Facility) überwacht werden. Sie hält die Ebene fest, bis zu der die verzweigten untergeordneten Prozesse überwacht werden. Diese Eigenschaft hat dieselbe Wirkung wie das -C-Argument für den pmfadm-Befehl. Informationen hierzu finden Sie in der Online-Dokumentation unter pmfadm(1M).

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

Failover_enabled-Eigenschaft

Diese boolesche Erweiterungseigenschaft steuert das Failover-Verhalten der Ressource. Wenn die Erweiterungseigenschaft auf true eingestellt wird, wird für die Anwendung ein Failover ausgeführt, wenn die Anzahl der Neustarts den Wert von retry_count innerhalb der Anzahl Sekunden aus retry_interval überschreitet.

Wenn diese Eigenschaft auf false eingestellt ist, startet die Anwendung nicht neu bzw. führt ein Failover auf einem anderen Knoten aus, wenn die Anzahl der Neustarts den Wert von retry_count innerhalb der Anzahl Sekunden aus retry_interval übersteigt.

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

Stop_signal-Eigenschaft

Der GDS verwendet den Wert dieser Ganzzahl-Erweiterungseigenschaft, um das Signal zu bestimmen, das für das Stoppen der Anwendung über PMF verwendet wird. Eine Liste der Ganzzahlwerte, die angegeben werden können, finden Sie in der Online-Dokumentation unter signal( 3HEAD). Der Standardwert ist 15 ( SIGTERM).

Log_level-Eigenschaft

Diese Eigenschaft gibt die Stufe, den Typ oder die Diagnosemeldungen an, die vom GDS protokolliert werden. Mögliche Werte für diese Eigenschaft sind NONE, INFO oder ERR. Wenn Sie NONE angeben, werden vom GDS keine Diagnosemeldungen protokolliert. Bei Angabe von INFO werden nur informative Meldungen protokolliert. Und wenn Sie ERR angeben, werden nur Fehlermeldungen protokolliert. Der GDS protokolliert standardmäßig keine Diagnosemeldungen (NONE).