RGM ruft die Monitor_stop-Methode auf, um die Ausführung von dns_probe zu stoppen, wenn der Beispieldatendienst offline gebracht wird.
Dieser Abschnitt beschreibt die Hauptteile der Monitor_stop-Methode für die Beispielanwendung. Die Funktionalität, die allen Rückmeldemethoden gemeinsam ist, wird nicht beschrieben, wie zum Beispiel die parse_args()-Funktion und das Abrufen von syslog (in Bereitstellen gemeinsamer Funktionalität für alle Methoden beschrieben).
Eine vollständige Auflistung der Monitor_stop-Methode finden Sie unter Monitor_stop-Methode.
Diese Methode verwendet PMF (pmfadm), um festzustellen, ob das Testsignal läuft und es gegebenenfalls zu stoppen.
Die Monitor_stop-Methode verwendet pmfadm -q, um festzustellen, ob das Testsignal läuft und es gegebenenfalls unter Verwendung von pmfadm -s zu stoppen. Wenn das Testsignal bereits gestoppt wurde, wird die Methode dennoch mit Erfolg beendet, was die Idempotenz der Methode sicherstellt.
# Feststellen, ob der Monitor läuft, und ggf. Beenden erzwingen.
if pmfadm -q $PMF_TAG; then
pmfadm -s $PMF_TAG KILL
if [ $? -ne 0 ]; then
logger -p ${SYSLOG_FACILITY}.err \
-t [$SYSLOG_TAG] \
"${ARGV0} Monitor für Ressource $RESOURCE_NAME"\
"konnte nicht gestoppt werden"
exit 1
else
# Monitor konnte erfolgreich gestoppt werde. Meldung protokollieren.
logger -p ${SYSLOG_FACILITY}.err \
-t [$SYSLOG_TAG] \
"${ARGV0} Monitor für " $RESOURCE_NAME \
" erfolgreich gestoppt"
fi
fi
exit 0
|
Stellen Sie sicher, dass das KILL-Signal mit pmfadm verwendet wird, um das Testsignal zu stoppen, und nicht ein maskierbares Signal wie TERM. Andernfalls kann die Monitor_stop-Methode für unbegrenzte Zeit hängen, bis schließlich die Zeit überschritten ist. Der Grund für dieses Problem ist, dass die PROBE-Methode scha_control() aufruft, wenn der Datendienst neu gestartet oder ein Failover ausgeführt werden muss. Wenn scha_control() die Monitor_stop-Methode als Teil des Prozesses zum Offline-bringen des Datendienstes aufruft und Monitor_stop ein maskierbares Signal verwendet, hängt die Methode, während sie darauf wartet, dass scha_control() endet, während scha_control() hängt und darauf wartet, dass Monitor_stop endet.
Die Monitor_stop-Methode protokolliert eine Fehlermeldung, wenn sie die PROBE-Methode nicht stoppen kann. RGM versetzt den Beispieldatendienst in den MONITOR_FAILED-Zustand auf dem Primärknoten, was den Knoten zum Absturz bringen kann.
Monitor_stop darf erst beendet werden, wenn das Testsignal gestoppt wurde.