BraLUG-Cluster: PVM-Master

Aus BraLUG-Wiki

Wechseln zu: Navigation, Suche


Inhaltsverzeichnis

Softwarevoraussetzungen

  • Ziel: möglichst hardware- und distributionsunabhängig:
    • Linux/x86
    • NFS-Server (am besten den Kernel-NFS-Server)
    • libc (2.3.x?, sollte ungefähr mit der der Clients übereinstimmen)
    • PVM (siehe auch PVM-Konfiguration)
    • ANSI-C-Compiler (hier: gcc 3.3.4), kompiliert wird nur auf dem Master
    • Make (z.B. GNU Make 3.80)
    • Remote Shell (ssh? - siehe [1][2])
  • eigener Benutzer/Gruppe für PVM-Master und PVM-Clients, Vorschlag:
    • User "pvmmaster" : UID 2345 (HOME=$MASTERROOT/home/pvmmaster)
    • User "pvmclnt"  : UID 2346 (HOME=$MASTERROOT/home/pvmclient
LTSP-Clients muessen diesen kennen und pvmclient@master muss ohne Passwort Programme auf den Clients pvmclient@client) aufrufen koennen)
    • Group "pvm"  : GID 2345 (nicht ganz so wichtig, sollte aber einheitlich sein)
Sollten die UIDs/GIDs mit moeglichen Master-Distributionen (habe hier Debian) kollidieren, bitte melden
  • Wenn irgendwelche Bibliotheken und Programme zusaetzlich gebraucht werden, sollten diese mit --prefix=$MASTERROOT installiert werden.
  • Wenn genannte Voraussetzungen erfüllt sind, sollte(!) der PVM-Master durch Kopieren des MASTERROOT-Verzeichnisses (s.u.) repliziert werden koennen.
  • In $MASTERROOT wird ein Skript namens "install.sh" liegen, welches die Konfiguration überprüft und simple Anpassungen auch machen kann (Rechte, User, Gruppe...)

[1] in der sshd_config der Clients muss eine Zeile

"PermitUserEnvironment yes"

stehen, und im Home-Verzeichnis des pvmclnt-Benutzers müssen in der Datei ~/.ssh/environment einige Umgebungsvariablen (PVM_ROOT, PVM_ARCH) definiert werden, da beim direkten Ausfuehren eines Befehls per SSH (z.B. Start des PVM-Daemons) die Login-Skripte nicht ausgefuehrt werden Test:

pvmclnt@pvmmaster:~$ ssh ws-190 set | egrep '^PVM'

muss PVM_ARCH und PVM_ROOT ausgeben

[2] Tests mit meiner SSH-Version haben gezeigt, dass publickey-Authentifizierung unabhängig vom Hostnamen ist, der hinter dem Schlüssel in der ~/.ssh/authorized_keys steht. Somit ist passwortloser Befehlsaufruf in alle Richtungen möglich, wenn der User ein Home-Verzeichnis auf verschiedenen Rechnern nutzt, z.B. per NFS

Netzwerkkonfiguration

  • Fester Hostname: pvmmaster (LTSP-Clients sollten diesen auflösen koennen)
  • Feste IP-Adresse: 10.1.2.250
  • DNS: 10.1.2.249 (LTSP-Server, termserv)
  • Gateway unnötig (vielleicht 10.1.2.249)

NFS-Root-Layout

MASTERROOT=/cluster
          # sollte an Clients und Master an der selben Stelle sein

$MASTERROOT (pvmmaster:pvm, 755)    
          # DAS Cluster-Verzeichnis
          # NFS-Export (rw,async)

$MASTERROOT/bin
          # Skripte und aehnliches

$MASTERROOT/home
          # Home-Verzeichnisse der o.g. User

$MASTERROOT/home/pvmclnt (pvmclient:pvm, 755)
          # koennte (!) auch Home-Verzeichnis des pvmclient-Users auf
          # den LTSP-Clients sein

$MASTERROOT/home/pvmmaster (pvmmaster:pvm, 755)

$MASTERROOT/lib
          # sollte ein Cluster-Programm andere Bibliotheken als PVM und
          # libc benoetigen, liegen sie hier

$MASTERROOT/pvm3
          # PVM-Root (komplilierter PVM-Baum, weiter nichts) (PVM_ROOT)
          # (siehe $MASTERROOT/pvm3/Readme)
          # siehe auch [PVM-KONFIGURATION]

$MASTERROOT/pvm3/lib
          # muss im LD_LIBRARY_PATH und PATH stehen (hier liegen auch
          # die Skripte pvm und pvmd

$MASTERROOT/pvm3/*
          # weitere PVM-Quellen und aehnliches, sollte dort bleiben

$MASTERROOT/src
          # ein Makefile oder Make-Include mit Include/Library-Pfaden
          # und anderen Standardwerten, aktuell: pvm.make, setzt u.a.:
          #   * CC
          #   * CFLAGS
          #   * LIBS

$MASTERROOT/src/$PROJECT
          # jedes Cluster-Projekt bekommt ein Verzeichnis
          # Programm wird auch in diesem Verzeichnis ausgefuehrt?
          # Rechte u.U. noch anpassen (schreiben ausserhalb /$MASTERROOT/tmp?)
          # Makefile sollte "include ../pvm.make" machen, um Regeln zu
          # bekommen

$MASTERROOT/tmp (pvmmaster:pvm 777)
          # schreibbar fuer alle
          # evtl. weiteres Verzeichnis fuer Ergebnisse, etc.
  • Wird PVM-Povray "global" (Prefix $MASTERROOT) oder unter $MASTERROOT/src/pvmpov o.ä. installiert?
  • Backup/automatische Veröffentlichung von Ergebnissen?

PVM-Konfiguration

  • aktuell PVM 3.4.5
  • statisch gelinkt, dadurch unabhängig von Bibliotheken
  • PVM_ARCH=LINUXI586, folgende Änderungen gegenueber LINUX:
    • CFLAGS += -mcpu=i586 -march=i586 -O2
    • rsh-Kommando /usr/bin/ssh (änderbar durch PVM_RSH)

Initialisierung

  • LTSP-Clients müssen ein init-Skript besitzen, dass folgende Dinge macht:
    • $MASTER:$MASTERROOT per NFS auf $MASTERROOT mounten
(Namen werden fest sein), falls noch nicht per fstab gemountet
    • ein Skript aus $MASTERROOT/bin aufrufen
(dieses wird die IP-Adresse des Clients auslesen und ihn beim Server registrieren)
z.B. ueber einen Eintrag im Init-Skript der Clients:
su -c '/cluster/bin/client_register.sh' pvmclnt
[!] Clients wuerden dafuer 'su' benoetigen...

Laufzeit

  • Jobs werden auf dem Master angeschubst (Batchsystem nicht notwendig, oder?)
  • lokale (X-)Session oder SSH
  • Alle Ausgaben der Jobs sollten protokolliert werden
  • "Ergebnisse" müssen irgendwo hin
  • "Watchdog" überprueft regelmässig, ob noch alle Rechner da sind und kickt nicht funktionierende raus (TBD, MaD)

Sicherheit

  • Sind wir am Internet?
  • Welche Ports müssen auf dem PVM-Master offen sein?
    • 22 tcp ssh
    • 111 tcp/udp rpcbind/portmapper
    • 2049 tcp/udp nfs
    • ...
    • pvmd udp 32826 o.ä. (automatische Vergabe, wie es aussieht)

-- Markus Dahms, 14.12.2004

'Persönliche Werkzeuge