BraLUG-Cluster: PVM-Master
Aus BraLUG-Wiki
(Unterschied zwischen Versionen)
MaD (Diskussion | Beiträge) (mal kopiert...) |
Aktuelle Version vom 29. Mai 2005, 11:16 Uhr
Inhaltsverzeichnis |
[Bearbeiten] 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
[Bearbeiten] 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)
[Bearbeiten] 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?
[Bearbeiten] 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)
[Bearbeiten] 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...
[Bearbeiten] 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)
[Bearbeiten] 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