Linux-Cluster-SystemeStark im Team
Ausfallsicherheit und Lastverteilung
Linux-Cluster-Systeme
Cluster-Computing ist schon länger eine herausragende Anwendung in der Linux-Welt. Die Grundidee ist so bestechend wie einfach: Man nehme ein paar günstige Standard-Rechner, verbinde sie mit handelsüblicher Netzwerk-Technik und installiere frei verfügbare Software. Aus den vernetzten Rechnern wird auf diese Weise mit einfachsten Mitteln ein Parallelrechner. Damit haben Sie ein System, das für ein Minimum an Geld ein Maximum an Rechenleistung bietet. Die Installation verursacht bedeutend weniger Kosten als die Anschaffung eines einzigen Supercomputers mit etwa gleicher Leistung. Selbst bei Größenordnungen von mehreren hundert miteinander vernetzten Standardcomputern liegt der Preis um ein Vielfaches unter dem eines gleichwertigen Supercomputers. Dass diese Idee auch in der Praxis funktioniert, beweisen die zahlreichen Cluster, die bereits an Universitäten, Forschungsinstituten und in der Industrie entstanden sind. Dort modellieren sie die Entstehung von Galaxien und das globale Klima, sie analysieren Gensequenzen und sie stecken hinter den Spezialeffekten aus Hollywood. Ein Cluster kann jedoch auch ganz profane Dienste in Unternehmen verrichten. So beispielsweise als Lastverteilungs- oder Hochverfügbarkeitslösung in einem mittelständischen Unternehmen ? beispielsweise im Bereich von Datenbank- undWebservern. Über die Koppelung von Rechnern kann gewährleistet werden, dass auch nach dem Ausfall eines einzigen Servers kritische Systeme problemlos weiterarbeiten.
Bild: Cluster im Eigenbau: Auf »www.mini-itx.com/projects/cluster/« ist ein Cluster im Eigenbau aus 12 VIA-EPIA800-Rechnern beschrieben
Cluster ? das Grundprinzip
Linux-Cluster-Systeme
Rein formal versteht man in der IT unter einem Cluster eine Gruppe miteinander vernetzter Rechner, die zusammen an einem Problem arbeiten. Es besteht aus mindestens zwei PCs ? im Fachjargon »Knoten« ?, die über eine Verbindungstechnik wie Ethernet miteinander gekoppelt sind. Nach außen hin verhalten sich die Knoten in einem Cluster wie ein virtueller Prozessor. Das Ganze wirkt wie ein einziger Rechner, der Aufträge entgegennimmt, auf die einzelnen Knoten verteilt und dann bearbeitet. Die Knoten können normale Standard- PCs sein, aber ebenso Workstations, Server oder Supercomputer. Ist die Hardund Software auf allen Knoten identisch, handelt es sich um ein homogenes, andernfalls um ein heterogenes Cluster. Von einem Cluster im engeren Sinn spricht man allerdings erst dann, wenn die Knoten exklusiv zum Verbund gehören und einen gemeinsamen Datenbestand verarbeiten. Für die Verbindung kommt bei kleineren Clustern aus Kostengründen Fast- oder Gigabit-Ethernet zum Einsatz. Größere Cluster werden gernemit Hochgeschwindigkeitsnetzen wie SCI (Scalable Coherent Interface), Infiniband oder Quadrics betrieben. Letztere bieten nicht nur hohe Übertragungsgeschwindigkeiten, sondern auch niedrige Latenzzeiten. Dafür sind sie auch entsprechend teuer. Zu bedenken ist auch, dass mit der Größe eines Clusters die Kommunikationskosten steigen. Je mehr Knoten ein Cluster umfasst, um so höher ist der Anteil an der Gesamtrechenleistung, den das Cluster für die Administration aufwenden muss.
Hochverfügbarkeits-Cluster
Linux-Cluster-Systeme
In der Praxis werden Cluster-Systeme vor allem für drei Zielanwendungen eingesetzt: hohe Ausfallsicherheit, hohe Rechenleistung und hoher Datendurchsatz. Hohe Ausfallsicherheit wird mit Hochverfügbarkeits- oder HA-Clustern (High Availability Cluster) erreicht. Dazu koppelt man beispielsweise einen kritischen Datenbank-Server mit einem zweiten Rechner. Tritt auf dem Datenbank- Server ein Fehler auf, werden die auf diesem Rechner laufenden Dienste auf den anderen Knoten migriert. Das Zweitsystem übernimmt im Fehlerfall die Aufgaben des Primärsystems. Bei HA-Clustern unterscheidet man zwischen Aktiv/Passiv- und Aktiv/Aktiv-Clustern. Sind beide Knoten aktiv (Aktiv/Aktiv), ist eine Lastverteilung zwischen den Knoten möglich. Bei Ausfall des einen Knotens übernimmt der andere Rechner dessen Arbeit. Bei einem Aktiv/Passiv-Cluster arbeitet nur ein Server ? das Primärsystem. Der zweite, wartende Server ist das Stand-by-System. Dieses wird beim Ausfall des Primärsystems aktiviert. In der Praxis spielen HA-Cluster bei unternehmenskritischen Anwendungen wie Datenbank, Web- oder E-Mail-Server eine große Rolle. Auch in hoch kritischen Umgebungen, in denen maximale Ausfallzeiten von nur wenigen Minuten im Jahr erlaubt sind, leisten HA-Cluster gute Dienste. Wenn kritische Computersysteme für Katastrophenszenarien abgesichert werden, werden die Cluster-Knoten oft mehrere Kilometer auseinander in verschiedenen Rechenzentren platziert. Tritt der »worst case« ein, kann der Knoten im nicht betroffenen Rechenzentrum dann die gesamte Last übernehmen. Diese Art von Cluster nennt man auch »Stretched Cluster«.
Load-Balancing und High Performance Cluster
Linux-Cluster-Systeme
Die zweite Anwendung von Clustern ist Load-Balancing. Load-Balancing Cluster verteilen die Rechnerlasten auf mehrere Maschinen. Statt durch Aufrüstung einzelner Computer wird der Performance-Bedarf hier durch das Hinzufügen zusätzlicher Computer erfüllt. Die Lastverteilung erfolgt in der Regel über eine redundant ausgelegte, zentrale Instanz, den Load-Balancer. Mögliche Einsatzgebiete sind Umgebungen mit hohen oder wechselnden Anforderungen an die Computer-Performance. Ein typisches Beispiel sind Shop-Systeme, die zu bestimmten Zeiten, wie etwa vor Weihnachten, höher belastet sind als zu anderen. Die dritte Cluster-Applikation ist die Verteilung von Rechenaufgaben. High Performance Cluster (HPC) dienen zur Abarbeitung von Rechenaufgaben, die auf mehrere Knoten verteilt werden. Dazu werden die Aufgaben in »Portionen« aufgeteilt und parallel auf mehreren Knoten ausgeführt. HPCs finden sich oft im wissenschaftlichen Bereich. Nicht jedes Rechenproblem lässt sich durch ein Cluster lösen. Oft kommt es vor, dass die Knoten untereinander Daten austauschen oder dass sie auf einen gemeinsamen Datenbestand zugreifen müssen.
Bild: Kommt es auf Rechenleistung an, spielen Clustersysteme ihre Vorteile aus, etwa im wissenschaftlichen Umfeld
Beowulf-Cluster
Linux-Cluster-Systeme
Dienen die Knoten ausschließlich zum Berechnen und bestehen sie aus handelsüblichen PCs, die unter Linux laufen, spricht man von einem Beowulf-Cluster. Allen Beowulf- Clustern gemeinsam ist, dass die Knoten aus Standardkomponenten zusammengebaut werden, auf denen ein freies Betriebssystem arbeitet. Von der Einordnung her liegen Beowulf-Cluster zwischen reinen High Performance Clustern und COWs, Cluster of Workstations. Anders als bei einem COW, einem reinen Verbund aus Workstations, sind im Beowulf-Cluster alle Knoten exklusiv dem Cluster unterstellt. Die Rechner eines Beowulf-Clusters stehen häufig in einem Raum und verfügen über keine Eingabegeräte oder Monitore. Der Anwender kommuniziert in der Regel nur über einen dedizierten Master-Rechner mit dem gesamten Cluster. Der Master speichert alle benötigten Daten zentral und verteilt sämtliche Prozesse auf die Knoten. Er ist das Tor des Clustersystems zur Außenwelt, mit dem sich die Benutzer verbinden und ihre parallelisierten Programme starten können. Beowulf-Cluster stammen ursprünglich von den beiden NASA-Wissenschaftlern Thomas Sterling und Donald Becker, die 1994 einen Parallelrechner aus handelsüblichen Komponenten »von der Stange« bauen wollten. Ihr Zie
l war es, einen günstigen, aber effizienten und leistungsfähigen Supercomputer zu konstruieren, der es ihnen ermöglicht, große Datenmengen auszuwerten. Das erste lauffähige System bestand aus 16 Knoten mit Intel-486-DX4-Prozessoren, die über ein 10-MBit/s-Ethernet verbunden waren. Inzwischen haben es einige Beowulf-Cluster in die Top500-Liste der schnellsten Supercomputer der Welt geschafft.
Bild: Der Aufbau eines Beowulf-Clusters. Dabei ermöglicht es Software wie Message Passing Interface und Parallel Virtual Machine, Rechenoperationen aufzuteilen
HA-Linux ? Heartbeat
Linux-Cluster-Systeme
Für die Verwaltung von Clustern gibt es spezielle Software. Im Fall von HA-Clustern stehen Cluster Manager zur Verfügung, die Vorgänge wie den Fail-over vom Primärsystem zum Stand-by-System im Fehlerfall automatisieren. Um den Ausfall eines Rechners im Cluster zu erkennen, wird meist der so genannte Cluster-Heartbeat in Verbindung mit einer Voting Disk verwendet ? ein Signal, das über eine Netzwerk-Verbindung zwischen den Clusterknoten ausgetauscht wird. Verstummt der Heartbeat eines Rechners, kann man einen Ausfall annehmen und ein Fail-over einleiten. Damit wird die Übernahme der Dienste vom Primärsystem ? wie Datenbank-, Web- oder Application-Server ? auf das Stand-by-System initiiert. Eine solide Open-Source-Basis ist hier das Linux-High- Availability-Projekt, kurz Linux-HA. Dessen Ziel ist es, Linux-Systeme zur Hochverfügbarkeit aufzurüsten. Heartbeat, das kürzlich in der Version 2.0 freigegeben wurde, ist dabei die Kernkomponente des Projektes. Heartbeat kennt verschiedene Ressourcen wie Dienste, Dateisysteme und IP-Adressen. Zur Überwachung des Rechnerverbunds nutzt Heartbeat eine Paketkommunikation, die über Ethernet und serielle Verbindungen stattfinden kann. In einem Ethernet- Netzwerk setzt das System auf UDP-Broadcast, UDP-Multicast oder UDP-Unicast. Es unterstützt offiziell die x86-, ia64-, x86_64-, PPC- und zSeries-Architekturen. In der neuen Version wurden vor allem die Überwachung einzelner Ressourcen und die Unterstützung großer Cluster deutlich verbessert. Ein relativ weit verbreitetes kommerzielles System ist Oracle RAC (Oracle Real Application Cluster). Das Datenbankmanagementsystem ermöglicht Ausfallsicherheit, indem mehrere Cluster auf dieselbe Datenbank zugreifen und für Clients Datenbankdienste bereitstellen. Weitere Cluster-Manager sind Veritas Cluster, MC/Service Guard von HP oder der Steeleye Lifekeeper.
Bild: Verstummt in einem HA-Cluster der Heartbeat, werden die Dienste des Primärsystems (links) vom Stand-by- System (rechts) übernommen
HPC-Cluster
Linux-Cluster-Systeme
Bei HPC-Clustern, bei denen Programme parallel ausgeführt werden, wird die zu erledigende Aufgabe oft mittels eines Dekomposition-Programms in kleinere Teile zerlegt und dann auf die Knoten verteilt. Eine gängige Methode zur Verteilung von Jobs auf ein HPC-Cluster ist ein Job-Scheduling- Programm. Solche Programme wie Load Sharing Facility (LSF) oder Network Queueing System (NQS) nehmen eine Verteilung nach verschiedenen Kategorien vor. Für die Kommunikation sind Bibliotheken nützlich, die entsprechende Schnittstellen bereitstellen. Verbreitet sind die Nachrichtenbibliotheken Message Passing Interface (MPI) und die Parallel Virtual Machine (PVM). Das MPI wird bei Clustern eingesetzt, deren Rechner die gleiche Architektur besitzen und auf denen ein einheitliches Betriebssystem läuft. Dazu koppelt man die Knoten mit einem schnellen Netzwerk wie Infiniband. PVM wird hingegen in heterogenen Clustern installiert. Die Nachrichtenbibliothek unterstützt dabei die gängigen Hardware- Architekturen und Betriebssysteme und kann auf jedem beteiligten Rechner dynamische Prozesse starten und auch wieder beenden. Per Konsole wird der Zustand der parallelen virtuellen Maschine erfragt.
Amazon nutzt Cluster
Linux-Cluster-Systeme
Kaum ein größeres Unternehmen verzichtet heute noch auf den Einsatz von Clustern. Amazon setzt seine IT auf Linux-Servern auf und nutzt Oracle RAC auf HP-Proliant- Servern. Die Architektur ist zweigeteilt und verrichtet ihre Aufgaben an unterschiedlichen Orten, die über ein Hochgeschwindigkeits- Glasfaser-WAN miteinander verbunden sind. Ein Teil des Clusters steht an der Ostküste der USA, ein Teil an der Westküste. Ein System beherbergt das eigentliche Data Warehouse, das zweite dient als »staging area«. Hier wird neue Software installiert, um bei einem Update einfach zwischen der normalen Umgebung und der Staging-Umgebung umschalten zu können. So lassen sich Software-Updates ohne Downtime fahren. Jedes System besteht aus mindestens vier Knoten, auf welchen jeweils Oracle auf Linux läuft. Die Knoten sind über 2-GBit-Glasfaser verbunden, die die Daten an die diversen MSA-1000-Speichereinheiten verteilen. Mit dem Application- und Cluster-Netzwerk sind die Knoten über 1-GBit- und 100-MBit- Ethernet verknüpft. Die geclusterte Architektur hat Vorteile: So ist die Kapazität nicht auf einen einzelnen Server beschränkt. Für weitere Rechen-Power wird ein neuer Server an das bestehende Netzwerk angeschlossen. Zudem erhöht sich die Verfügbarkeit. Fällt ein Knotenrechner aus, übernehmen andere Einheiten seine Aufgaben.
Peer-to-Peer-, Distributed und Grid-Computing
Linux-Cluster-Systeme
Clustersysteme sind seit vielen Jahren etabliert und Standard in Wissenschaft und Wirtschaft. Relativ neu sind hingegen die nächsten Verwandten des Cluster- Computing: Peer-to-Peer-, Distributed und Grid-Computing. Peer-to-Peer-Computing ist ein Verbund gleichberechtigter Rechner, die in der Regel via Internet verbunden sind. Die Kommunikation erfolgt direkt und ohne zentrale Kontrolle. Jeder Knoten spielt gleichzeitig die Server- und Client-Rolle. P2P-Netzwerke bilden die Infrastruktur für Gemeinschaften, deren Teilnehmer sich gegenseitig Rechenleistung und Speicherkapazität zur Verfügung stellen. Distributed Computing wird bei rechenintensiven Anwendungen eingesetzt. Dabei verteilt ein zentraler Rechner die Aufgaben auf mehrere, unter Umständen weltweit verteilte Clients. Aus den Teilergebnissen ermittelt der Zentralrechner das Gesamtergebnis. Eines der ersten Projekte, die die Technik des verteilten Rechnens nutzten, war dasSETI@home-Projekt der University of California als wissenschaftliches Experiment zur Suche nach außerirdischer Intelligenz – die Weiterführung von Seti ist Boinc. Beim Grid-Computing geht man noch weiter als beim Distributed Computing. Grid verteilt ebenfalls Rechenaufgaben, nutzt jedoch zusätzlich die Ressourcen der angebundenen Computer. Ressourcen sind zum Beispiel spezielle Hardware, Datenbanken oder Software. Eines der am weitesten entwickelten Grid-Systeme nutzt die NASA.Wenn dort beispielsweise ein Flugzeug Probleme meldet, durchkämmt das Gitter quer über die USA verteilte Datenbanken, um Informationen über die Maschine zu finden und Hilfe einzuleiten.
Cluster-Computing ? weiterführende Links
Linux-Cluster-Systeme
Allgemeines
¦ Top Cluster Liste ? die schnellsten Parallelrechner www.top500.org/
¦ Linux Cluster Howto ? Anleitung für Linux-Cluster www.tldp.org/HOWTO/ClusterHOWTO.html
¦ Linux Parallel Processing HOWTO www.tldp.org/HOWTO/Parallel-Processing-HOWTO.html
Cluster-Distributionen
¦ OSCAR ? Meta-Distribution für Cluster http://oscar.openclustergroup.org/
¦ Score ? Cluster-Dist
ribution mit eigener MPI-Bibliothek www.pccluster.org/
¦ Debian Cluster Components ? Custom Debian Distribution http://dcc.irb.hr/
Beowulf
¦ Beowulf Project ? Homepage www.beowulf.org/
¦ Beowulf FAQ ? FAQ der Beowulf-Mailingliste www.canonical.org/~kragen/beowulf-faq.txt
¦ Debian-Beowulf www.debian.org/ports/beowulf/
¦ Aufbau eines Beowulf-Clusters ? Praxis http://de.wikibooks.org/wiki/Beowulf
¦ Installation und Betrieb eines Beowulf-Clusters www.uni-koeln.de/rrzk/kompass/100/k10011a.html
HA-Cluster ? Software
¦ Wackamole www.backhand.org/wackamole/
¦ HA-Linux ? Heartbeat http://linux-ha.org/
¦ Kimberlite ? HA-Failover-Cluster http://oss.missioncriticallinux.com/projects/kimberlite/¦ MC/Service Guard ? HA-Cluster-Software von HP für HP-UX und Linux http://docs.hp.com/en/ha.html#High%20Availability
¦ Oracle RAC ? LCluster von Oracle www.oracle.com/technology/products/database/clustering/
¦ Sun Cluster ? Cluster-Software von Sun www.sun.com/software/cluster/
¦ Cluster Server von VERITAS www.veritas.com/Products/www?c=product&refId=20
HPC-Cluster
¦ Load Sharing Facility http://accl.grc.nasa.gov/lsf/¦ Network Queueing System www.gnqs.org/oldgnqs/editorial.htm
MPI
¦ Open Mosix ? verteiltes Rechnen http://openmosix.sourceforge.net/
¦ MPI ? the Message Passing Interface (MPI) standard www-unix.mcs.anl.gov/mpi/
¦ Open MPI ? moderne MPI-Implementation www.open-mpi.org/
¦ LAM/MPI Parallel Computing ? freie MPI-Implementation www.lam-mpi.org/
PVM
¦ Parallel Virtual Machine ? Homepage www.csm.ornl.gov/pvm/pvm_home.html
¦ PVM-Software www.netlib.org/pvm3/index.html