1. Einführung: Warum Load Balancer unverzichtbar sind

Stell dir vor, deine Website wird plötzlich von 10.000 Besuchern gleichzeitig aufgerufen. Ein einzelner Server kann diese Last nicht bewältigen: Die CPU schießt in die Höhe, die Anfragen stauen sich, Benutzer sehen Timeout-Fehler und deine Website wird praktisch unbenutzbar.

Ein Load Balancer (Lastverteiler) löst dieses Problem: Er sitzt vor mehreren Backend-Servern und verteilt eingehende Anfragen intelligent auf sie. Wenn ein Server überlastet ist, leitet der Load Balancer neue Anfragen an weniger belastete Server weiter. Fällt ein Server aus, leitet er Anfragen auf die verbleibenden Server um – die Website bleibt verfügbar, ohne dass ein Benutzer etwas bemerkt.

Load Balancing ist nicht nur für große Websites notwendig. Auch mittelgroße Projekte profitieren von der erhöhten Verfügbarkeit und dem gesteigerten Durchsatz. In diesem Guide behandeln wir die Funktionsweise, verschiedene Algorithmen, Hardware vs. Software Lösungen und praktische Implementierung mit Nginx.

2. Was ist ein Load Balancer?

Ein Load Balancer ist eine Netzwerk-Komponente – Hardware, Software oder Cloud-Service – die eingehende Anfragen empfängt und nach definierten Regeln auf mehrere Backend-Server verteilt. Der Client sieht nur eine Adresse (die des Load Balancers), nicht die Adressen der einzelnen Backend-Server.

Kernfunktionen eines Load Balancers

Hardware vs. Software Load Balancer

Hardware Load Balancer (z.B. F5 BigIP, Citrix NetScaler) sind dedizierte physische Geräte mit extremer Leistung, aber hohen Anschaffungskosten (10.000 EUR+). Software Load Balancer (z.B. Nginx, HAProxy, Traefik) laufen auf Standard-Servern, sind kostenlos/günstig und leicht skalierbar. Für die meisten Unternehmen ist Software die bessere Wahl.

3. Wie funktioniert Load Balancing?

Der Ablauf ist simpel, aber wirkungsvoll:

  1. 1
    Client sendet HTTP-Anfrage Der Client verbindet sich mit der IP oder dem Hostname des Load Balancers – nicht der Backend-Server.
  2. 2
    Load Balancer empfängt Anfrage Der Load Balancer liest die Anfrage und wählt einen Backend-Server basierend auf einem Algorithmus aus.
  3. 3
    Anfrage wird weitergeleitet Der Load Balancer leitet die Anfrage zum ausgewählten Backend-Server weiter – transparent für den Client.
  4. 4
    Backend-Server verarbeitet Der Server verarbeitet die Anfrage normal und sendet die Response zurück an den Load Balancer.
  5. 5
    Load Balancer sendet Response zurück Der Load Balancer leitet die Response an den Client weiter. Der Client sieht nur die Antwort, nicht, von welchem Server sie kam.

Health Checks – So erkennt der Load Balancer Ausfälle

Ein guter Load Balancer prüft regelmäßig (z.B. alle 5 Sekunden), ob die Backend-Server noch erreichbar sind. Das funktioniert durch:

Wenn ein Server 3-5 Checks hintereinander fehlschlägt, wird er aus der Rotation entfernt – neue Anfragen gehen nur noch zu den verbleibenden Servern. Sobald ein Server wieder antwortet, wird er wieder eingebunden.

Session Persistence – Sticky Sessions

Bei manchen Anwendungen ist es wichtig, dass ein Client immer zum gleichen Backend-Server geht – etwa wenn der Session-State lokal auf dem Server gespeichert ist. Der Load Balancer kann "Sticky Sessions" nutzen:

Moderne Best Practice: Sessions sollten in einer zentralen Session-Storage (z.B. Redis) abgelegt werden, nicht lokal auf Servern. Dann ist Sticky Sessions nicht nötig, und Skalierung wird viel einfacher.

4. Load Balancer Algorithmen im Detail

Der Algorithmus bestimmt, welcher Backend-Server für eine neue Anfrage gewählt wird. Jeder hat Vor- und Nachteile:

Algorithmus Funktionsweise Vorteile Nachteile
Round Robin Verteilt Anfragen der Reihe nach auf alle Server Einfach, keine komplexe Konfiguration nötig Berücksichtigt nicht, wie belastet Server sind
Weighted Round Robin Verteilt proportional zu konfigurierten Gewichtungen Macht Server mit unterschiedlicher Hardware besser nutzbar Statisch konfiguriert, nicht dynamisch angepasst
Least Connections Sendet neue Anfragen an den Server mit den wenigsten aktiven Connections Gut bei unterschiedlich langen Request-Zeiten, bessere Last-Verteilung Benötigt höhere CPU beim Load Balancer
Least Response Time Wählt Server basierend auf durchschnittlicher Antwortzeit Sehr fair, optimale Performance für den Client Teuer zu implementieren, viel Overhead beim Tracking
IP Hash Hasht die Client-IP und bestimmt deterministisch einen Server Garantiert Sticky Sessions, deterministische Verteilung Ungleiche Verteilung möglich, Server-Ausfälle stören Hashing
Resource-basiert Prüft verfügbare Ressourcen (CPU, RAM, Bandbreite) auf jedem Server Sehr intelligent, optimal für heterogene Server Komplex, erfordert Agent auf jedem Server

Für die meisten Fälle: "Least Connections" ist ein ausgezeichneter Kompromiss zwischen Einfachheit und Wirksamkeit. "Round Robin" reicht oft aus, wenn alle Server identisch sind.

5. Hardware vs. Software Load Balancer

Welcher Load Balancer passt zu deinem Unternehmen? Hier ist ein Vergleich:

Kriterium Hardware Load Balancer Software Load Balancer
Kosten (Anschaffung) 10.000–100.000 EUR+ Kostenlos
Kosten (Betrieb) Wartung, Support ~2.000 EUR/Jahr Minimal (Standard-Server)
Performance 100.000+ Requests/Sekunde 5.000–50.000 RPS (je nach Hardware)
Skalierbarkeit Einmalige Hardware-Grenze Beliebig skalierbar (mehr Instanzen)
Konfiguration Proprietäre Web-UI Text-Config-Files, Version Control möglich
Hochverfügbarkeit Oft mitgeliefert (Active-Passive) Muss selbst implementiert werden
Einsatzbereich Enterprise, ISPs, Carrier Startups, Mittelstand, Cloud-Infrastruktur
Beispiele F5 BigIP, Citrix NetScaler, Radcom Nginx, HAProxy, Traefik, AWS ELB
Empfehlung für Hosting-Nutzer

Wer einen VPS oder Root-Server mietet, sollte Software Load Balancer wählen. Nginx ist da eine ausgezeichnete Wahl: kostenlos, einfach zu konfigurieren, sehr stabil und performant. Wer Managed Cloud-Hosting nutzt (Hetzner Cloud, DigitalOcean, AWS), haben Load Balancer oft bereits integriert.

6. Load Balancing bei Hosting-Anbietern

Viele Hosting-Provider bieten bereits verwaltete Load Balancer Services an. Hier ein Überblick:

Anbieter LB-Typ Managed? Preis ab Geeignet für
Hetzner Cloud Network Load Balancer (Floating IPs) Manuell konfigurierbar Ab 1,49 EUR/Monat VPS-Cluster, volle Kontrolle
DigitalOcean Managed Load Balancer Vollständig managed 12 USD/Monat Einfache Setups, Layer 7 Balancing
AWS ELB, ALB, NLB Vollständig managed 16 USD/Monat (ALB) Enterprise, komplexe Architekturen
IONOS Cloud Managed Load Balancer Vollständig managed Ab 10 EUR/Monat Deutsche Infrastruktur, DSGVO
Render Integriert (intern) Automatisch Kostenlos mit Services Containerisierte Apps
Nginx/HAProxy (selbst gehostet) Software LB Self-managed Server-Kosten (ab 5 EUR/Monat) Maximale Kontrolle, benutzerdefinierte Setups

Faustregel: Bei hohem Traffic oder Mission-Critical Applications lohnt sich ein Managed Load Balancer. Bei einfachen Web-Apps reicht oft auch Nginx auf einem einzelnen Server als Reverse Proxy.

7. Load Balancer mit Nginx einrichten: Schritt-für-Schritt

Nginx ist eine ausgezeichnete, kostenlose Lösung für Load Balancing. Hier zeigen wir eine praktische Konfiguration:

Schritt 1: Backend-Server definieren

In der Nginx-Konfiguration (/etc/nginx/nginx.conf) definierst du erst die Backend-Server als "Upstream":

upstream backend_servers {
    # Least Connections Algorithmus
    least_conn;

    # Backend-Server hinzufügen
    server 192.168.1.10:80 weight=1;
    server 192.168.1.11:80 weight=1;
    server 192.168.1.12:80 weight=1;

    # Keep-Alive für bessere Performance
    keepalive 32;
}

Schritt 2: Server-Block mit Reverse Proxy

server {
    listen 80;
    server_name example.com www.example.com;

    client_max_body_size 100M;

    location / {
        # Anfragen zum Upstream weiterleiten
        proxy_pass http://backend_servers;

        # Headers bewahren
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Timeout-Einstellungen
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;

        # Buffering
        proxy_buffering on;
        proxy_buffer_size 4k;
        proxy_buffers 8 4k;
    }
}

Schritt 3: Health Checks aktivieren (Nginx Plus)

Hinweis: Health Checks sind in der kostenlos Open-Source-Version von Nginx leider nicht integriert. Mit Nginx Plus (kommerzielle Version) geht es so:

upstream backend_servers {
    least_conn;

    server 192.168.1.10:80 weight=1 max_fails=3 fail_timeout=30s;
    server 192.168.1.11:80 weight=1 max_fails=3 fail_timeout=30s;
    server 192.168.1.12:80 weight=1 max_fails=3 fail_timeout=30s;

    # Health Check
    check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    check_http_send "GET /health HTTP/1.0\r\n\r\n";
    check_http_expect_alive http_2xx;
}

Schritt 4: Nginx neuladen und testen

sudo nginx -t
sudo systemctl reload nginx

Teste den Load Balancer, indem du einen Backend-Server temporary offline nimmst:

sudo systemctl stop nginx  # auf 192.168.1.10

Anfragen sollten automatisch zu den verbleibenden zwei Servern gehen. Wenn du den Server wieder startest, wird er wieder eingebunden.

Sticky Sessions mit Nginx (Cookie-basiert)

Falls du Sticky Sessions brauchst, kannst du einen Cookie-basierten Ansatz mit Map nutzen:

map $cookie_serverid $upstream_server {
    ~^(?P<server>.+)$ $server;
    default "";
}

upstream backend_servers {
    server 192.168.1.10:80;
    server 192.168.1.11:80;
    server 192.168.1.12:80;
}

server {
    listen 80;
    server_name example.com;

    location / {
        set $upstream_server "";

        if ($upstream_server != "") {
            proxy_pass http://$upstream_server;
        }

        if ($upstream_server = "") {
            proxy_pass http://backend_servers;
        }

        add_header Set-Cookie "serverid=$upstream;Path=/";

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

SSL/TLS Offloading

Der Load Balancer terminiert SSL und leitet unverschlüsselt zu Backend-Servern weiter – spart CPU auf den Backends:

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://backend_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

8. Load Balancer für Hochverfügbarkeit (HA-Setup)

Ein Load Balancer ist selbst ein Single Point of Failure. Wenn er ausfällt, ist deine Website offline. Für echte Hochverfügbarkeit brauchst du mehrere Load Balancer mit automatischem Failover.

Active-Passive Konfiguration mit Floating IP

Floating IP ist ein Feature von Hetzner Cloud und DigitalOcean: Eine IP kann schnell zwischen Servern wechseln.

Implementierung mit Keepalived

Keepalived ist ein Linux-Tool für HA-Failover:

sudo apt install keepalived

# Konfiguration auf Primary Server (/etc/keepalived/keepalived.conf)
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.1.200/24  # Floating IP
    }
}

# Auf Secondary Server: priority 99, state BACKUP

Mit dieser Konfiguration übernimmt der Secondary automatisch die Floating IP, wenn der Primary ausfällt.

Active-Active Konfiguration (Advanced)

Mit DNS Round Robin oder Global Load Balancer (z.B. Cloudflare) können mehrere Load Balancer aktiv sein:

Warnung: Komplexität der HA-Konfiguration

HA-Setups sind komplex und erfordern Monitoring, automatisierte Failover-Tests und gut dokumentierte Runbooks. Für kleine Websites lohnt sich der Aufwand oft nicht. Nutze lieber Managed Load Balancer von Providern, die HA bereits integriert haben.

9. Session Management bei Load Balancern

Bei mehreren Backend-Servern muss das Session Management neu überdacht werden. Drei Ansätze:

1. Sticky Sessions (Problematisch)

Sessions liegen lokal auf dem Server. Der Load Balancer stellt sicher, dass der Client immer zum gleichen Server geht. Probleme: Ungleiche Auslastung, wenn ein Server ausfällt, sind Sessions weg.

2. Distributed Session Store (Empfohlen)

Sessions werden in einer zentralen Datenbank (z.B. Redis, Memcached) gespeichert. Alle Server greifen darauf zu – jeder Server kann jede Session bearbeiten.

# Redis-Konfiguration (Redis.conf)
port 6379
bind 0.0.0.0
requirepass dein_starkes_passwort

# PHP-Beispiel (sessions in Redis)
session.save_handler = redis
session.save_path = "tcp://192.168.1.50:6379?auth=passwort"

# Node.js mit connect-redis
const session = require('express-session');
const RedisStore = require('connect-redis').default;
const { createClient } = require('redis');

const redisClient = createClient({ host: '192.168.1.50', port: 6379 });

app.use(session({
    store: new RedisStore({ client: redisClient }),
    secret: 'secret',
    resave: false,
    saveUninitialized: false
}));

3. Stateless Application (Ideal)

Die beste Lösung: Apps speichern keinen State. Alle Daten gehen in eine zentrale Datenbank (MySQL, PostgreSQL). Jeder Server ist austauschbar – perfekt für Auto-Scaling.

Best Practice: JWTs (JSON Web Tokens) für Authentifizierung. Der Token enthält alle nötigen Infos und wird vom Client mit jedem Request mitgesendet – kein Server-seitiger State nötig.

10. Sicherheit und Load Balancer

Load Balancer können Teil deiner Sicherheits-Strategie sein:

DDoS-Schutz Integration

Der Load Balancer sitzt vor deinen Servern und kann einfache DDoS-Angriffe filtern:

Nginx Rate Limiting Beispiel

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

server {
    listen 80;
    server_name example.com;

    location / {
        limit_req zone=one burst=20 nodelay;
        proxy_pass http://backend_servers;
    }
}

WAF Integration (Web Application Firewall)

Moderne Load Balancer können WAF-Rules durchsetzen – etwa gegen SQL Injection, XSS, etc.

SSL/TLS Offloading (Sicherheit + Performance)

Der Load Balancer terminiert alle SSL-Verbindungen (CPU-intensiv). Zu den Backend-Servern kommuniziert er unverschlüsselt über das interne Netzwerk. Spart CPU auf den Backends und zentralisiert Certificate Management.

IP Whitelisting / Blacklisting

geo $country {
    default ZZ;
    ip 192.168.1.0/24 DE;
}

server {
    listen 80;

    # Nur deutsche IPs erlauben
    if ($country != "DE") {
        return 403;
    }

    location / {
        proxy_pass http://backend_servers;
    }
}

11. Monitoring und Auto-Scaling

Ein guter Load Balancer sollte metriken liefern und mit Auto-Scaling integriert sein:

Wichtige Metriken

Monitoring mit Prometheus + Grafana

Nginx-Metriken in Prometheus exportieren:

sudo apt install nginx-module-geoip2 prometheus-nginx-exporter

# Dann in Grafana visualisieren

Auto-Scaling

Bei Cloud-Providern (AWS, DigitalOcean, Hetzner) können Backend-Server automatisch hinzugefügt/entfernt werden:

Scaling Strategy für High Traffic Events

3-5 Backend-Server (Normal)
10-20 Server (Peak Traffic)
60 sek Warm-up Time

12. Fazit: Load Balancer für Zuverlässigkeit und Skalierung

Load Balancer sind nicht mehr nur für große Tech-Companies – sie sind Standard-Infrastruktur für jede Website mit ernsthaftem Traffic. Die Kombination aus erhöhter Verfügbarkeit, besserer Performance und einfacherer Skalierung macht sie unverzichtbar.

Wo anfangen?

Mit Nginx kostenfrei, und nur wenigen Minuten Konfiguration, können auch kleine Websites bereits von Load Balancing profitieren. Moderne Cloud-Provider wie Hetzner und DigitalOcean machen es noch einfacher mit verwalteten Load Balancer Services.

Load Balancer Checkliste
  • Nginx/HAProxy installiert und konfiguriert? ✓
  • Backend-Server im Upstream definiert? ✓
  • Health Checks eingerichtet? ✓
  • SSL/TLS Offloading aktiv? ✓
  • Sessions zentral gespeichert (Redis/DB)? ✓
  • Monitoring und Alerting aktiv? ✓
  • Failover-Scenario getestet? ✓
  • DDoS-Schutz Maßnahmen implementiert? ✓

Hosting mit Load Balancer finden

Vergleiche Cloud-Provider nach Load Balancer Support, Verfügbarkeit und Preis.

Hosting-Provider vergleichen