Nächste: , Nach oben: Auf einem Rechencluster installieren   [Inhalt][Index]


9.1 Den Zentralrechner konfigurieren

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, dass guix-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]