Linux Cluster

Aufbau


[ Seminar Linux und Apache ] [ Inhalt ] [ Funktionsweise ]

Übersicht

[ nach oben ]

Cluster vs. Netzwerk von Workstations

Wenn mal einmal von der philosophischen Frage absieht, drehen sich die Unterschiede zwischen einem Cluster und einem "normalen" Netzwerk von Workstations im wesentlichen um folgende fünf Punkte: Sicherheitsaspekte, Applikationen, Administration, Boot-Vorgang, File-System.

Ausgeliefert und installiert haben die meisten Linux-Distributionen ein hohes Sicherheitsniveau, und das auch aus gutem Grund. Diese sehr hohe Sicherheit ist jedoch dem "normalen" Gebrauch eines Clusters im Weg. Auf die Details wird weiter unten noch eingegangen.

Anwendungen nutzen als Basis sogenannte Message Passing Systeme wie MPI oder PVM. Es gibt zwar viele Wege, um Parallelität umzusetzen, aber Message Passing ist sehr populär und passend für die meisten Fälle.

Generell ist aber folgendes zu sagen: Außer eine Anwendung wurde speziell für den Einsatz in einer Cluster Umgebung entwickelt, wird sie immer nur auf einer CPU laufen. Man kann keinen Apache- oder MySQL-Server nehmen und sie über mehrere CPUs in einem Cluster laufen lassen, außer es werden spezielle Parallele Source Code Versionen entwickelt und eingesetzt.

Glücklicherweise gibt es diverse Tools, um die Administration eines Clusters zu erleichtern. Zum Beispiel wird es nicht wirklich die Erfüllung sein, 32 Nodes in einem Cluster neu zu starten, falls dies nötig sein sollte. Jedoch bedeutet die Administration eines Clusters auch Abstriche in der Sicherheit zu machen. Zum Beispiel ist es sehr wertvoll in einem Cluster, sich auf jedem Node als root per rlogin anmleden zu können. In einem offenen Netzwerk wäre dies jedoch ein fatales Sicherheitsloch.

Es gibt diverse Möglichkeiten, ein einem Cluster die Nodes zu booten. Die einfachste ist natürlich der Boot von der lokalen Festplatte. Aber auch das Disk-Less Booting vom Host Node ist eine ansprechende Alternative, erfordert aber wesentlich mehr fortgeschrittene Konfigruation. Booten von einem BootProm wollen wir hier einmal außen vor lassen.

Zu guter Letzt das Dateisystem: Für die vernünftige Arbeit an einem Cluster ist zumindest der /home Pfad für den kompletten Cluster per NFS zu verteilen.

[ nach oben ]

1. Hardware

Exemplarisch betrachten wir einmal den Aufbau eines Clusters mit 4 Nodes. Dazu besorgt man sich 4 identische PC "von der Stange", jeweils eine schnelle Netzwerkkarte, die am besten auch Duplex-Fähigkeit besitzt, eine Netzwerkkarte extra und einen schnellen Switch. Für einen der Nodes wird man wohl auch noch Tastatur, Monitor und Maus benötigen.

[ nach oben ]

2. Private LAN

Diese Rechner werden in einem Netzwerk miteinander durch den Switch verbunden, wobei einer der vier PCs mit den zwei NIC's als Gateway zum restlichen LAN dient:

[ nach oben ]

3. Linux Konfiguration

Routing

Als erstes wird der Host-Node als Gateway eingerichtet. Dazu bekommt eine Netzwerkkarte, die an das externe Netz angeschlossen ist, eine IP aus diesem Netz, die andere, die an den Switch des Cluster angeschlossen ist, eine IP des Clusters. Damit ist dem Cluster der Zugang nach außen und anderen der Zugang zum Cluster möglich. Die Gateway Konfigruation erfolgt in der Routing-Tabelle:

markus@mbs001:~ > /sbin/route
Kernel IP routing table
Destination     Gateway         Genmask         ...    Use Iface
10.0.0.0        *               255.255.255.0   ...      0 eth1	
192.168.0.0     *               255.255.255.0   ...      0 eth0
127.0.0.0       *               255.0.0.0       ...      0 lo
default         192.168.0.1     0.0.0.0         ...      0 eth0

DNS Server oder /etc/hosts

Desweiteren müssen sich die Nodes im Cluster natürlich untereinander beim Namen kennen, d.h. man setzt im Cluster entweder einen DNS Server ein, oder man wählt die einfachere Variante von host-Dateien. Diese sehen dann so aus und müssen auf jedem Rechner im /etc Verzeichnis vorhanden sein:

markus@mbs001:~ > cat /etc/hosts
192.168.0.2 mbs001.m-bader.de mbs001
10.0.0.1    node1.m-bader.de  node1
10.0.0.2    node2.m-bader.de  node2
10.0.0.3    node3.m-bader.de  node3
10.0.0.4    node4.m-bader.de  node4

Sicherheit

Die folgenden Sicherheitslöcher sind nur auf den Nodes im Cluster zu schaffen, die keine Verbindung zur Außenwelt (außer natürlich über das Gateway) haben. Auf dem Gateway ist höchste Sicherheit erforderlich.

Als erstes wird in der Datei /etc/hosts.deny erst einmal generell alles verboten:

markus@mbs001:~ > cat /etc/hosts.deny
# See tcpd(8) and hosts_access(5) for a description.

ALL: ALL: spawn ( \
echo -e "\n\
TCP Wrappers\:  Connection Refused\n\
By\:               $(uname -n)\n\
Process\:          %d (pid %p)\n\
User\:             %u\n\
Host\:             %c\n\
Date\:             $(date)\n\
" | /bin/mail -s "From tcpd@$(uname -n). %u@%h -> %d" root)

Um wieder etwas Lust zu bekommen, vertrauen wir allen Nodes im Cluster. Dies wird in der Datei /etc/hosts.allow eingetragen:

markus@mbs001:~ > cat /etc/hosts.allow
# we fully trust ourself and all the other 
# nodes within the cluster

ALL : localhost, 10.0.0.

in.telnetd : scouter.m-bader.de

Um die Ausfürung von Programmen per rsh zu ermöglichen, passen wir die Datei /etc/hosts.equiv an:

markus@mbs001:~ > cat /etc/hosts.equiv
#
# hosts.equiv
# This file describes the names of the
# hosts which are to be considered
# "equivalent", i.e. which are to be
# trusted enought for allowing rsh(1) commands.
#
# must be read/writable by user only!
node1
node2
node3
node4

Neben diesen Punkten sollte man noch den rlogin-, den telnet- und den ftp-Zugriff für root auf allen Nodes erlauben.

[ nach oben ]

4. Software

MPI vs. PVM

Für die Programmierung auf Clustern braucht man nicht unbedingt parallele Software. Aber einfach und zur Zeit weit verbreitet sind sogenannte Message Passing Systeme. Die beiden populärsten Vertreter zu Zeit sind MPI (Message Passing Interface) und PVM (Parallel Virtual Machine)

PVM ist älter und wurde seiner Zeit für Netzwerke von Workstations entwickelt. Bis heute wurde PVM auf viele parallele Supercomputer portiert. Die Kontrolle über PVM liegt allein bei den Autoren. PVM ist einfach zu installieren und mit wenig Aufwand zu konfigurieren. PVM bietet auf Grund seiner Virtuellen Maschine sehr gute Unterstützung für heterogene Netzwerke.

MPI ist ein Standard, der inzwischen von vielen Hardware Herstellern von paralleler Hardware unterstützt wird. Dieser Standard bietet mehr Funktionalität als PVM. Die Kontrolle über MPI liegt beim MPI-Standard Kommittee. MPI ist besser geeignet für homogene Cluster.

Für den exemplarischen Einsatz und die Beschreibung der Funktionsweise von Cluster werde ich mich hier auf PVM konzentrieren.

PVM3 liegt aktuell in der Version 3.4 vor und ist in den meisten aktuellen Linux-Distributionen (Suse 7.1, Mandrake 8.1) enthalten. Die Installation von PVM gestaltet sich als relativ einfach:

Damit ist die Virtuelle Maschine auf jedem Node des Clusters zumindest installiert. Wie nun alle Nodes zu einer Virtuellen Maschine gemacht werden, wird später noch deutlich.

[ nach oben ]

[ Seminar Linux und Apache ] [ Inhalt ] [ Funktionsweise ]