BLOG

Die Kunst, Container zu skalieren: Entdeckung

Lori MacVittie Miniaturbild
Lori MacVittie
Veröffentlicht am 28. Dezember 2017

Beim Skalieren von Containern handelt es sich um mehr, als einfach einen Proxy vor einen Dienst zu setzen und sich dann zurückzuziehen. Zur Skalierung gehört mehr als nur die Verteilung. In der schnelllebigen Welt der Container sind fünf verschiedene Funktionen erforderlich, um die Skalierung sicherzustellen: Wiederholungsversuche, Leistungsschalter, Erkennung, Verteilung und Überwachung.

In diesem Beitrag zur Kunst der Container-Skalierung vertiefen wir uns in die Entdeckungsreise.

Entdeckung

Traditionelle Skalierungsmodelle haben eine relativ feste Systemkonfiguration. Lastausgleichsproxies wählen mithilfe eines Algorithmus eine Ressource aus einem relativ statischen Ressourcenpool aus. Während die Auswahl der Ressource (Verteilung) in Echtzeit erfolgt und Just-in-Time-Variablen wie Auslastung und Reaktionszeiten einbeziehen kann, gilt das nicht für die gesamte Umgebung. Sie fügen Ressourcen hinzu oder entfernen sie entsprechend den unternehmensinternen Prozessen, die Kapazitätserhöhungen oder -verringerungen steuern.

Moderne Skalierungsmodelle sind von Natur aus volatil und dynamisch. Die Grundlage der Skalierung in modernen Systemen basiert auf „automatischer“ Steuerung in allen Bereichen. Auto-Scaling, ein durch die Cloud geprägtes Konzept, zwingt Sie dazu, Ressourcenpools je nach Nachfrage zu erweitern oder zu verkleinern. Dabei handelt es sich jedoch nur um einen halben Schritt gegenüber traditionellen Modellen. Das Konzept eines „Kern“-Ressourcenpools, aus dem ein Lastenausgleichs-Algorithmus auswählt, bleibt bestehen. Dieser Pool lässt sich dynamisch erweitern oder verkleinern, bleibt aber weiterhin durch das vergleichsweise traditionelle Modell begrenzt, in dem er arbeitet.

Container – und hier besonders Container-Orchestrierungsumgebungen – brechen komplett mit diesem Muster. Das Konzept eines Endpunkts (des Ingress) gehört zu den wenigen „festen“ Elementen bei containerbasierter Skalierung. Alles andere, von Routing-Regeln bis hin zu den Ressourcen des unterstützenden Pools, verändert sich ständig. Container können theoretisch nur wenige Sekunden existieren. In der Praxis halten sie sich meist jedoch Tage lang. Im Vergleich zu herkömmlichen Modellen, bei denen Ressourcen Monate oder sogar Jahre laufen, entsteht für Betreiber ein erheblicher Druck, den nur Automatisierung bewältigen kann.

Discovery ist deshalb ein entscheidender Baustein, um Container zu skalieren. Loadbalancing-Proxys müssen eine Ressource aus einem Pool auswählen können, der sich jederzeit ändern kann. Deshalb enthalten die meisten Container-Orchestrierungssysteme ein Ressourcenregister, das Proxys hilft, Ressourcen in Echtzeit zu finden und so Skalierung ermöglicht.

Damit Proxys effektiv im Container-Orchestrierungs-Ökosystem funktionieren, müssen sie nicht nur integriert sein, sondern auch die gemeinsame Sprache dieser Umgebungen sprechen: deklarative Konfigurationsdateien (Ressourcendateien) und Metadaten ermöglichen es Proxys, die Ressourcen zu identifizieren, die den Diensten zugeordnet sind, die sie skalieren. So passen Proxys ihre Ressourcenpools automatisch in Echtzeit an und verhindern, dass sie versehentlich bereits abgeschaltete Ressourcen auswählen.

Ohne automatische Erkennung kann ein Load-Balancing-Proxy Anwendungen und Dienste in einer Container-Umgebung nicht effizient skalieren. Kein Betreiber könnte mit manueller Systemkonfiguration in einer solchen Umgebung mit den Veränderungen mithalten. Allein die aktive Kontrolle darüber, welche Ressourcen mit welchem Dienst verbunden sind, würde sie schnell auslasten und kaum Zeit für die notwendigen Anpassungen lassen.

Discovery ermöglicht es Komponenten in einer Container-Orchestrierungsumgebung, in Echtzeit zu arbeiten. Gleichzeitig sorgen wir dafür, dass Load-Balancing-Proxys Apps und Dienste skalieren können, indem sie jederzeit die Informationen erhalten, um Ressourcen bedarfsgerecht auszuwählen.