Login
Newsletter
Werbung

Di, 18. September 2007, 00:00

High Availability Computer Center mit hacc- Teil 2

Teil 2: Einsatz von Nagios auf den Steuerknoten

Zu beachten ist, dass der Ereignis-Handler für den Host die Verfügbarkeit des logischen Applikationsservers prüft und entsprechend reagiert. Dies geschieht über die externe IP-Adresse des Knotens, die im »Image« definiert wird. Für die interne IP-Adresse und die IP-Aliase kann auch eine Host-Definition benutzt werden. Dafür sollte aber nicht der Ereignis-Handler laut Skript 6 benutzt werden.

Skript 6: event_host

1:#!/bin/bash
2:
3:# event_host
4:
5:# event_handler bei Ausfall einer Applikation
6:
7:# Parameter:
8:
9:eval set -- $(getopt -n $0 -o H:s:t:a: -l host-down: -l help -- "$@")
10:
11:#D echo $@
12:
13:. /usr/local/nagios/local/data
14:Z=$(date +'%F-%k:%M:%S')
15:SELF=$(basename $0)
16:LOG="$LOGDIR/$SELF.log"
17:
18:exec 2>>$LOG.err
19:
20:while true
21:do
22: case "$1" in
23: -H) HOST="$2"; shift 2;;
24: -s) STATUS="$2"; shift 2;;
25: -t) TYPE="$2"; shift 2;;
26: -a) ATT="$2"; shift 2;;
27: --host-down) HOSTDOWN="$2"; shift 2;;
28: --) shift; break;;
29: --help) cat <<-__
30: usage: $0 -H host -s state
31: -t type -a attempt
32: --host-down time
33: __
34: exit 0;
35: break;;
36: esac
37:done
38:
39:echo "$Z: $SELF -H $HOST -s $STATUS -t $TYPE -a $ATT --host-down $HOSTDOWN" \
40: >>$LOG
41:
42:if [ $HOSTDOWN -ne 0 ]
43:then
44: echo "$Z: $SELF -H $HOST DOWNTIME" >>$LOG
45: exit 0
46:fi
47:
48:# keine Downtime - Behandlung des Problems
49:
50:if [ $STATUS == 'DOWN' ]
51:then
52: if [ $TYPE == 'HARD' ]
53: then
54: # ermitteln Knoten-Nummer aus dem unionfs Verzeichnis
55: if ( KN=$($USER2/get_node $HOST) )
56: then
57:KN=$($USER2/get_node $HOST) # wirkt sonst nicht
58:#D echo "$Z: $HOST sleep 15 Minuten" \
59:#D >>$LOG
60:#D set -x
61:#D sleep 15m
62:#D echo "$Z: $HOST weakup -> Ping $HOST" \
63:#D >>$LOG
64:if ( R=$(ping $HOST -c 1) )
65:then
66: echo "$Z: $HOST OK: $R" \
67: >>$LOG
68: exit 0
69:else
70: echo "$Z: $HOST - Ping ERROR: $R" \
71: >>$LOG
72: echo "$Z: $HOST; Node: $KN --> $USER2/blade_ctrl $KN off " \
73: >>$LOG
74: # Ausschalten defekter Knoten
75: $USER2/blade_ctrl $KN off >>$LOG
76: # Suchen freien Knoten
77: cd $UNION_DIR
78: for KNF in $UNION_IP
79: # moegliche Knoten
80: do
81: if ( test -d $KNF )
82: then
83: echo "$Z: Knoten: $KNF belegt" \
84: >>$LOG
85: else
86: # freier Knoten gefunden -> Zuordnen
87: echo "$Z: $UNION_DIR: mv $KN $KNF" \
88: >>$LOG
89: mv $KN $KNF
90: # Platzhalter -> bisherigen Knoten (HW-Defekt)
91: echo "$Z: $UNION_DIR: ln -s XXX $KN" \
92: >>$LOG
93: ln -s XXX $KN
94: # Neuzuordnung OK -> Einschalten
95: if ( test -d $KNF )
96: then
97: echo "$Z: $HOST; $USER2/blade_ctrl $KNF on" \
98: >>$LOG
99: $USER2/blade_ctrl $KNF on >>$LOG
100:if [ $? -eq 0 ]
101:then
102: echo "$Z: $USER2/nagios.down $HOST $((10 * 60))" >>$LOG
103: $USER2/nagios.down "$HOST" $((10 * 60)) \
104: "AUTO: Knoten RESET ueber Management-Blade"
105:fi
106: exit 0
107: else
108: echo "$Z: $HOST; ERROR: mv $KN $KNF" \
109: >>$LOG
110: exit 3
111: fi
112: fi
113: done
114:fi
115: else
116: echo "$Z: Knoten: $HOST wird nicht behandelt"
117: exit 0
118: fi
119: fi
120:fi
121:
122:
123:exit 0

Der Vollständigkeit halber sollen die folgenden Skripte noch angegeben werden (Skript 7):

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung