Die restart_service()-Funktion wird von decide_restart_or_failover() aufgerufen, um einen Neustart des Datendienstes auf dem gleichen Knoten zu versuchen. Diese Funktion führt folgende Aufgaben aus.
Sie stellt fest, ob der Datendienst noch unter PMF registriert ist. Wenn der Dienst noch registriert ist, geht die Funktion folgendermaßen vor:
Sie ruft den Stop-Methodennamen und den Stop_timeout-Wert für den Datendienst ab.
Sie verwendet hatimerun, um die Stop-Methode für den Datendienst zu starten, indem sie den Stop_timeout-Wert übergibt.
Wenn der Datendienst erfolgreich gestoppt wurde, ruft sie den Start-Methodennamen und den Start_timeout-Wert für den Datendienst ab.
Sie verwendet hatimerun, um die Start-Methode für den Datendienst zu starten, indem sie den Start_timeout-Wert übergibt.
Wenn der Datendienst nicht mehr unter PMF registriert ist, bedeutet dies, dass er die maximale Anzahl zulässiger Wiederholversuche unter PMF überschritten hat. Daher wird die scha_control()-Funktion mit der GIVEOVER-Option aufgerufen, um für den Datendienst ein Failover auf einen anderen Knoten auszuführen.
function restart_service { # Um den Datendienst neu zu starten, wird zunächst überprüft, ob # der Datendienst selbst noch unter PMF registriert ist. pmfadm -q $PMF_TAG if [[ $? -eq 0 ]]; then # Da das Tag fur den Datendienst noch unter PMF registriert ist, # den Datendienst zunächst stoppen und dann wieder neu starten. # Stop-Methodenname und STOP_TIMEOUT-Wert für diese # Ressource abrufen. STOP_TIMEOUT=`scha_resource_get -O STOP_TIMEOUT \ -R $RESOURCE_NAME -G $RESOURCEGROUP_NAMÈ STOP_METHOD=`scha_resource_get -O STOP \ -R $RESOURCE_NAME -G $RESOURCEGROUP_NAMÈ hatimerun -t $STOP_TIMEOUT $RT_BASEDIR/$STOP_METHOD \ -R $RESOURCE_NAME -G $RESOURCEGROUP_NAME \ -T $RESOURCETYPE_NAME if [[ $? -ne 0 ]]; then logger-p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \ “${ARGV0} Stop-Methode fehlgeschlagen.” return 1 fi # START-Methodenname und START_TIMEOUT-Wert für diese # Ressource abrufen. START_TIMEOUT=`scha_resource_get -O START_TIMEOUT \ -R $RESOURCE_NAME -G $RESOURCEGROUP_NAMÈ START_METHOD=`scha_resource_get -O START \ -R $RESOURCE_NAME -G $RESOURCEGROUP_NAMÈ hatimerun -t $START_TIMEOUT $RT_BASEDIR/$START_METHOD \ -R $RESOURCE_NAME -G $RESOURCEGROUP_NAME \ -T $RESOURCETYPE_NAME if [[ $? -ne 0 ]]; then logger-p ${SYSLOG_FACILITY}.err -t [$SYSLOG_TAG] \ “${ARGV0} Start-Methode fehlgeschlagen.” return 1 fi else # Das Fehlen des TAG für den Datendienst weist darauf # hin, dass der Datendienst bereits die maximale Anzahl # der unter PMF zulässigen Wiederholversuche überschritten hat. # Daher nicht versuchen, den Datendienst noch einmal neu # zu starten, sondern ein Failover auf einen anderen Knoten im # Cluster versuchen. scha_control -O GIVEOVER -G $RESOURCEGROUP_NAME \ -R $RESOURCE_NAME fi return 0 } |