Was ist Load-Balancer-Monitoring?
Unter Load-Balancer-Monitoring versteht man die Prozesse und Verfahren, die den Zustand und die Effizienz von Load Balancern sicherstellen sollen. . Load Balancer sind Schlüsselkomponenten, die die von den Cloud-Anbietern versprochene hohe Verfügbarkeit und Skalierbarkeit gewährleisten, da sie die Verteilung der Arbeitslasten auf die Cloud-Ressourcen so verwalten, dass diese weder ungenutzt noch überlastet sind. Sie sind wie kleine Semaphoren, die entscheiden, was wann wohin geht. Im nächsten Abschnitt werden wir die wichtigsten Implementierungen von Load Balancern im Detail vorstellen. Load-Balancer-Monitoring ist nur ein kleinerer Aspekt des Cloud-Monitorings, aber dennoch ein wesentlicher.
Load-Balancer-Monitoring umfasst die Überprüfung der Effizienz und des Zustands von Load Balancern. Alle Implementierungen der großen Cloud-Anbieter, also AWS, Azure und GCP, nutzen Load Balancer. Dabei handelt es sich hauptsächlich um Netzwerk-Load-Balancer, die den Datenverkehr an die richtige Ressource weiterleiten, aber nicht ausschließlich. Diese Cloud-Load-Balancer können verschiedene Rollen übernehmen, nicht nur die Bearbeitung von Netzwerkanfragen. Wir werden später sehen, wie sich diese Rollen voneinander unterscheiden und – was noch wichtiger ist – wie sie sich überwachen lassen. Sehen wir uns zunächst an, wie man Load Balancer implementiert und verwendet und welche Unterschiede es im Betrieb gibt.
Wie funktioniert Load Balancing?
Load-Balancer lassen sich als Wächter der Arbeitslasten definieren. Sie werden vor die Ressourcen gestellt und lauschen auf Anfragen, die sie entsprechend der aktuellen Arbeitslast der Ressourcen gegebenenfalls auf andere verfügbare Ressourcen verteilen. Load Balancer verteilen Lasten auf Ressourcen wie Datenbanken, Subnetze, Anwendungen und generell alle Objekte, die Daten oder Rechenleistung bereitstellen. Ein Application Load Balancer teilt Anfragen für eine Anwendung auf, während Gateway Load Balancer den Datenverkehr auf mehrere Gateways verteilen, hinter denen sich beispielsweise virtuelle Appliances oder API-Endpunkte befinden.
Die Entscheidung eines Load Balancers, wie er eine Anfrage einer Ressource zuweist, legt ein Algorithmus fest. Bei den einfachsten Load Balancern wird eine Anfrage an eine Ressource weitergeleitet, ohne deren Auslastung zu berücksichtigen. Fortschrittlichere Load Balancer berücksichtigen den Status jeder Ressource und vermeiden es, einer bereits belasteten Ressource weitere Aufgaben zu übertragen. Erstere werden als statische Load Balancer bezeichnet, letztere als dynamisch. Andere Load Balancer schätzen die Zeit, die für die Erledigung jeder Aufgabe benötigt wird, und beziehen diese Daten in die Verteilung der Arbeitslasten mit ein, was zu einer genaueren Verteilung der Aufgaben führen kann.
Eine häufige Anwendung für Load Balancer ist die Verteilung eines einzelnen Dienstes an mehrere Benutzer. Dies ist der Fall bei Webservern, DNS-Servern, Datenbanken und mehr. Ein Netzwerk-Load-Balancer wird häufig in Rechenzentren eingesetzt, um den effizientesten Netzwerkpfad für die Kommunikation zwischen zwei Punkten zu ermitteln, um die Netzwerkauslastung zu optimieren und Überlastungen zu vermeiden. Private Load Balancer gleichen nur den innerhalb Ihrer privaten Netze erzeugten Datenverkehr aus, während Public Load Balancer für den externen Datenverkehr gedacht sind, der sie erreicht.
Load Balancer verteilen nicht nur Anfragen. Ein wichtiger Einsatzbereich ist die Vermeidung von Ausfällen. Eine Ressource wird ständig überwacht, um ihre Verfügbarkeit zu prüfen, und sobald die Prüfung fehlschlägt, wird der Load Balancer eingesetzt, um auf eine andere, funktionsfähige Ressource umzuschalten und so die Kontinuität des Dienstes zu gewährleisten.
Warum Load-Balancer-Monitoring wichtig ist
Die Bedeutung des Load-Balancer-Monitorings liegt also auf der Hand. Noch mehr, wenn man bedenkt, dass alle primären Cloud-Dienste eine Form des Load Balancers verwenden, um die Arbeitslasten auf ihren Systemen zu verteilen. Sie möchten daher auf jeden Fall Load Balancer nutzen und dabei wissen, ob diese effizient arbeiten.
Load-Balancer-Monitoring kann sicherstellen, dass mehrere Anwendungen, die von dem implementierten Load Balancer abhängig sind, die vorgesehene Menge an Datenverkehr erhalten und nicht mit Anfragen überlastet werden. Die Effizienz Ihrer Cloud- oder Hybrid-Infrastruktur kann durchaus von der Effizienz der Load Balancer abhängen.
Das Monitoring von Netzwerk-Load-Balancern kann auch einen Überblick über die Trends des an eine Anwendung gerichteten Datenverkehrs geben. Das Monitoring erfolgt in der Regel auf der Seite der Anwendung, aber das sagt Ihnen nur etwas über die Anfragen, die die Anwendung erreicht haben, nicht aber über die Gesamtzahl, die vom Load Balancer an anderer Stelle gedrosselt wurde. Load-Balancer-Monitoring kann einen globalen Überblick über den Datenverkehr geben, der über das hinausgeht, was durch die Überwachung der Anwendung allein erreicht werden kann.
Load-Balancer-Monitoring verschafft Ihnen einen wichtigen Überblick über die Skalierbarkeit Ihrer Umgebung. Da häufig der gesamte Datenverkehr über einen Load Balancer läuft, ist es einfach, dies als Anhaltspunkt dafür zu nutzen, wo und wann der Datenverkehr zu Ihren Anwendungen fließt und ob es an der Zeit ist, den Umfang zu erhöhen oder zu verringern.
Eine wichtige Funktion von Netzwerk-Load-Balancern ist das SSL-Offloading. Anstatt ein SSL-Zertifikat auf jedem Ihrer Server zu terminieren, kann dies zentral auf der Ebene des Load Balancers erfolgen, der dann als Zertifikatsverteiler für externe Anfragen fungiert. Falls implementiert, ist das Load-Balancer-Monitoring für das Überwachen des Ablaufens von Zertifikaten eine wichtige Aufgabe für Netzwerkteams.
Welche Cloud-Load-Balancer gibt es und wie lassen sie sich überwachen?
Die Nützlichkeit von Load Balancern erreicht bei Cloud-Diensten neue Dimensionen. Aufgrund ihrer hohen Skalierbarkeit und Verfügbarkeit setzen Cloud-Anbieter Load Balancer in großem Umfang ein, um ihre virtuellen Umgebungen effizient zu betreiben. Wenn sich Ihre Infrastruktur teilweise oder vollständig in der Cloud befindet, ist es wichtig zu wissen, welche verschiedenen Arten von Load Balancern AWS, Azure und GCP bieten und wie Sie diese überwachen können.
AWS-Load-Balancer-Monitoring
Der AWS-Load-Balancer wird Elastic Load Balancing (ELB) genannt. Er unterstützt den Betrieb als Application-Load-Balancer, Netzwerk-Load-Balancer, Gateway-Load-Balancer oder als klassischer Load Balancer, der den Datenverkehr auf EC2-Instanzen aufteilt. Auf AWS ELB lässt sich zur Konfiguration über CLI, via AWS-Management-Console, sprachspezifische SDKs und die Query-API zugreifen.
Zusätzlich zu den klassischen Typen von Load Balancern kann AWS ELB ein Add-on namens AWS-Load-Balancer-Controller verwenden, das eine Reihe von Load Balancern für einen Kubernetes-Cluster verwalten kann. Dieser fungiert als Controller für mehrere Sub-Load-Balancer in einem Kubernetes-Cluster.
Das Monitoring von AWS ELB kann auf verschiedene Weise erfolgen. Über CloudWatch-Metriken (die einfachste Methode), über Zugriffs- und CloudTrail-Logs, über die Verfolgung von HTTP-Requests, die der AWS-Load-Balancer empfängt, oder durch die Verwendung eines AWS-ELB-Monitoring-Tools eines Drittanbieters. In letzterem Fall fügt der Load Balancer jedem empfangenen Request einen Header mit einer Trace-Kennung hinzu, den *X-Amzn-Trace-Id*-Header, der es ermöglicht, Anforderungen von Clients an Ziele oder andere Dienste zu verfolgen.
Bei der Überwachung von AWS ELB verfolgen wahrscheinlich die Meisten am ehesten die CloudWatch-Metriken. Jeder AWS-Load-Balancer veröffentlicht Datenpunkte an Amazon CloudWatch. Je nachdem, wie Sie Ihre ELBs nutzen, sind eine Reihe von Metriken für Sie wichtiger als andere. Einige der wichtigsten Metriken sind die Anzahl der aktiven Verbindungen, die Anzahl der HTTP-Umleitungen und Fixed Responses, wie etwa Health-Checks, die Gesamtzahl der IPv6-Anfragen, die abgelehnten Verbindungen und die Anzahl der HTTP-Fehlercodes 3xx, 4xx und 5xx. Diese sind für alle AWS-Load-Balancer gleich. Je nach den Ressourcentypen, für die ELB den Datenverkehr drosselt, sind einige weitere Metriken erforderlich, beispielsweise speziell für Lambda-Ziele.
Eine weitere wichtige Kennzahl, insbesondere beim AWS-ELB-Monitoring, ist die Anzahl der verwendeten LCUs (Load Balancer Capacity Unity). Diese sind wichtig, um die Kosten zu berechnen, da Sie auskunft darüber gehen, wie stark Sie Ihre Elastic-Load-Balancer nutzen. Sowohl CloudWatch als auch AWS ELB-Monitoring-Tools von Drittanbietern wie Checkmk können diese Kennzahl verfolgen.
Monitoring von Azure-Load-Balancern
Azure Cloud verfügt über eine eigene Reihe von Load Balancern. Es gibt insgesamt 4, abhängig von den gewünschten Ressourcen, für die sie die Arbeitslasten begrenzen müssen. Azure Front Door ist ein Application-Load-Balancer, der den Datenverkehr für Webanwendungen ausgleicht. Traffic-Manager ist dagegen ein Netzwerk-Load-Balancer, genauer gesagt ein DNS-Load-Balancer, der den Datenverkehr über globale Azure-Regionen verteilen kann. Application-Gateway ist ein reiner Application-Load-Balancer. Der generisch benannte Azure-Load-Balancer bietet schließlich eine Drosselung für UDP- und TCP-Pakete für jede Art von Ressource. Diese Load-Balancer lassen sich kombinieren und im Azure-Portal einrichten.
Load-Balancer-Monitoring in Azure erfolgt entweder über Azure Monitor oder über APIs. Die APIs ermöglichen es auch Drittanbieter-Lösungen zum Monitoring von Azure-Load-Balancern den Zugriff auf die für das Monitoring erforderlichen Metriken. Die verfügbaren Metriken sind insgesamt nicht sehr zahlreich, wobei die wichtigsten Metriken die Paketanzahl, die Byte-Anzahl, die Gesamtzahl der Verbindungen, der Backend-Zustand und der durchschnittliche Gesundheitsstatus eines Load Balancers sind.
Ergänzt werden diese Metriken durch die Load-Balancer-Logs, die im Activity-Bereich von Azure-Monitor verfügbar sind.
GCP-Load-Balancer-Monitoring
Google Cloud Platform bietet sowohl Netzwerk-Load-Balancer als auch Application-Load-Balancer an. Das Produkt selbst heißt einfach Cloud Load Balancing und lässt sich so einrichten, dass es als Load-Balancer für ein Netzwerk oder auf einer Anwendungsebene fungiert. Die Konfiguration des GCP-Load-Balancers erfolgt über eine CLI, die Google Cloud Console, die REST-API oder Terraform. Die letzten beiden sind besonders praktisch, wenn Sie eine Monitoring-Lösung eines Drittanbieters wie Checkmk für Ihre Load Balancer verwenden.
In der Monitoring-Praxis erfolgt das Monitoring des Zustands und Status eines Load-Balancers auf GCP durch die Analyse seiner Protokolle und der abgerufenen Metriken. Google Cloud Logging analysiert nur die Logs, während Google Cloud Monitoring Metriken anzeigt und analysiert.
Google Cloud Logging lässt sich jedoch auch in Google Cloud Monitoring integrieren, sodass sowohl Logs als auch Metriken in Google Cloud Monitoring zur Verfügung stehen, was es zur Standardwahl macht.
Externe Load-Balancer-Monitoring-Tools können jedoch ebenfalls problemlos eine oder beide dieser Aufgaben erfüllen.
Bei Ihren Google-Load-Balancern sollten Sie speziell die Metriken überwachen, die von den anderen wichtigen Load Balancern, die wir bisher gesehen haben, ähnlich verarbeitet werden. Die Gesamtzahl der eingehenden und ausgehenden Verbindungen, die Latenz, die Anzahl der Anfragen sowie neue, geschlossene und offene Verbindungen sind allesamt gute Indikatoren dafür, wie gut ein GCP-Load-Balancer funktioniert. Zusammen mit den Logs ist es dann möglich, einen recht guten Überblick über den Zustand und die Effizienz des Load Balancers zu erhalten.
Fazit
Wir haben gesehen, dass es auf jeder der drei wichtigsten Cloud-Plattformen eine Handvoll Load Balancer gibt. Grob gesagt handelt es sich dabei entweder um Netzwerk-Load-Balancer, die den Datenverkehr auf einer Netzwerkebene drosseln, oder um Application-Load-Balancer, die den Datenverkehr für bestimmte Anwendungen beschränken. Sowohl bei AWS, Azure als auch bei GCP lassen sich die Load Balancer so konfigurieren, dass sie als Netzwerk- oder Application-Load-Balancer fungieren, und es gibt noch einige weitere spezifische Typen.
Load-Balancer-Monitoring ist ein wichtiger Aspekt, um eine Cloud- oder Hybrid-Infrastruktur jederzeit mit maximaler Effizienz betreiben zu können. Zusätzlich zu den Monitoring-Dashboards, die die Cloud-Anbieter selbst bereitstellen, kann Checkmk wichtige zusätzliche Metriken und Statistiken liefern, die alle hier besprochenen Arten von Load Balancern abdecken. Checkmk verfügt über eine Fülle fortschrittlicher Funktionen, mit denen Cloud-Teams ihre Monitoring-Bedürfnisse anpassen können, und es generiert Warnmeldungen, wenn etwas schief läuft.
FAQ
Ein Reverse Proxy fungiert als öffentliches Gesicht für andere Ressourcen, in der Regel ein einzelner oder mehrere Server. Im Gegensatz zu einem Reverse Proxy drosselt ein Load Balancer die Anfragen in Abhängigkeit von der aktuellen Arbeitslast der dahinter stehenden Server. Ein Reverse Proxy ist nützlicher, wenn Sicherheit, Zwischenspeicherung, Datenkomprimierung und Datenschutz erwünscht sind, während ein Load Balancer der Schlüssel zur Gewährleistung von Effizienz, Skalierbarkeit und Leistung ist.
Ein API-Gateway fungiert als Vermittler zwischen einem Client und einem Server. Es ist ein einziger Zugangspunkt für mehrere Dienste und übernimmt die Autorisierung, Authentifizierung, Rate Limiting und Logging für alle dahinter liegenden Server. Im Gegensatz zu einem Load Balancer ist ein API-Gateway dazu da, sicheren Zugang zu Backend-Diensten zu bieten, während die Rolle eines Load Balancers darin besteht, diesen Zugang zu verteilen und optimale Skalierbarkeit und Leistung zu gewährleisten.