BraLUG-Cluster: PVM-Master
Aus BraLUG-Wiki
Version vom 29. Mai 2005, 11:16 Uhr von MaD (Diskussion | Beiträge)
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