High Performance Cluster

High Performance Cluster sind mehr als eine Cloud.

High Performance Cluster dienen unterschiedlichen Anwendungen.

  • Web-Cluster stellen mehrfach redundante über Loadbalancer angesteuerte parallele Produktions-Stränge aus Web-Servern und Datenbank-Servern dar. Ziel ist hier die Anfragen aus dem Web massiv parallel zu bedienen und gleichzeitig eine hohe Redundanz zu haben um Ausfällen vorzubeugen und die Wartbarkeit zu vereinfachen.
  • Rechen-Cluster verteilen parallelisierbare Prozesse auf möglichst viele CPUs/GPUs und benötigen extrem schnelle Netzwerktechnik wie Infiniband um Speichersegmente im Cluster verteilen zu können. Ziel ist hier die geballte Rechenleistung. Redundanz spielt eine untergeordnete Rolle. 
  • Failover-Cluster dienen primär der Redundanz und bestehen aus einem aktiven und einem passiven Server. Diese gleichen in Echtzeit ihre Daten ab, damit im Fehlerfall der passive Server nahtlos die Rolle des aktiven Servers übernehmen kann.

 

High Performance Cluster (ver-)teilen Ressourcen. Ein kritisches Charakteristikum von allen Clustern ist das gemeinsame Nutzen von Ressourcen. Diese Ressourcen sind z.B. IP-Adressen, Daten in einer Datenbank, oder Dateisysteme mit Massendaten. All dies kann mit Open-Source Standard-Komponenten realisiert werden:

  • Gemeinsam genutzte IPs für z.B. für Loadbalancing von Netzwerk-Zugriffen kann der Linux-Kernel mit IPVS.
  • Replizierte Dateisysteme bietet DRBD
  • Datenbanken wie MySQL, Postgres, Oracle bringen alle Methoden zur Replikation mit.
  • Mit Pacemaker steht eine ausgereifte Steuersoftware zur Verfügung um die Verwaltung von diesen Ressourcen im Netzwerk zu steuern.

 

High Performance Cluster sind komplex. Oftmals wird die Komplexität und die Fehler-Anfälligkeit von Clustern unterschätzt. Das Verteilen von Ressourcen setzt eine Verwaltung der Ressourcen voraus, welche in Echtzeit funktionieren muss. Diese Verwaltung kann nur funktionieren, wenn zu jeder Zeit alle Komponenten des Clusters miteinander kommunizieren können. Das verlässliche Funktionieren aller Netzwerk-Verbindungen ist also kritisch für die Funktion des Clusters, obwohl alle Server natürlich prinzipiell redundant sind. So müssen also alle Netzwerk-Komponenten ebenfalls redundant ausgelegt sein, angefangen bei den Netzwerk-Kabeln zwischen Server und Switch bis hin zu den Switchen, Routern und Firewalls. Die sonst übliche sternförmige Netzwerk-Topologie wird nun zu einer Struktur miteinander verbundener Ringe. Ringe sind aber bei Ethernet nicht erlaubt. Ohne steuernden Eingriff über Spanning-Tree würden die Ringe sofort unter massiven Paket-Stürmen zusammenbrechen. Ich habe schon mal ein ganzes Rechenzentrum offline geschickt durch einen versehentlich erzeugten Netzwerk-Ring in einem virtuellen Switch einer VM.

High Performance Cluster brauchen Erfahrung. Wir bauen seit mehr als 10 Jahren Cluster für unterschiedliche Anwendungen. Nach einer anfänglichen Euphorie hat sich recht bald Ernüchterung breit gemacht. Wir haben gelernt die Komplexität von Clustern zu respektieren und nichts zu bauen, was auch nur einen Schnörkel zu viel hat. Manch kritischen Fail-Over-Prozess haben wir wieder in die Hand der Admins gelegt, da die Automatismen zu oft nicht zuverlässig genug waren. Unser Credo ist nun, lieber eine kleine Downtime als zwei Datenbanken mit inkonsistenten Daten-Ständen wieder zusammen fummeln zu müssen und dafür sehr lange offline zu sein.

High Performance Cluster sind unersetzlich. Unsere Kunden haben so gut wie keine Downtimes. Wartungsarbeiten können durch die hohe Redundanz auf einem Teilsystem getestet werden und nach erfolgreichem Lauf einige Tage später kann der Rest des Clusters auf den gleichen Stand gebracht werden. Steigt der Rechenzeit-Bedarf werden einfach mehr Server in das Cluster integriert.

High Performance Cluster sind keine Cloud. Oder anders formuliert: Die wenigsten Clouds basieren auf High Performance Clustern. Zwar sind Clouds auch Cluster von Servern welche Ressourcen teilen, aber die eingesetzte Technologie ist deutlich primitiver, obwohl sie deutlich anders beworben wird. Wird z.B. eine VM in einer Cloud betrieben so wird die Partition dieser VM von einem NFS-Server als ein File zur Verfügung gestellt. Somit entsteht ein gewaltiger Overhead beim Zugriff auf die eigentliche Festplatte. In einem High Performance Cluster können auch VMs gehostet werden, wie z.B. bei der inqbus-Hosting. Dort besitzt jede VM auf einem unserer CPU-Knoten eine über Infiniband angebundene Partition auf einem Storage-Knoten, der sich in Echtzeit mit einem anderen Storage-Knoten über Infiniband repliziert. Ihre wahre Power spielen High Performance Cluster aber erst dann aus, wenn die Cluster-Knoten bare metal betrieben werden.