Speicherorchestrierung – Service, Vorteil, Herausforderung
Orchestrierung und Automatisierung können die Speicherverwaltung unterstützen. Hier erfahren Sie mehr über die technischen Details der Orchestrierung und wie sie helfen kann.
Statt mit einer musikalischen Analogie, der man nur schwer widerstehen kann, wenn man über Orchestrierung schreibt, möchte ich mit einem Zitat aus Mary Shelleys Hauptwerk Frankenstein, der Geschichte über die Belebung einer Ansammlung lebloser menschlicher Teile, beginnen. Ich vermute, dass sie die Gefühle der meisten Anwender von Orchestrierungswerkzeugen auf den Punkt brachte, als sie schrieb:
„Es war eine trostlose Novembernacht, als ich mein Werk fertig vor mir liegen sah. Mit einer Erregung, die fast einer Todesangst glich, machte ich mich daran, dem leblosen Dinge den lebendigen Odem einzublasen.“
(Übersetzung nach: https://sternchenland.com/unsortierte-ebooks/frankenstein/5-kapitel-13)
Automatisierung – der Weg zur Orchestrierung
Wir sind mit dem Thema Automatisierung vertraut. Technologie und Maschinen werden dazu genutzt, menschlich unmögliche, sich wiederholende oder gefährliche Aufgaben zu übernehmen. Die Automatisierung hat dazu beigetragen, menschliche Fehler – und Todesfälle – zu reduzieren und die Produktivität dramatisch zu steigern. Ein Großteil der industriellen Revolution im 18. Jahrhundert basierte auf Automatisierung, von der Nutzung der Dampfkraft, die Muskeln und Muskelkraft ersetzte, bis zu den Spinnmaschinen der Textilherstellung, die das Handweben ersetzten.
Die heutigen „Software-Roboter“ übernehmen ähnliche Aufgaben, bei denen die menschliche Beteiligung minimal oder nicht vorhanden ist, von der Prozessüberwachung bis hin zu automatisierten Buchhaltungssystemen. Dass sie allgegenwärtig sind, kann als Beweis ihrer Effektivität gewertet werden. Sie können zum Beispiel einen Webserver starten, automatisch Druckertinte bestellen, wenn der Vorrat zur Neige geht oder eine eingehende E-Mail in einen bestimmten Ordner kopieren.
Orchestrierung ist mit der Automatisierung verwandt, arbeitet aber mit einer Reihe von bereits automatisierten IT-Prozessen und Arbeitsabläufen und führt sie zu einem koordinierten Ganzen zusammen. Aufgebaut auf einer Schicht oder Kompositionsebene oberhalb der Aufgabe oder einzelnen Arbeitskomponente, komponiert Orchestrierung größere, komplexere Systeme aus diesen kleineren Teilen, wahrscheinlich über mehrere Systeme hinweg. Dies ermöglicht nicht nur den Aufbau komplexer Workflows und Systeme, sondern auch die Zusammenstellung, die Inbetriebnahme und die Verwaltung dieser Systeme im großen Maßstab. Solche Dinge sind manuell oft unmöglich zu bewerkstelligen.
Orchestrierung kann zum Beispiel helfen, mehrere IT-Aufgaben zu verwalten. Im Fall unseres Druckers hilft die Orchestrierung nicht nur bei der Bestellung der Tintenpatronen, sondern weiß auch, wann sie ankommen, und veranlasst einen Menschen, sie zu installieren. Neben der Automatisierung von Abläufen zur Behandlung von Ereignissen kann die Orchestrierung auch Server bereitstellen, Web-Services auf Basis der eingehenden Arbeitslast hoch- und runterfahren, die Bereitstellung und Verwaltung von Datenbanken übernehmen und vieles mehr.
Orchestrierungs-Tools
Viele der verfügbaren Orchestrierungs-Tools sind Open Source, und es gibt eine große Anzahl davon. Diese Liste (nicht vollständig) umfasst unter anderem Kubernetes, OpenShift und Swarm. Einige sind vollständig kommerzielle Angebote, wie die von AWS oder Microsoft Azure.
Die meisten verwenden deklarative Programmierkonzepte. Im Gegensatz zur imperativen Programmierung, die beschreibt, wie eine Aufgabe auszuführen ist, beschreibt ein deklaratives Programm, was getan werden muss, um die Aufgabe zu erfüllen. Um nun doch eine musikalische Analogie zu verwenden, sind Notenblätter insofern deklarativ, als sie uns sagen, was zu tun ist, mit ihrer deklarativen Beschreibung der einzelnen Instrumente und der Noten, die sie spielen sollen.
Dies ist der Schlüssel zu einem hohen Grad an Orchestrierung, manchmal auch Infrastruktur als Code (IaC) genannt. Hier ist es möglich, die physische und virtuelle Infrastruktur, die darauf aufbaut, mit Definitionsdateien oder hauptsächlich deklarativen Programmen zu verwalten, bei denen wir die Hardware nicht physisch konfigurieren oder interaktive Werkzeuge verwenden müssen, um unsere Ziele zu erreichen. Ein Stück Software kann das für uns tun.
Kubernetes und Container
Moderne Anwendungen werden zunehmend nach dem Konzept der Microservices aufgebaut. Diese Dienste werden als fein granuliert beschrieben. Sie stellen in der Regel eine kleine Funktion bereit, die von vielen Anwendungen wiederverwendet werden kann – zum Beispiel das automatische Öffnen eines Problemtickets. Die Protokolle für die Kommunikation mit diesen Microservices sind Leichtgewichte, wie das allgegenwärtige HTTP. Container sind Anwendungen, die aus kleinen, wiederverwendbaren Teilen bestehen, die durch effiziente Netzwerkprotokolle miteinander verbunden sind, und die zusammen mit ihren Abhängigkeiten und Konfigurationen verpackt sind.
Kubernetes stellt diese Container bereit und verwaltet sie in großem Umfang. Es hat sich zur dominierenden Technologie in diesem Bereich entwickelt. Sie verfügt über eine prosperierende Community von DevOps und Endanwendern, weshalb ich sie als Aushängeschild für die Storage-Orchestrierung verwende.
Anwendungen erstrecken sich oft über mehrere Container, die auf vielen Servern verteilt sind, und das erhöht die Komplexität ihrer Verwaltung. Kubernetes löst dieses Problem, indem es Rechen-, Speicher- und andere Ressourcen verwaltet und den Containern zuweist und plant, wo und wann diese Container ausgeführt werden. Container werden virtuell in einem Pod gruppiert, der grundlegenden Betriebseinheit für Kubernetes, und diese Pods werden dann skaliert, um den Rechenbedarf zu decken.
Das Kubernetes-System
- verwaltet auch die Service-Erkennung (Was macht dieser Container?),
- kümmert sich um den Lastausgleich (Nutzen die Container die Ressourcen optimal?),
- verfolgt die Ressourcenzuweisung (Habe ich genug Ressourcen, um die Anforderungen zu erfüllen?) und
- skaliert je nach Auslastung (Wenn die Nachfrage steigt oder sinkt, sollte ich mehr oder weniger laufen lassen?).
Kubernetes überwacht auch den Zustand und die Gesundheit der Ressourcen. Wenn es Probleme gibt, ermöglicht es Anwendungen, Selbstheilungsfunktionen bereitzustellen, indem Container automatisch neu gestartet oder repliziert werden.
Containerisiertes Storage
Speicher war schon immer schwierig zu verwalten, weil er einen Zustand beziehungsweise eine Persistenz hat. Wenn ein Datenstrom an ein Speichersystem gesendet wird, verspricht das Speichersystem, denselben Datenstrom zu einem unbestimmten Zeitpunkt in der Zukunft auf performante Weise zurückzuliefern. Dieses Versprechen ist manchmal schwer zu halten.
Storage wird in Kubernetes über das Container Storage Interface (CSI) verwaltet, einen Standard für die geräteunabhängige Anbindung von Block- und Dateispeichersystemen an containerisierte Workloads. Im Wesentlichen erlaubt CSI die Deklaration und Nutzung von Speicherschnittstellen, die dem Container zur Verfügung stehen. Es löst das Versprechen von IaC (Infrastruktur als Code) ein.
Ursprünglich erlaubte Kubernetes nur ephemeren Speicher. Es war nur möglich, einen Datenstrom während einer einzigen Ausführung des Containers zu speichern und abzurufen. Bei jedem Neustart bekam man einen leeren Speicher, und alles, was bei der letzten Nutzung des Containers gespeichert worden war, war vergessen worden.
Die meisten Anwendungen funktionieren nicht so. In der Tat ist es schwierig, Anwendungen zu schreiben, die völlig unabhängig von Datenänderungen sind. Stellen Sie sich zum Beispiel ein Buchungssystem einer Fluggesellschaft vor, das sich nicht daran erinnern kann, wie viele Passagiertickets es verkauft hat oder wer den Platz 3A gebucht hat.
Es hat ein wenig gedauert, aber jetzt ist es möglich, über einen geeigneten CSI-Treiber ein Speichersubsystem zu nutzen, das über Persistenz verfügt. Und Admins können diesen Speicher nun auch zwischen Containern teilen. Diese Entwicklung verbessert die Fähigkeit, zustandsabhängige Anwendungen zu unterstützen. Allerdings bringt sie eine Reihe anderer potenzieller Probleme mit sich, die mit der traditionellen Nutzung und Verwaltung von Storage verbunden sind, wie Backup und Restore, Replikation und Checkpoints für Disaster Recovery und Konsistenz.
Kann Orchestrierung helfen?
Oft ist die Skalierung der Feind der Effizienz. Bei Skalierung wird die Verwaltung schwierig, und der erste Ansatz ist, zumindest die Teile zu automatisieren, die wir können. Die Automatisierung von kleinen Aufgaben oder Prozessen hat deren effizientes Management ermöglicht. Die Orchestrierung geht nun noch einen Schritt weiter – automatisierte Teile können in Größenordnungen koordiniert und verwaltet werden, die menschliche Fähigkeiten übersteigen.
IaC revolutioniert, wie wir über physische Ressourcen denken. Software-definierter Speicher (SDS) ermöglicht die Bereitstellung, Implementierung, Überwachung und Verwaltung von Speicher ohne Bezug auf eine bestimmte Hardware. CSI macht es einfacher, Speicher so zu verwalten wie andere softwaredefinierte Ressourcen der Laufzeitumgebung.
Wo Orchestrierung nicht hilft, ist, wenn wir Ineffizienzen automatisiert haben; sie wird sie nicht beheben oder besser machen. Effektivität, oder die richtigen Dinge gut zu tun, ist nicht dasselbe wie Effizienz. Wie ein anonymer Witzbold gesagt hat: „Automatisierung mag eine gute Sache sein, aber vergessen Sie nicht, dass sie mit Frankenstein begann.“ Die Orchestrierung erfordert immer noch menschliches Geschick und Fachwissen, während wir den „lebendigen Odem“ in die leblosen Teile einblasen.
Über den Autor:
Alex McDonald ist unabhängiger Berater und Vorsitzender der Cloud-Storage-Technologies-Initiative der Storage Networking Industry Association (SNIA), die sich für die Einführung, das Wachstum und die Standardisierung von Speicher in Cloud-Infrastrukturen und deren Datenservices, Orchestrierung und Management sowie die Förderung der Portabilität von Daten in Multi-Cloud-Umgebungen einsetzt.
SNIA ist eine Non-Profit-Organisation, die sich aus Mitgliedsunternehmen aus dem gesamten IT-Bereich zusammensetzt. Als weltweit anerkannte und vertrauenswürdige Autorität hat SNIA die Aufgabe, die Speicherindustrie bei der Entwicklung und Förderung von herstellerneutralen Architekturen, Standards und Bildungsdienstleistungen anzuführen, die die effiziente Verwaltung, Bewegung und Sicherheit von Informationen erleichtern.
Die Autoren sind für den Inhalt und die Richtigkeit ihrer Beiträge selbst verantwortlich. Die dargelegten Meinungen geben die Ansichten der Autoren wieder.