Fachartikel

Container 2.0: Auf dem Weg von stateless zu stateful

Durch klar definierte Laufzeitumgebungen weisen Container eine hohe Portabilität auf und sind unabhängig von darunterliegenden Systemen. Noch sind sie überwiegend stateless und so im Aufbau und Betrieb relativ unkompliziert. Es kündigt sich jedoch eine Trendwende an: Unternehmen möchten verstärkt Anwendungen in Containern nutzen, die statusbehaftet, also stateful, sind. Einsatzszenarien sind etwa Big-Data-Verfahren oder ein einfacheres Verschieben von Anwendungen in die Public Cloud. Der Fachartikel schildert die Herausforderungen.
Container gibt es in allen Geschmacksrichtungen. Statusbehaftete Container werden immer verbreiteter.
Im Gegensatz zu einer virtuellen Maschine sind Container komplett unabhängig von darunterliegenden Systemen. Ihre Vorteile beziehen sie daraus, dass sie nicht zustandsbehaftet – also stateless – sind. Sie sind ideal für den Einsatz von Microservices. Diese kleinen Dienste übernehmen in der Regel nur ein bis zwei Aufgaben und sind daher sehr überschaubar. Mit ein paar Zeilen Code in einen Container verpackt, sind sie schnell deployed. Stateless-Container lassen sich durch vorgefertigte Images in kürzester Zeit neu erstellen oder wegwerfen. Sie sind immutable und die DevOps-Teams müssen sich keine Gedanken um die darin befindlichen Daten machen.

Sie lassen sich beliebig zwischen verschiedenen Cloud-Umgebungen, Bare-Metal-Servern oder Rechenzentren verschieben – im Hinblick auf Hybrid- und Multi-Cloud-Szenarien ein ideales Gesamtpaket. Doch genau dieses hohe Bereitstellungstempo sowie den geringen Overhead für benötigte Ressourcen und Management, wollen immer mehr IT-Abteilungen auch für Stateful-Container. Für diese hat vor einem Jahr Florian Leibert, CEO von Mesosphere, den Begriff "Container 2.0" geprägt und das Thema in den Fokus der Container-Community gerückt.
Logische Weiterentwicklung des Containereinsatzes
Der Einsatz von Container 2.0 ist in der Tat ein logischer Schluss. Im Grunde hat Docker die Möglichkeit, persistente Daten abzulegen, bereits von Anfang an mitgebracht. Seitdem haben aber vor allem die pflegeleichteren Container 1.0 das Geschehen dominiert. Allerdings ist es in der heutigen IT-Landschaft so, dass die ein oder andere Anwendung von längerfristig vorgehaltenen Daten abhängig ist. So sind etwa Datenbanken per se stateful. Diese in Container zu packen, ist also nicht ganz einfach.

Viele der bekannten Container-Orchestrierungs-Engines haben nach und nach Features für das Ablegen von persistenten Daten in einen Storage eingeführt. Kubernetes veröffentlichte mit Version 1.5 die StatefulSets (vorher PetSets) zum Verwalten von zustandsbehafteten containerisierten Anwendungen. Mesosphere bietet Funktionen für persistenten Storage seit Marathon Version 1.0. Im Kern sollte es mit Container 2.0 möglich sein, Datenbanken zusätzlich mit in einen Docker-Container aufzunehmen. Dieses Szenario ist speziell für Multi-Cloud-Umgebungen interessant, da auf diese Weise Datenbanken schneller bereitstehen und es einfacher ist, die darin befindlichen Daten in verschiedene Speicher zu verteilen und schneller zu skalieren.

Hürde Skalierbarkeit
Die Skalierbarkeit von Stateful-Containern ist nicht ganz trivial. Bezogen auf das Beispiel der Datenbanken: Sind gerade erst neue Daten eingepflegt, ist es im Vergleich zum Handling der Container 1.0 nicht möglich, diese einfach zu löschen und neu bereitzustellen. DevOps-Teams müssen genau hinschauen, wie die Container aufgebaut und geclustert sind. Da es sich bei einem Großteil von Stateful-Containern um Datenbanken oder Message Queues handelt, müssen diese oft längerfristig verfügbar sein. Wichtige Daten sollten nicht verloren gehen. Es ist daher sinnvoll, Datenbanken hochverfügbar bereitzustellen, etwa MongoDB als Replica Set oder MySQL als Galera Cluster.

Darüber hinaus sind Mechanismen zu berücksichtigen, die auslösen, wenn etwas mit der Datenbank passiert. Überprüfen etwa Container Health Checks bestimmte TCP- oder UDP-Ports? Ist dies der Fall und der Port nicht mehr erreichbar, lösen sie eine Neuskalierung aus. Ein Beispiel: MySQL lauscht auf dem Port 3306. Fällt die Datenbank auf diesem Port aus, bekommt der Health Check keine Antwort zurück. Dann erfolgt die Löschung des Containers. Anschließend beginnt der Aufbau eines neuen Containers, der die MySQL-Datenbank wieder startet. Listing 1 stellt ein detaillierteres Beispiel für eine Stateful-Datenbank auf einem Prometheus-Server dar. Prometheus ist hier stateful mit Health Check auf Port 9090 bereitgestellt. Fällt dieser Server auf dem Port aus, wird er neu aufgebaut. Die Daten liegen persistent auf einem NFS-Server.

In Docker-Container verpackte Stateful-Anwendungen sind nur eine Möglichkeit der Skalierung. Derzeit setzt sich die Community unter anderem mit Skalierung im Storage-Bereich auseinander. Dort ist die Entwicklung aktuell stark im Fluss und noch hat sich kein Best Practice herauskristallisiert. Dieses wird aber sicherlich in naher Zukunft der Fall sein, denn Stateless-Container eignen sich ebenso für Big-Data-Szenarien. Für diese sind verteilte Storages besonders relevant. Ein Beispiel wäre in diesem Szenario der Einsatz von Elasticsearch zum Verarbeiten großer Datenmengen. Diese Anwendung ist heute bereits ebenfalls als Stateful-Container ausführbar. In Listing 2 finden Sie ein Beispiel für einen containerisierten Elasticsearch-Cluster.

Seite 1: Logische Weiterentwicklung des Containereinsatzes
Seite 2: Container-Orchestrierung wird kritischer


Seite 1 von 2 Nächste Seite >>
11.10.2017/ln/Michael Vogeler, Systemadministrator im Bereich Application and Database Services bei Nexinto.

Nachrichten

T-Systems bietet managed Azure-Hybrid-Cloud [12.06.2018]

T-Systems bietet Unternehmen mit DSI Azure Stack jetzt eine durchgängige, zur Hybrid Cloud erweiterbare Lösung und übernimmt dabei Beratung, Bereitstellung, Betrieb und begleitende Managed Services. [mehr]

Azure-Cloud für Industriemaschinen [23.04.2018]

Microsoft hat auf der Hannover Messe neue Dienste für industrielle IoT-Anwendungen vorgestellt: Microsoft plant Azure IoT Hub und Device Management auf Azure Stack verfügbar zu machen. Damit können Unternehmen zukünftig IIoT-Projekte nun auch komplett im eigenen Rechenzentrum betreiben, wenn sie ihre IoT-Geräte lokal verwalten möchten. [mehr]

Tipps & Tools

E-Mail im Augenwinkel behalten [22.06.2018]

Nicht immer bleibt im Arbeitsalltag genug Zeit, um den E-Mail-Client im Auge zu behalten. Um mit wenig Aufwand trotzdem für Überblick über den Posteingang zu sorgen, können Sie das kostenfreie Tool 'POP Peeper' ausprobieren. Nach der Installation findet sich ein Symbol in der Windows-Taskleiste, das jederzeit über den Eingang neuer E-Mails Auskunft gibt. Somit muss weder ein E-Mail-Client noch der Browser für die Webmail geöffnet bleiben. [mehr]

Offline-Nutzung von Gmail [21.06.2018]

Die Verwaltung von E-Mails am Desktop ist aufgrund der festen Internetverbindung unkompliziert. Allerdings sind mobile Arbeitnehmer am Notebook nicht immer an die Außenwelt angebunden und freuen sich umso mehr über einen Offline-Modus der E-Mail-Plattform. Mit einem kleinen Trick können auch Gmail-Nutzer ihre Nachrichten offline bearbeiten, zumindest was die Daten aus den vergangenen 90 Tagen betrifft. [mehr]

Buchbesprechung

Anzeigen