Analyse und Integration von Storage-Clustern in elastische Container Plattformen

10 Jul 2017 , first release: 04 Oct 2016 ChrisDag / flickr.com, Lizenz: CC BY 2.0

Meta

Thesis

Cloud Computing ist häufig durch nicht-standardisierte, herstellerspezifische Schnittstellen und Vendor Lock-in gekennzeichnet. Der Einsatz von elastischen Container Plattformen (wie Kubernetes, Apache Mesos, Docker Swarm, Nomad, etc.) kann Vendor Lock-In reduzieren. Elastische Container Plattformen können auf Maschinen von verschiedenen Cloud Service Providern (z.B. AWS, GCE, Azure) ausgebracht werden und ermöglichen eine Migration von Workloads zwischen Cloud-Anbietern. Eine Realisierung dieses Ansatzes wurde bereits teilweise durch die Entwicklung eines Cluster-Deployers für Kubernetes auf Amazon AWS und OpenStack umgesetzt. Aktuell können zustandslose Applikationen providerunabhängig bereitgestellt werden. Mit einem ergänzenden Storage-Cluster sollen nun auch zustandsbehaftete Applikationen unterstützt werden.

In dieser Masterarbeit sollen dafür existierende Open Source Storage-Cluster Lösungen analysiert, integriert und hinsichtlich Migrierbarkeit evaluiert werden.

Hierzu müssen im Detail folgende Teilaufgaben bearbeitet und dokumentiert (Masterarbeit) werden:

Teilaufgaben

Hinweis: Sollten sich während der Bearbeitung dieser Arbeit einzelne Aspekte als schwer realisierbar erweisen, kann die Aufgabenstellung - nach plausiblem Nachweis der Schwierigkeit - angepasst werden.

Analyse von bestehenden Storage-Cluster Lösungen

Aktuell gibt es mehre Storage-Cluster-Produkte die potenziell geeignet sind (eine entsprechende Liste wird zur Verfügung gestellt und bildet den Ausgangspunkt der Analyse).

  • Diese sollen auf ihre speziellen Besonderheiten untersucht, vergleichend analysiert und hinsichtlich ihrer Integrationseignung für elastische Container Plattformen beurteilt werden.
  • Die Kriterien bei der vergleichenden Analyse sollen in Absprache selbstständig erarbeitet werden.
  • Bei der vergleichenden Analyse sollen mindestens die drei geeignetsten Storage-Cluster-Lösungen sowie die Cluster-Software Kubernetes und Docker’s SwarmMode berücksichtigt werden. Die vergleichende Analyse sollen mögliche Umsetzungsmöglichkeiten betrachten, insbesondere die
    • containerisierte Bereitstellung des Storage-Clusters innerhalb eines Clusters,
    • die separate, “native” Storage-Software-Installation in Kombination mit Container-Cluster-Plug-Ins (2.1) oder Docker-Plug-Ins (2.2)

Automatisches Bereitstellen von Storage-Cluster Lösungen (Integration)

Aktuell ist ein Deployer für ein Kubernetes Cluster vorhanden und für andere Plattformen, wie beispielweise Apache Mesos und Docker Swarm, geplant. Der bestehende Deployer soll um eine Storage-Komponente ergänzt werden.

  • Zunächst soll GlusterFS in einer containerisierten Version auf dem vorhandenen Kubernetes Cluster installiert werden.
  • Das System muss skalierbar sein.
  • Es soll ein Storage-Cluster-Deployer für drei Storage-Cluster (wie bspw. GlusterFS, Ceph oder Flocker) prototypisch implementiert werden. Die Storage-Cluster sind entsprechend der vorhergegangen Analyse auszuwählen.
  • Die Architektur des Storage-Cluster-Deployer soll so gestaltet und dokumentiert werden, dass andere Storage-Systeme nachträglich ergänzt werden können.
  • Um den Storage-Cluster zu beschreiben soll das JSON-Format verwendet werden. Eine starke Anlehnung an die vorhandene Deployer-Umsetzung ist gewünscht.
  • Als Programmiersprache ist idealerweise Ruby zu verwenden. Wird sich gegen Ruby entschieden, ist die Sprachwahl gesondert zu begründen und die Vorteile entsprechend nachvollziehbar aufzuführen.
  • Der Storage-Deployer ist so zu entwickeln, dass er den Gem­-Konventionen entspricht, da die Software auf RubyGems.org bereit gestellt werden soll.

Evaluierung der Migrierbarkeit von Storage-Clustern

  • Der Storage-Cluster-Deployer muss auf Maschinen von Amazon AWS, GCE und OpenStack deployed werden können.
  • Die Provider-Migration zwischen Cloud-Service Infrastrukturen soll getestet werden. Dazu gehört die Migration von AWS zu OpenStack und umgekehrt sowie die Migration von AWS zu GCE und umgekehrt.
  • Hierzu sind sinnvolle Testfälle mit Applikationen sinnvoller Komplexität zu definieren und durchzuführen. Auftretende Einschränkungen insbesondere hinsichtlich Datenvollständigkeit und –konsistenz sind aufzuführen.
  • Geeignete Test-Tools müssen selbstständig gefunden oder entwickelt werden.