Programmierung · Server · Netzwerk
Was ist ein Load Balancer?
Ein einzelner Server kann nur so viel verkraften. Wenn der Traffic über das hinauswächst, was eine Maschine bedienen kann — oder wenn Sie es sich schlicht nicht leisten können, dass die Seite ausfällt, sobald diese Maschine streikt — betreiben Sie mehrere Kopien und stellen einen Load Balancer davor. Dieser Guide erklärt, was ein Load Balancer ist, wie er entscheidet, wohin jede Anfrage geht, und wie er mit dem Reverse Proxy zusammenhängt, den Sie vielleicht schon kennen.
Die Kernidee: die Arbeit aufteilen
Ein Load Balancer ist eine Komponente, die eingehende Anfragen empfängt und sie auf einen Pool von Backend-Servern verteilt — meist identische Kopien derselben App. Für den Besucher gibt es eine Adresse; dahinter verteilt der Load Balancer den Traffic still und leise, damit kein einzelner Server überlastet wird. Er löst zwei Probleme auf einmal: Skalierung (mehr Traffic bewältigen, als eine Maschine könnte) und Verfügbarkeit (fällt ein Server aus, bedienen die anderen weiter).
Der zweite Punkt wird unterschätzt. Ein Load Balancer prüft fortlaufend, ob jedes Backend gesund ist, und stellt das Senden von Traffic an alle ein, die nicht mehr antworten. Ein einzelner fehlerhafter Server reißt nicht mehr die ganze Seite mit — sein Anteil an Anfragen wird einfach auf die gesunden umgeleitet.
Wie er entscheidet: Balancing-Algorithmen
Der Load Balancer braucht eine Regel, um auszuwählen, welcher Server die nächste Anfrage bearbeitet. Die gängigen sind:
- Round-robin — jede neue Anfrage reihum dem nächsten Server zuteilen. Einfach und ausgewogen, wenn die Server ähnlich sind.
- Least connections (wenigste Verbindungen) — die Anfrage an den Server schicken, der gerade die wenigsten aktiven Verbindungen hat. Besser, wenn Anfragen unterschiedlich aufwendig sind.
- IP-Hash — den Server anhand der IP des Clients wählen, damit derselbe Besucher stets auf demselben Backend landet (nützlich für Session-Stickiness).
- Gewichtet (weighted) — größeren Servern einen größeren Anteil des Traffics geben.
Layer 4 vs Layer 7
Load Balancer arbeiten auf einer von zwei Ebenen. Ein Layer-4-Balancer (Transport) leitet nach IP-Adresse und Port weiter, ohne in den Traffic hineinzuschauen — schnell und protokollunabhängig. Ein Layer-7-Balancer (Anwendung) versteht HTTP, kann also nach URL-Pfad, Hostname oder Headern routen, TLS terminieren und klügere Entscheidungen treffen. Layer 7 ist die übliche Wahl für Web-Apps; Layer 4 gewinnt, wenn rohe Geschwindigkeit wichtiger ist als inhaltsbewusstes Routing.
Load Balancer vs Reverse Proxy
Das ist die Frage, an der sich viele verheddern. Die ehrliche Antwort: Load Balancing ist eine der Aufgaben, die ein Reverse Proxy übernehmen kann. Ein Reverse Proxy ist das umfassendere Konzept — ein Server, der vor Ihren Backends sitzt und routen, cachen, TLS terminieren und Last verteilen kann. Ein „Load Balancer“ ist dieselbe Eingangstür, fokussiert auf die Verteilungsaufgabe. In der Praxis überschneiden sich die Werkzeuge: Nginx, HAProxy und Caddy fungieren alle als Load Balancer, und ein Cloud-Load-Balancer ist eine verwaltete Variante derselben Rolle.
Wo Load Balancer laufen
Man begegnet ihnen in einigen Formen. Software-Load-Balancer — Nginx, HAProxy, Traefik — laufen auf einem Server, den Sie kontrollieren. Cloud-Load-Balancer (AWS, Google Cloud, Azure) sind verwaltete Dienste, die Sie konfigurieren statt zu hosten. Und in Container-Plattformen wie Kubernetes ist Load Balancing eingebaut und verteilt den Traffic auf die Pods, sowie diese kommen und gehen. Was auch immer Sie nutzen, Sie wollen mehr als ein Backend — typischerweise ein paar Server, die identische Kopien der App ausführen.
Das Fazit
Ein Load Balancer verteilt eingehende Anfragen auf mehrere Server, damit das System mehr Traffic bewältigt und einen Serverausfall übersteht. Er wählt ein Backend über einen Algorithmus wie Round-robin oder Least connections, prüft die Gesundheit jedes Servers und kann auf der Transport- (L4) oder Anwendungsebene (L7) arbeiten. Sehen Sie ihn als die Verteilungsaufgabe eines Reverse Proxy — das Teil, das aus einer App auf einer Maschine einen Dienst macht, der skaliert und online bleibt.