Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Überblick über GDS

Der GDS ist ein Mechanismus, mit dem einfache Anwendungen mit Netzwerkunterstützung durch Integration in das Sun Cluster Ressourcengruppenverwaltungs-Framework mit hoher Verfügbarkeit bzw. Skalierbarkeit ausgestattet werden. 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(1M) installiert dieses Paket während der Cluster-Installation. Das SUNWscgds-Paket enthält folgende 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

Gründe für die Verwendung des GDS

Die Verwendung des GDS hat folgende Vorteile gegenüber der Verwendung des von SunPlex Agent Builder generierten Quellcodemodells (siehe scdscreate( 1HA)) oder den Standardverwaltungsbefehlen von Sun Cluster:

Erstellungsarten eines Dienstes, der 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 den Typ des generierten Quellcodes aus. Die Benutzereingabe wird für das Generieren eines Satzes treibender Skripts verwendet, die Ressourcen für die entsprechende Anwendung konfigurieren.

GDS und die Standardverwaltungsbefehle von Sun Cluster

Diese Methode verwendet den vorkompilierten Datendienstcode in SUNWscgds. Dabei muss jedoch der Systemverwalter die Standardverwaltungsbefehle von Sun Cluster (scrgadm(1M) und scswitch(1M)) verwenden, um die Ressource zu erstellen und zu konfigurieren.

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 mit GDS und Standardverwaltungsbefehle von Sun Cluster für das Erstellen eines Scalable-Dienstes mit GDS 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 treibenden Skripts generiert werden, welche die scrgadm- und scswitch-Befehle für Sie ausgeben.

Fälle, in denen der GDS-Mechanismus nicht geeignet ist

Obwohl die Verwendung von GDS große Vorteile bietet, ist sein Einsatz in manchen Fällen ungeeignet. In folgenden Fällen sollte der GDS nicht verwendet werden:

Erforderliche Eigenschaften für GDS

Folgende Eigenschaften müssen bereitgestellt werden:

Start_command-Erweiterungseigenschaft

Der Start-Befehl, den Sie in der Start_command-Erweiterungseigenschaft 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 Port_list-Eigenschaft identifiziert die Liste der 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 Eigenschaften für GDS

Optionale GDS-Eigenschaften sind:

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 angegeben wird, wird davon ausgegangen, dass die Anwendung alle Adressen abhört.

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.

Um einen Wert anzugeben, geben Sie einen oder mehrere Ressourcennamen an. Jeder Ressourcenname kann einen oder mehrere LogicalHostname bzw. eine oder mehrere SharedAddress enthalten. Einzelheiten finden Sie 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 der Stop_command 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. Dabei muss es sich um einen UNIX-Befehl zusammen mit den entsprechenden Argumenten handeln, der direkt an eine Shell zum Testen der Anwendung übergeben werden kann. 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 der Sonderwert 201 sein, was ein sofortiges Failover der Anwendung zur Folge hat, es sei denn, Failover_enabled ist auf “false” eingestellt. Der Testsignal-Status wird innerhalb des GDS-Testalgorithmus verwendet (siehe scds_fm_action(3HA)), um zu entscheiden, ob die Anwendung lokal neu gestartet oder ob ein Failover auf einen anderen Knoten ausgeführt wird. Bei einem Beendigungsstatus von 201 wird für die Anwendung sofort ein Failover ausgeführt.

Wenn der Testsignal-Befehl ausgelassen wird, stellt der GDS sein eigenes einfaches Testsignal bereit, mit dem eine Verbindung mit der Anwendung über den Satz von IP-Adressen hergestellt wird, die aus der Eigenschaft Network_resources_used bzw. der Ausgabe von scds_get_netaddr_list(3HA) abgeleitet werden. 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 Start-Zeitüberschreitung für den Start-Befehl an (siehe Start_command-Erweiterungseigenschaft für weitere Informationen). 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 (siehe Stop_command-Eigenschaft für weitere Informationen). Der Standardwert für Stop_timeout ist 300 Sekunden.

Probe_timeout-Eigenschaft

Diese Eigenschaft gibt den Zeitüberschreitungswert für den Testsignal-Befehl an (siehe Probe_command-Eigenschaft für weitere Informationen). Der Standardwert für Probe_timeout ist 30 Sekunden.

Eigenschaft Child_mon_level

Diese Eigenschaft steuert, welche Prozesse durch PMF überwacht werden. Sie hält die Ebene fest, bis zu der die verzweigten untergeordneten Prozesse überwacht werden. Sie ist vergleichbar mit dem -C-Argument für den Befehl 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; es werden also alle untergeordneten Prozesse überwacht.


Hinweis –

Diese Option kann nur unter Verwendung der Standardverwaltungsbefehle von Sun Cluster angegeben werden. Sie kann nicht angegeben werden, wenn SunPlex Agent Builder verwendet wird.


Failover_enabled-Eigenschaft

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

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

Diese Erweiterungseigenschaft kann verwendet werden, um zu verhindern, dass die Anwendungsressource ein Failover der Ressourcengruppe einleitet. Der Standardwert 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 unter signal(3HEAD). Der Standardwert ist 15 (SIGTERM).