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

Herkömmliche Maßstabmodelle haben eine relativ feste Konfiguration . Proxys zum Lastenausgleich verwenden einen Algorithmus, um eine Ressource aus einem relativ statischen Ressourcenpool auszuwählen. Während die Auswahl der Ressource (Verteilung) ein Echtzeitvorgang ist und die Berücksichtigung von Just-in-Time-Variablen wie Lade- und Reaktionszeiten umfassen kann, trifft dies auf die Gesamtumgebung nicht zu. Betreiber fügen Ressourcen hinzu und entfernen sie auf der Grundlage unternehmensdefinierter Prozesse, die die Erhöhung oder Verringerung der Kapazität steuern.

Moderne Skalenmodelle sind von Natur aus volatil und dynamisch. Die Skalierungsprämisse moderner Systeme basiert auf der Automatisierung aller Vorgänge. Auto-Scale, ein durch die Cloud konkretisiertes Konzept, erzwingt die Idee einer bedarfsorientierten Erweiterung und Verkleinerung von Ressourcenpools. Dies ist jedoch nur ein halber Schritt gegenüber traditionellen Modellen. Es besteht immer noch das Konzept eines „Kern“-Ressourcenpools, aus dem ein Lastausgleichsalgorithmus eine Auswahl trifft. Dieser Pool kann dynamisch erweitert oder verkleinert werden, unterliegt jedoch weiterhin den Einschränkungen durch das eher traditionelle Modell, nach dem er operiert.

Container – und insbesondere Container-Orchestrierungsumgebungen – brechen völlig aus diesem Schema aus. Das Konzept eines Endpunkts (der Eingang ) ist eines der wenigen „festen“ Elemente in der containerbasierten Skalierung, während alles andere, von den Routing-Regeln bis zu den Ressourcen, aus denen der unterstützende Pool besteht, als höchst variabel gilt. Theoretisch haben Container nur eine Lebensdauer von wenigen Sekunden. In der Praxis beträgt ihre Lebensdauer jedoch im Allgemeinen mehrere Tage. Im Vergleich zu herkömmlichen Modellen, bei denen die Ressourcen Monate (und manchmal Jahre) lang lebten, erzeugt diese Lebensdauer für die Betreiber einen Druck, der ohne Automatisierung nicht bewältigt werden kann.

Daher ist die Erkennung eine wichtige Komponente für die Skalierung von Containern. Proxys zum Lastenausgleich müssen in der Lage sein, eine Ressource aus einem Ressourcenpool auszuwählen, die möglicherweise dieselbe ist wie vor einer Minute, aber nicht muss. Die meisten Container-Orchestrierungsumgebungen umfassen daher ein „Register“ von Ressourcen, das Proxys bei der Echtzeiterkennung von Ressourcen unterstützt, um die Skalierung sicherzustellen.

Dieser Prozess erfordert nicht nur, dass Proxys in das Ökosystem der Container-Orchestrierung integriert sind, sondern auch, dass sie die Lingua Franca dieser Umgebungen sprechen: In Container-Orchestrierungsumgebungen werden deklarative Konfigurationsdateien (Ressourcendateien) und Metadaten verwendet, damit Proxys die Ressourcen identifizieren können, die an die Dienste angehängt sind, die sie skalieren. Auf diese Weise können Proxys ihre Ressourcen-„Pools“ automatisch in Echtzeit anpassen. So vermeiden Sie die Peinlichkeit, eine Ressource auszuwählen, die bedauerlicherweise bereits abgeschaltet wurde.

Ohne Erkennung gibt es für einen Lastausgleichsproxy keine effiziente Möglichkeit, Anwendungen und Dienste in einer Containerumgebung zu skalieren. Kein Betreiber könnte mit den Änderungen in einer solchen Umgebung Schritt halten, wenn er manuelle Konfigurationsmethoden verwendet. Allein das Nachverfolgen, welche Ressourcen aktiv sind – und an einen bestimmten Dienst angehängt sind – würde die meiste Zeit in Anspruch nehmen, sodass kaum Zeit bliebe, die erforderlichen Änderungen tatsächlich vorzunehmen.

Discovery bietet die Möglichkeit, Komponenten in einer Container-Orchestrierungsumgebung in Echtzeit auszuführen, und ermöglicht Lastausgleichs-Proxys die Skalierung von Apps und Diensten, indem sichergestellt wird, dass sie über die Informationen verfügen, die sie zum Auswählen von Ressourcen nach Bedarf benötigen.