Laden...

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
Article
article viewed 132 times
Autor:
Autor
Dieter Nikisch