Re: Einfacher Cluster

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Sun, 31 Aug 2003 22:03:27 +0200 (CEST)

Stefan Jahn <stefan.jahn(at)nemesis-sektor.de> wrote:
> ist es unter FreeBSD möglich einen einfachen Cluster mit 2 PCs (nur zum
> rumspielen und testen) zu erstellen die sich Gegenseitig die
> Rechenleistung teilen?

Da gibt es diverse Möglichkeiten. Der Begriff »Cluster«
wird leider manchmal recht nachlässig benutzt. Insbeson-
dere im Linux-Lager wird schnell mal von »Cluster« ge-
sprochen, wenn einfach nur zwei Büchsen miteinander ver-
kabelt sind und sich gegenseitig per Skript Rechenjobs
zuschieben. Das ist aber nicht wirklich ein Cluster.

Ich vermute, Du möchtest nicht unbedingt einen »richtigen«
Cluster bauen, sondern einfach nur bestimmte Dinge auf
zwei Rechner verteilen. Das geht je nach Anwendungen auf
verschiedene Weisen. Zum verteilten Compilieren gibt es
z.B. den distcc. Viele andere Programme haben eigene Me-
chanismen eingebaut, um Jobs zu verteilen, z.B. POV-Ray.
Für andere Dinge wiederum kann man ohne großen Aufwand
selbst etwas basteln, z.B. ein Shell-Skript, das die
Tracks einer Audio-CD zum Encoden über mehrere Rechner
verteilt. Und und und ...

Wenn man einen Level höher guckt, gibt es diverse Arten
von Libraries, die »distributed processing« bereitstellen.
Bekannter Vertreter dieser Spezies ist PVM. Allerdings
müssen die Applikationen bereits Support dafür eingebaut
haben; das Verteilen passiert nicht »automagisch« für be-
liebige Software.

Wenn es dagegen um das Verteilen von Serverdiensten geht,
um Lastverteilung und/oder hohe Verfügbarkeit zu erreichen,
kommen ganz andere Verfahren zum Einsatz, angefangen vom
primitiven DNS-Round-Robin bis hin zu dedizierten Balancern
(z.B. Layer7-Switche, Nortel Alteon). Dieses Thema wurde
ja schon mehrfach in diversen Threads auf dieser Liste
durchgekaut.

> Nächste Frage - nutzen die Programme so einen Parallelrechner oder
> betrifft das nur spezielle Programme?

Die oben erwähnten Mechanismen erfordern i.allg. bereits
entsprechenden Support durch die Software, die man laufen
läßt. Viele Programme unterstützen ja noch nicht einmal
richtig SMP.

Ein »richtiger« Cluster ist übrigens aus Sicht der Appli-
kation nicht von einem reinen SMP-System unterscheidbar.
Wenn ein Programm ein fork() macht, kann der Child-Prozeß
auf einem ganz anderen Node des Verbunds ablaufen. Damit
das sinnvoll nutzbar ist, ist natürlich eine schnelle
Kopplung zwischen den Nodes erforderlich. FastEthernet
reißt's da eher nicht. Professionelle Cluster-Systeme
bieten häufig auch zwei Varianten des fork()-Äquivalents,
eine für »enge Kopplung« (der Child-Prozeß muß auf dem
gleichen Node ausgeführt werden) und eine für »lose Kopp-
lung« (darf auch auf einem anderen Node ausgeführt werden).
Es gibt sogar APIs, wo das Programm dem Betriebssystem
mitteilt, welche Kommunikationsbandbreite mit dem Child-
Prozeß zu erwarten ist, und das Betriebssystem entscheidet
dann selbst, wo der Child-Prozeß am besten ausgeführt wer-
den sollte, auch unter Berücksichtigung der aktuellen Last
der Nodes. Schließlich wird auch noch nötigenfalls die
Migration eines laufenden (!) Prozesses von einem Node auf
einen anderen unterstützt. Sun-Cluster können das bei-
spielsweise.

Und bevor Du jetzt fragst: Nein, mir ist leider nichts
bekannt, was das im letzten Absatz aufgeführte unter Free-
BSD (oder irgendeinem *BSD) ermöglicht.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"File names are infinite in length, where infinity is set to 255 characters."
        -- Peter Collinson, "The Unix File System"
To Unsubscribe: send mail to majordomo.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 31 Aug 2003 - 22:03:48 CEST

search this site