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 zur Sicherstellung der Skalierbarkeit fünf verschiedene Funktionen erforderlich: Wiederholungsversuche , Leistungsschalter , Erkennung , Verteilung und Überwachung.
In diesem Beitrag zur Kunst der Container-Skalierung befassen wir uns mit der Überwachung.
Überwachung. In einer Zeit, in der scheinbar jeder auf alles hört und/oder alles beobachtet, von unserer Fahrgeschwindigkeit bis hin zu dem, was in unserem Kühlschrank ist, hinterlässt dieses Wort bei vielen einen üblen Nachgeschmack. Wir können stattdessen das Wort „Sichtbarkeit“ verwenden – und tun dies auch oft –, aber diese semantische Sophisterei ändert nichts an unserem Tun: Wir beobachten die Situation genau.
Skalierung basiert auf genauer Überwachung und dem Verständnis des Zustands der Serverressourcen, über die Sie Anforderungsweiterleitung durchführen. Eine Anfrage an eine „tote Zone“ zu senden, weil die Ressource abgestürzt oder kürzlich heruntergefahren wurde, gleicht dem Einbiegen in eine Sackgasse ohne Ausweg. Das kostet nur Zeit.
Überwachung gibt es in vielen Varianten. Es gibt die „Kann ich Sie erreichen“-Überwachung eines Pings auf der Netzwerkebene. Es gibt die „Bist du zu Hause“-Überwachung einer TCP-Verbindung. Und dann gibt es noch die HTTP-Anfrage „Öffnen Sie die Tür?“. Dann gibt es noch die „Hast du schon deinen Kaffee getrunken“-Überwachung, die feststellt, ob der Dienst richtig antwortet oder nicht.
Neben der bloßen Überprüfung des Zustands und der Ausführung eines Dienstes geht es auch um eine Leistungsüberwachung. Wie schnell der Service geantwortet hat, ist entscheidend, wenn Sie Anfragen basierend auf Antwortzeiten verteilen. Plötzliche Leistungsänderungen können auf Probleme hinweisen, daher handelt es sich um historisch bedeutsame Daten, die ebenfalls überwacht werden müssen.
Es gibt aktives Monitoring (lassen Sie mich Ihnen eine echte Anfrage senden!), synthetisches Monitoring (lassen Sie mich Ihnen eine vorgetäuschte Anfrage senden) und passives Monitoring (ich sitze einfach hier und beobachte, was mit einer echten Anfrage passiert). Alle haben Vor- und Nachteile, und alle sind gültige Überwachungsmethoden. Entscheidend ist, dass der Proxy den Status bestimmen kann: Ist es aktiv? Ist es inaktiv? Hat es zusammen mit Elvis das Gebäude verlassen?
Erreichbarkeit, Verfügbarkeit und Leistung sind wesentliche Überwachungsaspekte, die Sie benötigen, um Skalierbarkeit zu gewährleisten. Es geht also nicht nur um Überwachung, sondern darum, die Load-Balancing-Proxys mit aktuellen Informationen zum Status jeder Ressource zu versorgen, an die sie Anfragen weiterleiten.
Wenn du die Eigenschaften von Containern und ihren häufigen Einsatz gemeinsam mit einer Microservice-basierten Architektur berücksichtigst, wird Überwachung schnell zur großen Herausforderung. Denn das gebräuchlichste Modell für die Anforderungsweiterleitung in Container-Umgebungen sind Forward- und Sidecar-Proxys. Beide verlangen, dass jeder Knoten den Gesundheitszustand jeder Ressource kennt, an die er eine Anfrage weiterleiten könnte. Das bedeutet für dich: Du musst fast jede Ressource kontinuierlich überwachen.
Sie werden verstehen, wie ineffizient es ist, wenn eine Ressource ihre begrenzten Kapazitäten dafür nutzt, fünfzehn oder zwanzig Forward-Proxys über ihren Status zu informieren. Monitoring in einem solchen Modell beeinträchtigt Leistung und Kapazität deutlich, was eine Skalierung zusätzlich erschwert.
Noch nie zuvor hatte die Überwachung einen so großen Einfluss auf die Skalierung, wie wir es bei Containern sehen.
Und es ist wichtig – wie bereits erwähnt – weil Sie Zeitverschwendung mit „Sackgassen“-Ressourcen vermeiden wollen.
Die Herausforderungen der erforderlichen Überwachung sind einer der Gründe, warum das Service Mesh als zukünftiges Skalierungsmodell in Containerumgebungen immer beliebter wird (und an Bedeutung gewinnt).
Denn die Überwachung ist zwar keine Option, sollte aber auch keine Belastung darstellen.