Johannes Unterstein Mesosphere

DC/OS ist mehr als Mesos und Marathon. Es ist ein Bündel von mehr als dreißig Open-Source-Projekten mit einer gemeinsamen Distribution, Roadmap, Dokumentation, Securitykonzept, Benutzeroberfläche, Design und Tutorials.

In Zeiten von Docker, Big Data und Microservices wird es immer wichtiger, verteilte Anwendung sinnvoll und dynamisch auf Cluster verteilen zu können und dabei trotzdem noch den Überblick zu behalten. Daher werden Cluster-Managementsysteme wie Apache Mesos und DC/OS immer wichtiger. Dabei geht es nicht nur um die Orchestrierung von Containern, sondern auch um die Verwaltung von persistenten Daten, die fehlertolerante Auslegung der Anwendungslandschaft und die optimale Auslastung der Ressourcen im Cluster.

Schaut man sich die Ressourcenauslastung vieler aktueller Cluster an, stellt man mit Schrecken fest, dass diese sich häufig im Bereich von zehn bis fünfzehn Prozent befindet. Das ist nicht verwunderlich, da viele Anwendungen darauf ausgelegt sind, auf ganz bestimmten Knoten des Clusters zu laufen. Und natürlich müssen auch Lastspitzen abgedeckt werden. Da meist nur eine Anwendung pro Knoten läuft und ihn dadurch charakterisiert, spricht man auch von einer statischen Partitionierung des Clusters. Ein dynamisches Verteilen freier Ressourcen, auch wenn Knoten ausfallen, findet nur in seltenen Fällen statt. Häufig kann man beobachten, dass bestimmte Anwendungen Lastspitzen zu einer Tageszeit haben und andere Anwendungen wiederum zu einer anderen. Da aber beide Anwendungen separat betrachtet und freie Ressourcen nicht dynamisch verteilt werden können, müssen wir beide Anwendungen separat bezüglich ihrer Lastspitzen optimieren.

An genau diesem Punkt kommen Mesos und DC/OS ins Spiel. DC/OS, das Datacenter Operating System, ist eine Plattform für den Betrieb von Microservices, traditionellen Datenbanken sowie Big- und Fast-Data-Anwendungen. Es baut auf Mesos auf, das genutzt wird, um beispielsweise Twitter oder Apple Siri zu betreiben und dynamisch skalieren zu können (Abb. 1).

Mesos: Abstraktion weg vom Cluster

Mesos abstrahiert den Fakt, dass man mit einem Cluster arbeitet, und lässt es sich anfühlen, als würde man mit einem einzigen Server interagieren. Das Ziel dabei ist es, die im Cluster verfügbaren Ressourcen auf alle Anwendungen zu verteilen und so dynamisch auf Anforderungen reagieren zu können. Auch die Auslastung der Knoten lässt sich so erhöhen.

Abb. 1: Ressourcenauslastung traditionell vs. DC/OS

Mesos implementiert eine Scheduling-Architektur auf zwei Ebenen. Es verfolgt das Ziel, freie Ressourcen, wie CPU, Arbeitsspeicher (Memory) oder Festplattenspeicher (Disk), fair den verschiedenen Schedulern anzubieten, Anwendungen auf diesen Angeboten zu starten und den Zustand dieser Anwendungen zu überwachen und zu berichten. Mesos selbst besteht dabei aus zwei Arten von Knoten: Mesos Master und Mesos Agents. Die Mesos Master verwalten den Zustand des Clusters und sind rein als Managementknoten tätig, wohingegen Mesos Agents rein für die Ausführung von Anwendungen zuständig sind. Mesos Master sollten hochverfügbar ausgelegt sein. Hierbei wird der führende Master-Knoten über ein ZooKeeper Quorum bestimmt. Die anderen Master-Knoten laufen passiv. Im Fall eines Ausfalls wird ein neuer Master als der führende gewählt.

Diese Aufteilung zwischen Verteilung der Ressourcen und Entscheidung über das Scheduling ermöglicht große Flexibilität beim Betrieb von Anwendungen. Diese erlaubt es, unterschiedliche Anwendungen auf Mesos zu betreiben, da das Verhalten in bestimmten Szenarien sehr unterschiedlich sein kann. Der Scheduler entscheidet dabei nicht nur, ob mit einem Angebot eine Instanz einer Anwendung gestartet werden soll. Er wird auch informiert, wenn eine Instanz beendet wird, fehlschlägt oder unerreichbar ist. Als Beispiel für solche Scheduler seien an dieser Stelle Apache Myriad (Hadoop), Apache Spark, Apache Flink, Apache Cassandra, Apache Kafka oder Marathon genannt.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 6.17 - "Continuous Delivery"

Alle Infos zum Heft
579796481Java in Containern
X
- Gib Deinen Standort ein -
- or -