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

Wachsende Workloads, vereinfachte Verwaltung [19.02.2018]

Mit dem 'VxBlock 1000' baut Dell EMC sein Portfolio an konvergenten Infrastruktursystemen weiter aus. Die Neuvorstellung unterstützt Workloads aller Art und soll mir einer überarbeiteten Architektur den Platzbedarf im Rechenzentrum um bis zu 60 Prozent reduzieren. [mehr]

Citrix kauft Traffic-Steuerung zu [15.02.2018]

Citrix ergänzt sein Netzwerkportfolio um eine intelligente Traffic-Steuerung für Applikationen in Multi-Cloud-Umgebungen: Das Unternehmen hat den datengetriebenen Echtzeit-Service Cedexis gekauft, der den Datenfluss über Public Clouds, Rechenzentren, Content Delivery Networks und Internetdienstleister hinweg dynamisch optimiert. [mehr]

Gib mir fünf! [23.01.2018]

Tipps & Tools

Sitzplatz-Check für die Dienstreise [21.02.2018]

Immer wieder passiert es auf Dienstreisen mit dem Flugzeug, dass man zwar einen schönen Fensterplatz bucht, die Sitzreihe aber genau an dieser Stelle kein Fenster hat. Da jedes Flugzeug anders gebaut ist, bringen selbst schlechte Erfahrungen für eine zukünftige Buchung wenig. Daher sollten Sie vor einer Dienstreise die Webseite 'seatguru.com' konsultieren. Hier sehen Sie auf einen Blick sehen, welche Plätze einen angenehmen Flug versprechen und welche unbedingt zu meiden sind. [mehr]

Download der Woche: Franz [13.02.2018]

Die Vielzahl an Kommunikationsdiensten bringt zwar ein Plus an Flexibilität, führt aber selten zu mehr Übersichtlichkeit. Zumindest auf dem Desktopcomputer vereint 'Franz' die gängigen Messenger nun unter einer Haube. Die Anwendung bündelt WhatsApp, den Facebook Messenger oder Skype in einem Tool, sodass sich vom PC aus bequem alle Kanäle bedienen lassen. Dabei können Sie pro Dienst auswählen, ob eingehenden Nachrichten durch eine Meldung in der Taskleiste oder Töne auf sich aufmerksam machen dürfen. [mehr]

Buchbesprechung

Software Defined Networking

von Konstantin Agouros

Anzeigen