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:
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.