Load Balancing

Veröffentlicht am:

Die wichtigsten Befehle zum Merken

  • haproxy -c -f DATEI — Konfiguration ohne Proxystart prüfen.
  • curl -i URL — HTTP-Antwort samt Headern untersuchen.

Befehle und Optionen

Option Bedeutung
-c / -f bei HAProxy Konfiguration prüfen / Konfigurationsdatei wählen.
-i bei curl Antwortheader zusätzlich zum Body anzeigen.
--max-time 5 Einen Transfer auf fünf Sekunden begrenzen.

Das Beispiel untersucht ein vorhandenes Lab. Die Konfigurationsprüfung lädt den laufenden Prozess nicht neu.

Die entscheidenden Konzepte

1. Ein Endpunkt kann mehrere Backends vertreten

Ein Load Balancer wählt aus einem Backend-Pool hinter einem gemeinsamen Endpunkt. Clients adressieren das Frontend, während die Auswahl Arbeit zu einem geeigneten Server führt.

Layer-4-Verteilung wählt häufig pro Transportverbindung. Layer 7 kann HTTP-Hostnamen oder Pfade auswerten. Beides garantiert nicht, dass jede Anfrage eine neue Backend-Verbindung öffnet oder einen anderen Server auswählt.

2. Ein Algorithmus wählt unter geeigneten Servern

Round Robin rotiert die Auswahl. Least Connections berücksichtigt Verbindungszahlen. Gewichte können unterschiedliche gewünschte Anteile darstellen. Auswahleinheit und Verbindungswiederverwendung beeinflussen die beobachtete Verteilung.

Zwei gleiche Antworten beweisen kein gemeinsames Backend. Zwei verschiedene beweisen keine Gleichverteilung. Verwende zur Zuordnung eine bewusst angebotene Diagnosekennung oder erlaubte Backend-Logs, keine Vermutungen aus Laufzeiten.

3. Health Checks bestimmen die Eignung

Ein Health Check entscheidet, ob ein Server auswählbar bleibt. Ein TCP-Verbindungstest beantwortet eine engere Frage als ein HTTP-Readiness-Endpunkt. Intervalle sowie Fehler- und Erfolgsschwellen bestimmen die Reaktionszeit.

Das Entfernen aus neuer Auswahl verschiebt vorhandene Sitzungen nicht automatisch. Connection Draining lässt bestehende Arbeit bei geplanten Änderungen auslaufen. Wiederaufnahme und Readiness müssen zur tatsächlich verfügbaren Anwendung passen.

4. Affinität tauscht Verteilung gegen Kontinuität

Session-Affinität versucht, zusammengehörigen Verkehr auf demselben Backend zu halten, etwa per Cookie oder Quelladresszuordnung. Das hilft bei lokalem Sitzungszustand, kann aber Last konzentrieren und Ausfälle erschweren.

Die Anwendung muss wissen, wo ihr Zustand liegt und was beim Verlust dieses Backends geschieht. Load Balancing erweitert Auswahlmöglichkeiten. Es repliziert keine Anwendungsdaten und macht Wiederholungen abgebrochener Anfragen nicht automatisch sicher.

Ein kleines Beispiel

Optional: Verwende das beschriebene vorhandene lokale Lab. Ohne HAProxy-Installation kannst du die Konzepte ohne Aufbau lesen.

haproxy -c -f /etc/haproxy/haproxy.cfg
curl -i --max-time 5 http://127.0.0.1:8080/
curl -i --max-time 5 http://127.0.0.1:8080/

Der erste Befehl prüft die Konfiguration für diese HAProxy-Version. Fehlende Dateien oder unlesbare Zertifikate sind Validierungsfehler, kein Nachweis ausgefallener Backends. Eine erfolgreiche Prüfung beweist keine Servererreichbarkeit.

Die nächsten Befehle senden separate GET-Transfers. Lies Status, Header und Body. Vergleiche bewusst bereitgestellte Backend-Kennungen, falls vorhanden. Ohne sie ist der zuständige Server nicht bestimmbar. Cookies, Gewichte, Zustand und Wiederverwendung beeinflussen die Auswahl.

Eine abgelehnte lokale Verbindung bedeutet ein nicht erreichbares Frontend. Es wird nichts geändert oder gestartet. Aufräumen ist nicht erforderlich.

Merke dir: Load Balancing wählt geeignete Backends. Prüfungen, Verbindungsdauer und Anwendungszustand bestimmen das Ergebnis.