Clustering/Grundlagen für Auswahl, Einrichtung und Verwaltung

Cluster-Markt eröffnet neue Konzepte

26.10.2001
Der Markt für gekoppelte Rechnersysteme gerät in Bewegung: Altbewährte Konzepte konkurrieren mit alternativen Ansätzen aus dem Linux-Lager. Parallel dazu haben sich Java-2-Applikations-Sever als Grundlage für offene Clustering-Architekturen etabliert. Von Henrik Klagges*

"Ein Auto hat doch auch mehr als einen Zylinder", sagt sich so mancher Anwender, wenn er über die Grenzen seines Rechners hinauswachsen will. Warum sollte man nicht mehrere Rechner zu einem Cluster, einem Verbund, zusammenschalten? Im Idealfall sollte sich nicht nur die Leistung der einzelnen Rechner addieren. Auch die Verfügbarkeit des Gesamtsystems kann sich erhöhen, indem bei Ausfall eines Teilsystems die im Verbund verbliebenen Rechner dessen Aufgaben übernehmen.

Doch im Cluster-Geschäft ist die Praxis von der Theorie noch weiter entfernt als üblich. Das Körnchen Wahrheit im bösen Satz "Wollen Sie einen Cluster oder möchten Sie Hochverfügbarkeit?" hat schon so manchem IT-Berater schlaflose Nächte bereitet. Die Investition in einen Cluster will gut überlegt sein.

LeistungsclusterBeim leistungsorientierten Clustern stellen sich die klassischen Fragen der Parallelverarbeitung: Wie kann die Aufgabe in unabhängige Stückchen aufgeteilt werden? Wie kann man die Kommunikation, die zur Koordination der Teillösungen nötig ist, minimieren? Die Antworten sind stets von der Aufgabe abhängig. Besonders gut geeignet sind technisch-wissenschaftliche Probleme wie Klimasimulationen, Untersuchungen über die Alterung von Kernwaffen und die Proteinmodellierung. Entsprechend sind die Kunden für technische Leistungs-Cluster meist Universitäten oder Militär- und Industrielabors.

Solche Systeme basieren fast immer auf dem Unix-Betriebssysten. Typischerweise benutzt man massenproduzierte Rechner mit Doppel-CPUs von AMD oder Intel, viel Speicher und einer mittelgroßen lokalen Platte. Als Cluster-Koordinationssoftware benutzen Anwender Open-Source-Pakete, meistens das bekannte und erprobte "Beowulf"-System, aber auch andere wie etwa das komplexere "Mosix".

Das derzeit weltgrößte Beowulf-System steht bei der Firma Locus Discovery in Pennsylvania, USA. Der für die numerische Genforschung eingesetzte Supercomputer arbeitet mit 1416 Prozessoren, 364 GB Hauptspeicher und 22 Terabyte Festplattenplatz.

Virtuelle ServerTrotz ihres unbestreitbaren Nutzens sind Cluster der Beowulf-Klasse Exoten. Die meisten Firmen müssen weder DNA analysieren noch Bomben bauen, sondern Alltagsaufgaben erledigen. Doch auch hier sind Leistungscluster erfolgreich im Einsatz, insbesondere für Internet-Dienste wie Web und FTP. Eine gute Methode ist in der Abbildung rechts illustriert. Hierbei werden die Anfragen aus dem Internet an einen "virtuellen Server" gestellt, der nach außen praktischerweise nur einen Namen und nur eine Internet-Adresse hat. Im virtuellen Server trifft die Anfrage zuerst auf einen als Lastverteiler (Loadbalancer) eingesetzten Rechner. Dieser leitet die Anfrage dann an eines der echten "Arbeitspferde" (oft als "Real-Server" bezeichnet) weiter. Dabei kann ein intelligenter Lastverteiler die Auswahl des zuständigen Real-Servers exakt auf die Art der Anfrage und die aktuelle Belastung der Real-Server abstimmen.

Dieses Konzept hat viele Vorteile. Bei steigendem Leistungsbedarf lassen sich neue Real-Server in den Cluster aufnehmen. Außerdem können einzelne Real-Server ausfallen oder zu Wartungszwecken vom Netz genommen werden, ohne dass der Gesamtverbund offline ginge. Last but not least sind virtuelle Server recht preiswert, was im knallharten Markt für Internet Service Provider (ISPs) überlebenswichtig ist.

Eine der bekannten Implementierungen des Konzepts ist das LVS-Paket ("Linux Virtual Server"), das durch Hersteller wie Red Hat als Produkt verpackt wird. Neben Web-Services werden auch viele andere Dienste über LVS angeboten, unter anderem Audiostreaming, Mail, Remote-Zugriff mit "ssh" und "telnet" und in Spezialfällen auch Datenbankabfragen.

Mit dem Lastverteiler alleine ist es nicht getan. Man braucht auch Monitoring-Software, die den Betriebszustand der Rechner erfasst, so dass bei Ausfall oder Überlast eines Rechners keine Anfragen mehr an diesen geleitet werden. Hierfür kommt im Open-Source-Bereich vor allem das "Heartbeat"-Paket zum Einsatz. Bei kommerziellen Cluster-Angeboten werden fast immer getunte Eigenlösungen der Hersteller benutzt. Alle diese Lösungen basieren intern auf einem "Herzschlag"-System, bei dem die Rechner untereinander periodisch kleine "Ich lebe noch - Du auch?"-Pakete austauschen. Das klingt zwar einfach, ist aber in der Praxis so vertrackt, dass manchmal alleine für den Herzschlag redundante Netzverbindungen installiert werden.

HerzklopfenDas Herzschlagsystem testet zwar das Funktionieren der Rechner und Netze, nicht jedoch das der Applikationen, auf die es dem Benutzer letztendlich ankommt. Daher braucht man ein zusätzliches Monitoring-System, das die Applikationen auf korrekten Betrieb hin überprüft. Dazu muss es regelmäßig echte Anfragen an die Applikation stellen, also zum Beispiel eine bestimmte Webseite oder einen Datensatz aus einer Datenbank anfordern. Bekannte Systeme für diesen Bereich sind unter anderem "Mon" und "Nanny".

Normalerweise müssen die Rechner auf einen gemeinsamen Datenbestand zugreifen. Falls sich die Daten selten ändern, kann es ausreichen, die Daten mittels Werkzeugen wie "rsync" oder "rdist" periodisch auf die lokalen Platten der Rechner zu kopieren. Die nächsten Stufen sind die Vernetzung mit dem "Network File System" (NFS) oder softwarebasierende Spiegelung mittels eines "Distributed Replicated Block Device" (DRBD). Auch der Einsatz von Spezialhardware kommt in Betracht, beispielsweise in Form eines SCSI-Gerätes, auf das parallel zugegriffen werden kann.

Doch der Wunschtraum der meisten Benutzer ist ein "Cluster-File-System": ein globales, Cluster-weites Dateisystem, in dem die Daten synchron und schnell von allen Rechnern gleichzeitig lesend und schreibend genutzt werden können. Dies ist technisch sehr schwierig, da jeder Rechner eine eigene Kopie der Daten in seinem Dateisystem-Cache vorhält und diese Kopien ständig aktualisiert werden müssen. Für diese Synchronisierungsaufgabe kann man einen "Distributed Lock Manager" (DLM) einsetzen. Hier offerieren die kommerziellen Cluster-Anbieter leistungsstarke Produkte.

Die Kosten für Rechnerausfälle sind bei bestimmten Anwendungen extrem hoch, doch hier schaffen Cluster Abhilfe: Richtig konfiguriert können sie in puncto Verfügbarkeit alle anderen Systeme ausstechen. Die Grundidee dabei ist, dass bei Ausfall eines Rechners ein anderer Rechner dessen Aufgaben übernimmt (Failover), so dass die Dienstleistung - zum Beispiel Online-Aktienhandel - nach außen weiterhin angeboten wird. Einen solchen Cluster bezeichnet man als "HA-Cluster" (HA = High Availability).

Dabei zählt nur die Gesamtverfügbarkeit, die typischerweise in der "Anzahl Neunen" angegeben wird (siehe Tabelle). Ein einzelner Unix- oder Windows-Server mit durchschnittlichem System-Management liegt grob in Klasse 2. Professionell gemanagte Einzel-Server, normale Windows- und Unix-Cluster sowie traditionelle Mainframes liegen in Klasse 3. Klasse 4 ist die Domäne der besten Mainframes und Unix-Cluster. Echte "Five Nines", also 99,999 Prozent, sind extrem selten. Sie werden aktuell nur von IBMs Parallel-Sysplex-Clustern sowie von Spezialhardware wie Compaqs (vormals Tandems) "Nonstop"-Systemen erreicht.

Dabei gelten auch geplante Ausfallzeiten als unerwünschte Zeiten, denn dem Kunden ist der Grund des Ausfalls weitgehend egal. Gerade hier haben HA-Cluster gegenüber Einzel-Servern den wichtigen Vorteil, dass man einzelne Knoten zu Wartungszwecken aus dem Cluster nehmen kann. Das macht viel aus, denn bei gut gemanagten Mainframes gibt es nach einer Studie von IBM zehnmal so viel "planned downtime" wie "unplanned Downtime".

In der Praxis ist eine hohe Verfügbarkeit mit erheblichem Aufwand verbunden. Ein HA-System darf keine einzelne Schwachstelle haben, bei deren Versagen das Gesamtsystem stoppen würde. Daher muss jeder mögliche "Single Point of Failure" untersucht und gegebenenfalls redundant ausgelegt werden. Um zum Beispiel einen virtuellen Server halbwegs HA-tauglich zu machen, müssen mindestens zwei Load-Balancer eingesetzt werden.

GeoclusterWie die tragischen Ereignisse im September gezeigt haben, ist bei wirklich unternehmenskritischen Systemen sogar auf geografischen Abstand zu achten. Solche Extrem-Cluster, bei denen zwischen den verbundenen Rechnern Distanzen von zehn bis 50 Kilometern bestehen, bezeichnet man als "Metrocluster", bei noch größeren Distanzen als "Geocluster". Der Aufbau solcher Systeme ist Domäne einer exklusiven Liga aus Profis, insbesondere HP/Compaq, IBM und SGI.

Die Erfahrungen aus dem Alltag haben gezeigt, dass selbst Großkunden mit Installation und Betrieb von Clustern überfordert sein können. Nur wer viel Geld und viele Experten zur Verfügung hat, sollte sich auf die Herausforderung einlassen. Bereits die Produktauswahl ist schwierig, da es keine brauchbaren Cluster-Benchmarks gibt. Der bekannte Benchmark TPC-C ist in seiner Cluster-Variante inzwischen "gehackt" und daher unbrauchbar: Man kann die TPC-C-Daten und Queries so geschickt verteilen, dass zwischen den Knoten praktisch keine Kommunikation mehr nötig ist. Von der brauchbaren SAP-SD-Cluster-Benchmark gibt es zu wenig aktuelle Ergebnisse. Daher müssen IT-Verantwortliche viel selbst testen und entscheiden, gleichgültig ob es um die Cluster-Software der Betriebssystem-Hersteller oder die der unabhängigen Anbieter (etwa Legato oder Veritas) geht. Allerdings gibt es hilfreiche Vergleichsstudien, unter anderem von den US-Unternehmensberatungen Aberdeen und D. H. Brown, die zum Teil kostenlos im Internet zur Verfügung stehen.

Failover-VerfahrenEin weiteres Problem bei Clustern ist die meistens sehr simple Failover-Logik. Wenn die Cluster-Management-Software einen fehlerhaften Knotenrechner erkennt, schaltet sie diesen sofort gewaltsam durch Netz- oder Stromunterbrecher ab. Dieses Verfahren, in der Cluster-Szene farbenfroh-respektlos als Stomith bezeichnet ("Shoot the other machine in the head"), ist die beste Garantie dafür, dass ein wildgewordener Knoten nicht die gemeinsamen Daten korrumpiert. Das reicht für Anwendungen wie den Apache-Webserver, die sich einfach über ein Skript neu starten lassen. Für komplexere Applikationen aber kann es bedeuten, dass sie an die besondere Spielart der Clustering-Software angepasst werden müssten. Deswegen liefern manche Hersteller, etwa Oracle mit der Datenbank "Oracle Parallel Server", ihre Produkte mit einem integrierten anwendungsspezifischen Cluster-Support aus.

Eine Möglichkeit, diesen Wildwuchs aus nicht kompatiblen Cluster-Lösungen zu begrenzen, bietet Sun mit dem Programmierstandard "Java 2 Enterprise Edition". In dieser kurz J2EE genannten Spezifikation sind die meisten benötigten Schnittstellen und Dienste enthalten, die man zur Programmierung von hochverfügbaren Systemen braucht. Dadurch müssen J2EE-Entwickler nicht immer wieder das Rad neu erfinden, wenn es um Failover, verteilte Transaktionen oder zuverlässiges Nachrichtenverschicken geht. Ein besonderer Vorteil der Standardisierung ist, dass sich J2EE-Applikationen auch im Alltag als ziemlich herstellerunabhängig erwiesen haben. So ist zum Beispiel eine Entwicklung auf Linux oder Windows und eine anschließende Produktionsumgebung auf Solaris kein Problem. Auch eine Migration zwischen den für J2EE nötigen Applikations-Servern wie "Bea Weblogic" und "IBM Websphere" ist relativ einfach möglich. Hier zeigt sich, dass die virtuelle Java-Maschine sehr gut als Basis für ein Cluster-Betriebssystem geeignet ist.

Allerdings sollten IT-Manager im Java-Bereich darauf achten, nicht jedem Hype hinterherzulaufen. Man braucht bei J2EE nicht immer die stark beworbene "Enterprise Java Beans"-Technologie (EJB) einzusetzen, denn die Vorteile von Applikations-Servern liegen oft im Detail. Sehr nützlich ist zum Beispiel das Failover von Web-Sessions oder der Cluster-weite Datenbankverbindungspool von Bea.

Zusammenfassend lässt sich sagen, dass das Angebot für Cluster deutlich attraktiver geworden ist. Wer Geld hat und große Cluster-Installationen braucht, findet professionelle Lösungen vor allem bei den großen Unix-Herstellern. Wer etwas abenteuerlustiger ist oder mehr auf die Kosten achten muss, sollte die aktuellen Linux-Lösungen testen, insbesondere LVS, GFS und SGIs Failsafe. Wer viel eigene HA-Software neu entwickeln muss, kommt an Java kaum noch vorbei.

*Henrik Klagges ist Managing Partner bei TNG Tech in München.

Hochverfügbarkeit: Die "Anzahl der Neunen"Verfügbarkeit / Gesamtausfall pro Jahr (inklusive Wartung) / Anzahl Neunen (Klassen)/ Beispielsystem

> 90 Prozent / über einen Monat / 1 / Jaguar E-Type V 12 Sportwagen

> 99 Prozent / etwas unter 4 Tagen / 2 / Windows 2000, Linux

>99,9 Prozent / etwas unter 9 Stunden / 3 / gut gemanagter NT-, Lunix- oder Unix-Cluster

>99,99 Prozent / eine knappe Stunde / 4 / Mainframe, Highend-Unix-Cluster

>99,999 Prozent / etwas über 5 Minuten / 5 / S/390 Sysplex, Telecom-Switches

>99,9999 Prozent / etwa eine halbe Minute / 6 / Flugzeugcomputer, Waffensysteme

Abb: Virtueller Server

Virtuelle Server werden vor allem für Internet-Dienste wie Web oder FTP installiert. Quelle Klagges