Alles besser: Performance, Ressourcenmanagement, Containerisierung

Apache Mesos 1.5 bringt Unterstützung für das Container Storage Interface

Dominik Mohilo

© Apache Software Foundation

Das Orchestrierungs-Tool Mesos, das unter dem Dach der Apache Software Foundation entwickelt wird, hat einen neuen Meilenstein erreicht. Apache Mesos 1.5 kommt mit der Unterstützung für das Container Storage Interface (CSI) und einer verbesserten Performanz. Außerdem wurde das Ressourcenmanagement überarbeitet, das sich nun flexibler präsentiert.

Apache Mesos 1.5 – das ist neu

Container Storage Interface (CSI)

Was dabei herauskommt, wenn sich Enwtwickler aus den Communitys von Docker, Kubernetes, Cloud Foundry und Mesos zusammentun, sieht man am Container Storage Interface (CSI). Die Spezifikation definiert einen Satz APIs für sämtliche Interaktionen zwischen Storage-Anbietern und den jeweiligen Orchestrierungsplattformen für Container. Ziel des CSI? Nicht weniger als es Storage-Anbietern möglich zu machen, mit nur einem einzigen Plug-in alle Plattformen für die Containerorchestrierung anzusprechen.

Für die Nutzer von Mesos speziell bedeutet die Unterstützung für das Container Storage Interface, dass sie zukünftig mit einem konsistenten API sämtliche Storage-Systeme nutzen können. Durch das Plug-in-Modell des CSI ist Mesos selbst nicht mehr fest an die Releases der jeweiligen Storage-Systeme gebunden, die Integration dieser wird also nachhaltiger und einfacher zu verwalten.

Die Architektur von Mesos in Verbindung mit dem CSI / Quelle: Mesos Blog

Weitere Informationen zur Unterstützung des Container Storage Interfaces in Apache Mesos gibt es in der Dokumentation des Orchestrierungs-Tools. Aber Vorsicht! Dieses Feature ist noch experimentell und sollte bis auf Weiteres nicht in der Produktion eingesetzt werden.

Verbesserung der Performance

Bei Apache Mesos 1.5 stand auch die Verbesserung der Performanz und allgemein der Geschwindigkeit im Fokus der Entwickler. Besonders im Bereich Master Failover und beim Operator State API (v1) wurde an den Schrauben gedreht. Für ersteres konnte laut eigenen Angaben die Time-to-Completion in Sachen Durchsatz um bis zu 600 Prozent verbessert werden. Dies wirkte sich logischerweise auch auf die generelle Time-to-Completion aus, die um bis zu 85 Prozent verringert werden konnte.

Im Operator State Query API (v1) wird ab Mesos 1.5 auf unnötige Copy Eliminations verzichtet, wodurch etwa der protobuf GetState-Call im Vergleich zur bisherigen Version des APIs um bis zu 36 Prozent schneller abgewickelt wird, die Performance des JSON GetState-Calls ist sogar um das Vierfache schneller.

UX für Operators

Wer in Mesos vor Version 1.5 die Konfiguration eines Agents ändern wollte, war mit einem großen Problem konfrontiert. Es war schlicht nicht möglich irgendeine Einstellung zu ändern, ohne sämtliche Tasks, die auf dem Agent liefen, zu killen und ihn dann mit neuer ID neu zu starten. Diese Fehlermeldung konnte einem den Tag ziemlich vermiesen:

EXIT with status 1: Failed to perform recovery: Incompatible agent info detected.
------------------------------------------------------------
[...]
------------------------------------------------------------
To remedy this do as follows:
Step 1: rm -f /path/to/work_dir/meta/slaves/latest
    This ensures agent doesn't recover old live executors.
Step 2: Restart the agent.

Ab Mesos 1.5 können Operators nun eine neue Flag in der Kommandozeile nutzen, um einzustellen, welche Arten von Operationen auf Agents erlaubt sein sollen und welche zu Fehlern führen: --reconfiguration_policy. Wird der Wert der Flag mit additive gesetzt, können Änderungen am Agent durchgeführt werden, die die Anzahl von Ressourcen erhöhen. Das gilt auch für Änderungen, die zusätzliche Attribute und Fault-Domains hinzufügen. Zukünftig sollen schließlich sämtliche Änderungen zulässig gemacht werden können, dann mit der Flag --reconfiguration_policy=any.

Weitere Änderungen

In Sachen Ressourcenmanagement wird von Mesos nun sichergestellt, dass jede Rolle ihre Quota erhält und diese nicht überschreitet. In vorherigen Versionen konnten Rollen beim Quota-System Probleme verursachen, indem sie Reservierungen anhäuften, die sie dann nicht nutzten – das wird nun verhindert. Auch der Bug, bei dem Rollen ohne Quota ihre Reservierungen nicht erhielten, wurde gefixt.

Die Windows-Unterstützung von Mesos wurde mit dem Update ebenfalls überarbeitet. So können Ressourcen-Limits auf dem OS-Level erzwungen werden, wenn man Tasks mit dem Mesos Containerizer ausführt und auch der Mesos Fetcher wurde auf Windows portiert, inklusive Support für das automatische Downloaden über TLS und Entpacken von Zip-Dateien. Der Mesos-Agent muss nun auch nicht länger als Administrator ausgeführt werden, da Symlinks als normaler User erstellt werden können.

Mesos 1.5 bringt zudem die Unterstützung für die Container Image Garbage Collection und ein neues Operator API für das Starten und Verwalten einer neuen Primitive namens „Standalone Container“. Ein Standalone Container ist nichts anderes als ein normaler Container, der durch ein Framework auf dem Mesos-Agenten gestartet wird. Einziger Unterschied ist, dass der Standalone Container direkt vom Operator auf dem Mesos-Agenten gesartet wird. Diese Container nutzen den Mesos Executer daher nicht und sind limitierter als gewöhnliche Container.

Lesen Sie auch: Eine Einführung in Apache Mesos: Schritt für Schritt in die Cloud

Zu guter Letzt wurde auch ein gRPC Client Wrapper in Mesos 1.5 integriert, da der RPC-Mechanismus als Alternative zum REST API gerade im Cloud-Bereich immer wichtiger wird. Der Client Wrapper ist im libprocess angesiedelt und standardmäßig deaktiviert. Dies ist der erste Schritt gRPC nativ in Mesos zu integrieren.

Weitere Informationen und Details zu den einzelnen Änderungen gibt es auf dem Blog von Apache Mesos und der Webseite des Projektes.

Hintergrund

Mesos wurde vom RAD Lab der University of California entwickelt und das erste Mal 2009 veröffentlicht. 2011 war Mesos bereits deutlich fortgeschritten und wurde von Twitter adaptiert. Mittlerweile setzen auch Airbnb, Apple und viele weitere auf Mesos und betreiben damit Cluster mit zehntausenden Rechnern. Seit 2013 ist Mesos ein Top-Level-Projekt der Apache Software Foundation.

Die Kernaufgabe von Apache Mesos ist das Scheduling von Containern im Cluster. Mesos führt die Container dabei auf den Cloud-Knoten zuverlässig und ressourcenschonend aus. Rescheduling erfolgt bei Bedarf, z. B. beim Ausfall einer Ressource oder wenn alternative, passendere Ressourcen frei werden. Dann wird die Ausführung eines Containers auf eine andere Ressource verlagert.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.