EinRechnerverbund oderComputercluster, meist einfachCluster genannt (vom Englischen für „Rechner-Schwarm“, „-Gruppe“ oder „-Haufen“), bezeichnet eine Anzahl vonvernetztenComputern. Der Begriff wird zusammenfassend für zwei unterschiedliche Aufgaben verwendet:
Der BegriffCluster beschreibt primär dieArchitektur der einzelnen Bausteine und ihr Zusammenwirken.Hardware- oder Software-Cluster sind grundsätzlich unterschiedlich. Die einfache Form eines Hardware-Clusters ist alsaktiv/passiv bekannt. Andere Varianten sind alscascading bekannt. Dabei muss eine Unterbrechung desServices mit berücksichtigt werden.HP OpenVMS Cluster sind in der Lage, eine Hardware-aktiv/aktiv-Funktionalität zu implementieren.
Softwarecluster oderApplikationscluster hingegen sind eher in der Lage, einen kontinuierlichen Betrieb zu realisieren (Beispiel: DNS-Server). Es hängt aber vomClient in der Client/Server-Architektur ab, ob er mit der Umschaltung des Dienstes (bzw. Service) umgehen kann.
Man unterscheidet zwischen sogenanntenhomogenen undheterogenen Clustern. Computer homogener Cluster laufen unter dem gleichenBetriebssystem und gleicherHardware, beim heterogenen Cluster können unterschiedliche Betriebssysteme oder Hardware eingesetzt werden. BekannteLinux-Cluster-Software sind z. B.HP Serviceguard,Beowulf undopenMosix.
Hochverfügbarkeitscluster (engl.High-Availability-Cluster – HA-Cluster) werden zur Steigerung derVerfügbarkeit bzw. für bessere Ausfallsicherheit eingesetzt. Tritt auf einem Knoten des Clusters ein Fehler auf, werden die auf diesem Knoten laufenden Dienste auf einen anderen Knoten migriert. Die meisten HA-Cluster besitzen 2 Knoten. Es existieren Cluster, bei denen ständig auf allen Knoten Dienste laufen. Diese Cluster nennt man aktiv-aktiv bzw. symmetrisch. Sind nicht alle Knoten aktiv, spricht man von aktiv-passiv oder asymmetrisch. Sowohl die Hardware als auch die Software eines HA-Clusters muss frei vonSingle-Point-of-Failures (Komponenten, die durch einen Fehler das gesamte System zum Ausfall brächten) sein. Anwendung finden solche HA-Cluster in kritischen Umgebungen, in denen Ausfallzeiten von nur wenigen Minuten im Jahr erlaubt sind. Im Rahmen von Katastrophenszenarien müssen kritische Computersysteme abgesichert werden. Dazu werden die Cluster-Knoten oft mehrere Kilometer auseinander in verschiedenen Rechenzentren platziert. Im Katastrophenfall kann der Knoten im nicht betroffenen Rechenzentrum die gesamte Last übernehmen. Diese Art von Clustern nennt man auch „stretched Cluster“.
Load-Balancing-Cluster werden zum Zweck derLastverteilung auf mehrere Maschinen aufgebaut. Die Lastverteilung erfolgt in der Regel über eine redundant ausgelegte, zentrale Instanz. Mögliche Einsatzgebiete sind Umgebungen mit hohen Anforderungen an Computerleistung. Der Leistungsbedarf wird hier nicht durch Aufrüstung einzelner Computer abgedeckt, sondern durch das Hinzufügen zusätzlicher Computer. Grund für die Verwendung ist nicht zuletzt der Einsatz von preisgünstigen Standardcomputern (COTS-Komponenten) anstatt von teuren Spezialcomputern.
High-Performance-Computing-Cluster (HPC-Cluster) dienen zur Abarbeitung von Rechenaufgaben. Diese Rechenaufgaben werden auf mehrere Knoten aufgeteilt. Entweder werden die Aufgaben in verschiedene Pakete aufgeteilt und parallel auf mehreren Knoten ausgeführt oder die Rechenaufgaben (Jobs genannt) werden auf die einzelnen Knoten verteilt. Die Aufteilung der Jobs übernimmt dabei meistens einJob Management System. HPC-Cluster finden sich oft im wissenschaftlichen Bereich. In der Regel sind die einzelnen Elemente eines Clusters untereinander über ein schnellesNetzwerk verbunden. Auch die sogenanntenRenderfarmen fallen in diese Kategorie.
Das erste im Handel erhältliche Clusterprodukt warARCNET, welches1977 vonDatapoint entwickelt wurde. Den ersten wirklichen Erfolg hatte das UnternehmenDEC im Jahr 1983 mit der Vorstellung des ProduktesVAXCluster für ihr ComputersystemVAX. Das Produkt unterstützte nicht nur paralleles Rechnen auf den Clusterknoten, sondern auch die gemeinsame Nutzung vonDateisystemen und Geräten aller beteiligten Knoten. Diese Eigenschaften fehlen noch heute bei vielen freien und kommerziellen Produkten. VAXCluster ist als „VMSCluster“ auch heute noch von der FirmaHP für das BetriebssystemOpenVMS und die ProzessorenAlpha undItanium erhältlich.
Die failover-Funktion wird meist durch das Betriebssystem zur Verfügung gestellt (Servicefailover, IP-Übernahme). Die Übernahme von Diensten kann z. B. durch die automatische Migration vonIP-Adressen oder das Verwenden einerMulticastadresse erreicht werden.
Generell wird zwischen den Architekturenshared nothing undshared all unterschieden.
Typischer Vertreter des „active-active“-Clusters mitshared-nothing-Architektur istDB2 mit EEE (gesprochen „triple e“). Hier beherbergt jeder Clusterknoten eine eigene Datenpartition. Ein Leistungsgewinn wird durch die Partitionierung der Daten und die damit einhergehende verteilte Verarbeitung erzielt. Ausfallsicherheit wird hiermit nicht gewährleistet.
Anders ist dies beim „shared-all“-Cluster. Diese Architektur gewährleistet durch einen konkurrierenden Zugriff aufShared Storage, dass alle Clusterknoten auf den gesamten Datenbestand zugreifen können. Neben Skalierung und Leistungssteigerung wird durch diese Architektur auch eine zusätzliche Ausfallsicherheit erreicht. Fällt ein Knoten aus, übernehmen die anderen Knoten seine Aufgabe(n). Ein typischer Vertreter der shared-all-Architektur ist derOracle Real Application Cluster (RAC).
HA-Computercluster können auch ohne lokale Datenträger direkt aus einemStorage Area Network (SAN) heraus als ein „Single System Image“ booten. SolcheDiskless Shared Root Cluster erleichtern den Austausch von Cluster-Knoten, die in einer solchen Konfiguration nur noch ihre Rechenleistung und I/O Bandbreite zur Verfügung stellen.
Dienste müssen speziell für den Einsatz auf einem Cluster programmiert sein. Ein Dienst wird als „cluster aware“ bezeichnet, wenn er auf spezielle Ereignisse (wie z. B. den Ausfall eines Clusterknotens) reagiert und diese in geeigneter Weise verarbeitet.
Cluster-Software kann in Form von Skripten implementiert oder auch in denBetriebssystemkernen integriert sein.
Bei HPC-Clustern wird die zu erledigende Aufgabe, der „Job“, oft mittels eines Decomposition-Programms in kleinere Teile zerlegt und dann auf die Knoten verteilt.
Die Kommunikation zwischen Job-Teilen, die auf verschiedenen Knoten laufen, geschieht in der Regel mittelsMessage Passing Interface (MPI), da eine schnelle Kommunikation zwischen einzelnen Prozessen gewünscht ist. Dazu koppelt man die Knoten mit einem schnellen Netzwerk wie z. B.InfiniBand.
Eine gängige Methode zur Verteilung von Jobs auf einen HPC-Cluster ist ein Job-Scheduling-Programm, welches eine Verteilung nach verschiedenen Kategorien vornehmen kann, wie z. B.Load Sharing Facility (LSF) oderNetwork Queueing System (NQS).
DieTOP500 derSuperrechner sind zu über 90 %Linux-Cluster, nicht zuletzt weil sich auch für anspruchsvolle Rechenaufgaben billigeCOTS Hardware nutzen lässt.