Nächste: Die Arbeitsrechner konfigurieren, Nach oben: Auf einem Rechencluster installieren [Inhalt][Index]
Unsere Empfehlung ist, eine Maschine zum Zentralrechner zu ernennen (als
„Head Node“) und auf dieser guix-daemon
auszuführen, wobei
/gnu/store über NFS mit den Arbeitsrechnern („Compute Nodes“) geteilt
wird.
Zur Erinnerung: guix-daemon
ist das Hintergrundprogramm, mit dem
für Clients Erstellungsprozesse angelegt und Dateien heruntergeladen werden
können (siehe Aufruf des guix-daemon in Referenzhandbuch zu
GNU Guix), und das allgemein auf /gnu/store zugreift. Dort liegen
dann alle Paket-Binärdateien, die irgendeiner der Nutzer erstellen lassen
hat (siehe Der Store in Referenzhandbuch zu GNU Guix). Mit
„Clients“ meinen wir die Guix-Befehle, die Benutzer aufgerufen haben, wie
etwa guix install
. Auf einem Cluster können diese Befehle auf den
Arbeitsrechnern aufgerufen werden und dennoch werden wir sie mit der
zentralen guix-daemon
-Instanz sprechen lassen.
Legen wir los. Für den Anfang folgen wir auf dem Zentralrechner der Anleitung zur Installation aus einer Binärdatei (siehe Aus Binärdatei installieren in Referenzhandbuch zu GNU Guix). Zum Glück gibt es das Installationsskript, so dass das schnell gehen dürfte. Wenn die Installation dann abgeschlossen ist, müssen wir daran Anpassungen vornehmen.
Weil wir möchten, dass guix-daemon
nicht nur auf dem
Zentralrechner zugänglich ist, sondern von jedem der Arbeitsrechner erreicht
wird, richten wir es so ein, dass er auf Verbindungen über TCP/IP
lauscht. Dazu bearbeiten wir die systemd-Datei zum Start von
guix-daemon
, /etc/systemd/system/guix-daemon.service, und
fügen ein Argument --listen
zur ExecStart
-Zeile hinzu. Diese
sieht jetzt ungefähr so aus:
ExecStart=/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon --build-users-group=guixbuild --listen=/var/guix/daemon-socket/socket --listen=0.0.0.0
Die Änderungen wirken sich erst aus, wenn der Dienst neu gestartet wurde:
systemctl daemon-reload systemctl restart guix-daemon
Anmerkung: Mit
--listen=0.0.0.0
ist gemeint, dassguix-daemon
alle auf Port 44146 eingehenden TCP-Verbindungen annimmt (siehe Aufruf des guix-daemon in Referenzhandbuch zu GNU Guix). Das ist normalerweise auf Rechen-Clustern in Ordnung, weil der Zentralrechner für gewöhnlich ausschließlich vom lokalen Netzwerk des Clusters aus erreichbar ist – unter keinen Umständen darf er für das gesamte Internet zugänglich sein!
Als Nächstes müssen wir unsere NFS-Freigaben in /etc/exports definieren. Dazu fügen wir etwas wie hier hinzu:
/gnu/store *(ro) /var/guix *(rw, async) /var/log/guix *(ro)
Es genügt, das Verzeichnis /gnu/store nur lesbar zu exportieren, weil
es nur durch guix-daemon
auf dem Hauptknoten jemals verändert
wird. In /var/guix befinden sich Benutzerprofile, die man mit
guix package
anlegen kann. Damit Benutzer also Pakete mit
guix package
installieren können, muss Lese- und Schreibzugriff
ermöglicht werden.
Nutzer können so viele Profile anlegen, wie sie möchten, zusätzlich zum
Standardprofil, ~/.guix-profile. Zum Beispiel bekommt jemand, die
guix package -p ~/dev/python-dev -i python
ausführt, Python in einem
Profil installiert, das über die symbolische Verknüpfung
~/dev/python-dev
erreichbar ist. Damit dieses Profil nicht
irgendwann vom Müllsammler weggeräumt wird – d.h. damit Python nicht
aus /gnu/store entfernt wird, solange dieses Profil existiert –,
müssen die Persönlichen Verzeichnisse in /home auch auf dem
Zentralrechner eingebunden sein. Wir wollen, dass guix-daemon
über
solche Nicht-Standard-Profile weiß, dass die darin referenzierte Software
noch gebraucht wird.
Es kann allerdings sinnvoll sein, Software die nicht gebraucht wird,
regelmäßig aus /gnu/store zu löschen. Verwenden Sie dazu
guix gc
(siehe Aufruf von guix gc in Referenzhandbuch zu GNU Guix). Dazu können Sie so einen crontab-Eintrag auf
dem Zentralknoten vornehmen:
root@master# crontab -e
… und schreiben Sie etwa:
# Jeden Tag um 5 Uhr morgens den Müllsammler schicken, # damit mindestens 10 GB auf /gnu/store verfügbar sind. 0 5 * * 1 /usr/local/bin/guix gc -F10G
So viel zum Zentralrechner! Jetzt geht’s an die Arbeitsknoten.
Nächste: Die Arbeitsrechner konfigurieren, Nach oben: Auf einem Rechencluster installieren [Inhalt][Index]