Über unsMediaKontaktImpressum
Michael Hausenblas 01. Dezember 2015

Dynamische Partitionierung von Rechenzentren

Die Anforderungen an Software in großen und mittleren Unternehmen wachsen stetig. Funktionaler und schneller verfügbar soll sie sein – eine immer größere Anzahl Benutzer soll sie unterstützen. Einerseits haben wir es da mit Webservern, Applikationsservern und Datenbanken zu tun, die gemeinsam Produkte und Dienstleistungen bieten. Andererseits hat mit Big Data vermehrt der Wunsch Einzug gehalten, besser zu verstehen, wie die angebotenen Produkte oder Dienstleistungen genau verwendet werden.

Kauft jemand, der eine bestimmte Teesorte gekauft hat, typischerweise auch das passende Zubehör? Wann und wie lange ist eine bestimmte Nutzergruppe auf meiner Webseite? Welche Reihenfolge der Seitenzugriffe führt zum maximalen Umsatz? Um die entsprechenden Antworten rasch zu finden, greifen die Fachabteilungen vermehrt auf Open Source-Lösungen wie Apache Spark zurück.

Dabei gibt es nur ein Problem: bisher waren wir gezwungen, die beiden Bereiche – Webserver, Applikationsserver und Datenbanken einerseits und Big Data-Technologien andererseits – getrennt zu behandeln. Wir haben ein paar Maschinen – typischerweise von einem Administratorenteam betreut – für die Webseite eingerichtet und dann ein paar mehr Maschinen für die Big Data-Technologie de jour. Dies nennt sich statische Partitionierung und bedeutet, dass man das Rechenzentrum physisch für verschiedene Aufgaben plant und trennt. Die Nachteile sind offensichtlich:

  • Wenn sich Anforderungen ändern, dauert es relativ lange, bis sie umgesetzt sind. Ein Beispiel: Wir brauchen fünf zusätzliche Rechner ab 20:00 Uhr für den wichtigen Machine Learning-Job? Es wird schwierig werden, diese Maschinen zeitgerecht manuell aufzusetzen.
  • Die durchschnittliche Gesamtauslastung von Rechenzentren liegt industrieweit bei etwas über 10 Prozent. 90 Prozent der Kapazitäten sind ungenutzt. Warum? Es wurde, was ja auch eine Industriepraxis ist, auf die maximale Last dimensioniert. Diese tritt vielleicht einmal pro Woche oder einmal im Jahr auf. Natürlich muss aber für alles bezahlt werden: vom Strom bis zu Administratoren, die kaputte Festplatten austauschen oder hängengebliebene Applikationen neu starten.

Wäre es nicht wunderbar, wenn wir die Rechnerressourcen frei und nach Belieben vergeben könnten? Wenn wir uns nicht mehr persönlich darum kümmern müssten, auf welchem Rechner im Rechenzentrum eine gewissen Instanz von nginx oder dem Java-Applikationsserver läuft?

Hier nun die gute Nachricht: beides ist machbar. Das Open Source-Projekt Apache Mesos macht es möglich. Es wurde 2009 im Rahmen einer Doktorarbeit an der UC Berkeley entwickelt und ist seit 2013 ein Top Level-Projekt der Apache Software Foundation. Mesos abstrahiert die Ressourcen der Maschinen in einem Rechenzentrum, wie z. B. CPU oder Hauptspeicher, und stellt diese den sogenannten Mesos Frameworks zur Verfügung.

Zum Beispiel gibt es das Marathon-Framework. Es verhält sich im Prinzip wie SysV init und kann beliebige Applikationen starten - gleich ob JVM-basiert, ein Shellskript oder einen Docker-Container im Rechenzentrum. Geht etwas schief, kann auch der Restart automatisiert erfolgen. Dann ist da noch Chronos, ein verteiltes "chron", das für wiederkehrende Batch-Jobs prima geeignet ist. Auch für viele der etablierten Big Data-Technologien wie Apache Spark, Apache Storm, Apache Kafka, Elasticsearch, HDFS, Cassandra, ArangoDB und viele andere gibt es entsprechende Mesos-Frameworks.

Zusammen ermöglichen Apache Mesos und seine Frameworks sowohl die Möglichkeit, die Rechnerkapazitäten dynamisch zu allozieren, als auch die Auslastung in die hohen 80 bis 90 Prozent zu treiben.

Doch auch wem Mesos zu viel ist, dem kann geholfen werden: vor einem Jahr hat Google ein Open Source-Projekt namens Kubernetes auf den Markt geworfen. Dieses ist auf containerized workloads fokussiert, geht also davon aus, dass alle Applikationen schon als Docker Image vorliegen. Bei neuen Vorhaben ist das auch relativ leicht machbar, bei Bestehenden kann es jedoch Probleme bereiten. Ansonsten ist Kubernetes ebenso wie Mesos in der Lage, die dynamische Partitionierung eines Rechenzentrums zu ermöglichen, allerdings in einem kleinerem Rahmen: Kubernetes-Netzwerke können zur Zeit nicht wirklich mehr als 100 Maschinen umfassen. Mesos hingegen ist bei Apple, Twitter, Airbnb und vielen anderen Firmen mit tausenden Maschinen im Einsatz.

Abschließend noch ein Tipp: Wer Apache Mesos und seine Frameworks und auch Kubernetes selbst ausprobieren möchte, kann sich das Datacenter Operating System (DCOS) ansehen. Es bietet eine unlimitierte Version des DCOS auf AWS an, welche keine Kosten – abgesehen von den darunter liegenden EC2-Instanzen – verursacht und alles oben genannte erlaubt.

Viel Spaß beim Ausprobieren! Ich stehe gerne für Fragen rund um Apache Mesos, Kubernetes, Docker und Mesos Frameworks zur Verfügung.

Autor

Michael Hausenblas

Michael Hausenblas ist Developer Advocate bei Mesosphere. Er hilft DevOps, verteilte Applikationen zu entwickeln und zu betreiben. Mesosphere ist ein weltweit tätiges Softwareunternehmen.
>> Weiterlesen
botMessage_toctoc_comments_9210