Network-Keep-Alive
Es kann vorkommen, dass ein Knoten eines HPC Clusters die Verbindung zum interen Clusternetz verliert und nicht mehr erreichbar ist. Hiervon können
leidgepruefte Anwender von Knoten mit NVidia Chipsaetzen unter Linux ein Lied singen, da diese Chipsaetze unter vielen Linuxdistributionen (boese Kenner sagen unter fast allen) erhebliche Probleme machen). Fuer diese und harmlosere Faelle bietet sysGen einen Scrpit an, welcher es den Knoten ermoeglicht regelmaessig die Netzverbindung zu ueberpruefen und gegebenenfalls die Schnittstellen neu zu starten, was i.d.R. dazu fuehrt, dass die laufenden Programme sofort wieder weiterlaufen.
Zunaechst gilt es die Knoten, welche zur Verifizierung angepingt werden sollen, in eine Textdatei auf dem Headnode aufnehmen und auf dem Cluster verteilen. Im Anschluss, auf dem Headnode selber, den Namen des Headnodes entfernen (hier „m1“), damit sich der Headnode nicht selber „anpingen“ kann (l0):
Fehlt noch: Aus den Knotenlisten die Knoten herausnehmen, die mit dem jeweiligen Testknoten gleich sind, da sonst immer ueber die lo Schnittstelle die Erreichbarkeit des Netzes vorgetaeuscht wird.
[root@m1 log]# vim /etc/keep-alive-nodes
m1
n01
n07
n13
n15
n19
[root@m1 log]# cp –a /etc/keep-alive-nodes /home/
...
[root@m1 log]# pdsh –a “cp –a /home/keep-alive-nodes /etc/”
...
[root@m1 log]# vim /etc/keep-alive-nodes
n01
n07
n13
n15
n19
[root@m1 log]#
Dann wird der network-keep-alive.sh Script erstellt und im uebrigen Cluster verteilt:
[root@m1 log]# vim /usr/local/sbin/network-keep-alive.sh
#!/bin/bash
keep_alive_nodes=/etc/keep-alive-nodes
keep_alive_active=/tmp/keep-alive-active
rm -f $keep_alive_active
touch $keep_alive_active
# try ntest times if nodes can be reached
ntest=5
for x in $(seq 1 $ntest); do
for node in $(cat /etc/keep-alive-nodes); do
ping $node -c1 &> /dev/null
# record node if response was successful
if [ "$?" -eq 0 ]; then
echo $node >> $keep_alive_active
fi
done
done
# if one of the nodes in $keep_alive_nodes was
# reachable, the node is listed in $keep_alive_active
# if none of the nodes was reachable the file is
# empty and we restart the gigabit-ethernet interface
if [ $(wc -l < $keep_alive_active) -eq 0 ]; then
ifdown eth0
ifup eth0
# log the network restart
date >> /var/log/keep-alive
fi
[root@m1 log]# cp –a /usr/local/sbin/network-keep-alive.sh /home
...
[root@m1 log]# pdsh –a “cp –a /home/network-keep-alive.sh usr/local/sbin/”
...
[root@m1 log]#
Zum Schluss muss noch ein Cron-Script erstellt und verteilt werden:
[root@m1 log]# vim /etc/cron.d/network-keep-alive
SHELL=/bin/sh
# Alle 1 Minuten Netzwerk-Konnektivitaet ueberpruefen
*/1 * * * * root /usr/local/sbin/network-keep-alive.sh
[root@m1 log]# cp –a /etc/cron.d/network-keep-alive /home/
...
[root@m1 log]# pdsh –a “cp –a /home/network-keep-alive /etc/cron.d/”
...
[root@m1 log]#
| Article Details: | Views: |
|---|---|
| Last updated: 2010/07/15 |
|
| Autor: | |
|
|
