Die restart_service()-Funktion wird von decide_restart_or_failover() aufgerufen, um den Neustart des Datendienstes auf demselben 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 für 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
}
|