ltcp/bericht/prov/prov-provisioning.tex

84 lines
4.0 KiB
TeX
Raw Permalink Normal View History

2013-11-30 15:51:13 +00:00
\subsection{Provisionierung}
\label{sub:provisionierung}
2013-12-08 20:13:48 +00:00
\subsubsection{Vorbereitung}
\begin{sloppypar}
2014-04-06 09:41:56 +00:00
Für die Provisionierung wurde Clonezilla verwendet. Bei einem Netzwerk-Boot
beispielsweise, bei dem das gesamte Dateisystem per NFS eingebunden wird, wäre
in unserem Fall ineffektiv, da auf den Festplatten der Compute-Nodes genügend
Speicher für das Betriebssystem vorhanden ist und bei jedem Zugriff auf das
Dateisystem unnötigen Latenzen entstehen würden.
2013-12-15 16:59:59 +00:00
2014-04-05 15:35:12 +00:00
Um Clonezilla auf den Compute-Nodes zu booten, haben wir den
2014-04-03 09:37:41 +00:00
\emph{in.tftpd}-Server installiert und das Service-File für \emph{Systemd}
angepasst (siehe \emph{aufgabe4.4/tftpd.service}). Außerdem haben wir die
Konfiguration des DHCP-Servers so angepasst, dass nun jede Compute-Node eine
eigene Konfigurationsdatei in \emph{/etc/dhcpd.d/} hat, die jeweils von
\emph{/etc/dhcpd.d/all} inkludiert wird.
2013-12-08 20:13:48 +00:00
2014-04-06 09:41:56 +00:00
Um die Compute-Nodes zu verwalten, haben wir das Script \emph{cluster}
geschrieben. Mit dem Befehl
2013-12-08 20:13:48 +00:00
\begin{lstlisting}
cluster add <HOSTNAME> <IP> <MAC>
\end{lstlisting}
wird ein neuer Node hinzugefügt (DHCP- und DNS-Eintrag). Mit
\begin{lstlisting}
cluster set-<MODE> <HOSTNAME>
\end{lstlisting}
2014-04-03 09:37:41 +00:00
kann der Modus für den nächsten Boot des Nodes festgelegt werden. Hier kann
zwischen \emph{local} (Boot von lokaler Festplatte), \emph{live} (Boot in das
2014-04-06 09:41:56 +00:00
Clonezilla Image), \emph{clone} (Klonen nach Boot) und \emph{restore} (Image
2014-04-03 09:37:41 +00:00
laden nach Boot) gewechselt werden.
2013-12-08 20:13:48 +00:00
2014-04-03 09:37:41 +00:00
Um den Netzwerk-Boot zu ermöglichen, haben wir \emph{pxelinux} unter
\emph{/srv/tftp/pxelinux} installiert und konfiguriert. In dieses Verzeichnis
haben wir die Dateien \emph{vmlinuz}, \emph{initrd.img} und
\emph{filesystem.squashfs} aus der Clonezilla-Live-ISO kopiert, sowie außerdem
noch \emph{ldlinux.c32, libcom32.c32, libutil.c32, menu.c32, chain.c32} und
\emph{pxelinux.0} aus der \emph{syslinux}-Installation. Die
Konfigurationsdateien liegen in \emph{/srv/tftp/pxelinux/pxelinux.cfg}.
2013-12-08 20:13:48 +00:00
\end{sloppypar}
2014-04-05 15:35:12 +00:00
\subsubsection{Provisionierung der Compute-Nodes}
2013-12-08 20:13:48 +00:00
\begin{sloppypar}
2014-04-06 09:41:56 +00:00
Um den Klonvorgang zu starten, führten wir den Befehl \texttt{sudo cluster
set-clone <HOSTNAME>} aus. Durch Neustart des Nodes wird das Clonezilla Live
Image gebootet. Dieses holt sich nun vom Head-Node ein Script und führt es aus.
In diesem Script haben wir alle nötigen Befehle eingetragen, um das Klonen
2014-04-03 09:37:41 +00:00
vorzubereiten und zu starten (siehe \emph{aufgabe4.4/clone.sh}). Dazu wird per
2014-04-05 15:35:12 +00:00
NFS das \emph{/cluster}-Verzeichnis des Head-Nodes eingebunden und dort im
Unterverzeichnis \emph{images} das Image der Festplatte abgelegt. Geklont werden
2014-04-06 09:41:56 +00:00
die \emph{Root}- und die \emph{Boot}-Partition.
2013-12-08 20:13:48 +00:00
2014-04-03 09:37:41 +00:00
Zum Wiederherstellen des Images wird mit \emph{sudo cluster set-restore
<HOSTNAME>} wieder der entsprechende Boot-Modus gesetzt und der Node
2014-04-06 09:41:56 +00:00
neu gestartet. Dort wird nun ein anderes Script vom Head-Node geholt (siehe \emph{
2014-04-03 09:37:41 +00:00
aufgabe4.4/restore.sh}) und die beiden Partitionen wiederhergestellt.
Anschließend werden noch die Swap-Partition und die Daten-Partition für das
verteilte Dateisystem neu formatiert und die alten UUIDs gesetzt.
2013-12-08 20:13:48 +00:00
2014-04-03 09:37:41 +00:00
Da Clonezilla bei uns das Dateisystemformat \emph{ext4} nicht als solches
2014-04-06 09:41:56 +00:00
erkannt hat, fiel auf das generische Programm \emph{partclone.dd} zurück,
2014-04-03 09:37:41 +00:00
welches allerdings sehr langsam ist, weil es die komplette Partition klont und
freie Blöcke nicht überspringt. Deswegen haben wir zwei kleine Wrapper-Scripts
geschrieben.Diese Skripte verwenden stattdessen das schnellere
\emph{partclone.ext4} (siehe \emph{aufgabe4.4/partclone.dd-clone} und
\emph{partclone.dd-restore}).
2013-12-08 20:13:48 +00:00
2014-04-06 09:41:56 +00:00
Da in unserem Cluster gemischte Boards (Intel und Zotac) sind, mussten wir
2014-04-03 09:37:41 +00:00
anschließend außerdem noch das Ziel-Root-Verzeichnis mounten und dort mit Befehl
\emph{mkinitcpio -p linux} ein neue Init-Ramdisk erstellen lassen, welches die
2014-04-06 09:41:56 +00:00
entsprechenden Treiber für den Bootvorgang enthält.
2013-12-08 20:13:48 +00:00
2014-04-03 09:37:41 +00:00
Um die automatische Umbenennung der Netzwerk-Interfaces vorzubeugen, haben wir
außerdem einen Symlink \emph{/etc/udev/rules.d/80-net-name-slot.rules ->
2014-04-06 09:41:56 +00:00
/dev/null} erstellt. Dadurch wird verhindert, dass das Ethernet-Interface nicht nach
dem neuen Schema enpXsY, sondern fest den Namen eth0 erhält.
2013-12-08 20:13:48 +00:00
2014-04-03 09:37:41 +00:00
\end{sloppypar}