Reverse Proxy HA: Nginx/Traefik redundant in Compose betreiben

In produktiven Container-Umgebungen ist ein hochverfügbarer Reverse Proxy entscheidend, um eingehenden Traffic zuverlässig an die jeweiligen Services zu verteilen. Nginx und Traefik sind bewährte Lösungen, die sich mit Docker Compose redundant betreiben lassen. In diesem Artikel lernen Sie praxisnah, wie man Reverse Proxy Instanzen hochverfügbar gestaltet, VIPs einsetzt, Healthchecks implementiert und Failover ohne Orchestrator realisiert.

1. Grundlagen des Reverse Proxy HA

Ein Reverse Proxy agiert als Vermittler zwischen Clients und Backend-Services. Für hohe Verfügbarkeit ist es notwendig, mehrere Proxy-Instanzen parallel zu betreiben, sodass ein Ausfall einer Instanz nicht zu einem Serviceunterbruch führt.

Wichtige Konzepte

  • VIP (Virtual IP): Eine IP-Adresse, die Clients verwenden, unabhängig davon, welche Instanz aktuell aktiv ist.
  • Master/Backup: Rollen innerhalb des HA-Setups, typischerweise durch Keepalived gesteuert.
  • Healthchecks: Automatisches Erkennen von Proxy-Ausfällen.
  • Failover: Automatische Umschaltung der VIP auf die Backup-Instanz.

2. Keepalived für Reverse Proxy HA

Keepalived ermöglicht die Zuweisung einer VIP an die aktive Proxy-Instanz und sorgt für automatische Failover. Dies ist besonders relevant, wenn Compose-Stacks ohne Swarm oder Kubernetes betrieben werden.

Beispielkonfiguration Nginx HA

vrrp_instance VI_NGINX {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass secret123
    }
    virtual_ipaddress {
        10.0.0.100
    }
}

Auf dem Backup-Host wird state BACKUP gesetzt und priority z. B. auf 90 reduziert.

3. Docker Compose Setup

Die Compose-Datei enthält identische Proxy-Services auf allen Hosts. VIPs werden auf Host-Ebene gebunden, während die Container über das interne Netzwerk kommunizieren.

Beispiel docker-compose.yml für Nginx HA

version: "3.8"

services:
nginx:
image: nginx:stable
container_name: nginx
networks:
- webnet
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf:/etc/nginx/conf.d:ro
- ./nginx/certs:/etc/ssl/certs:ro
restart: unless-stopped
networks:
webnet:
driver: bridge

4. Healthchecks für Proxy-Instanzen

Healthchecks sichern, dass die VIP nur auf einem gesunden Proxy bleibt. Keepalived kann externe Skripte nutzen, um z. B. HTTP-Statuscodes zu prüfen.

Healthcheck-Script Beispiel

vrrp_script chk_nginx {
    script "/usr/local/bin/check_nginx.sh"
    interval 2
    weight 2
}

vrrp_instance VI_NGINX {
...
track_script {
chk_nginx
}
}

Das Script check_nginx.sh prüft beispielsweise curl -f http://localhost/ und liefert einen Exit-Code, der den Status an Keepalived meldet.

5. Traefik HA

Traefik als dynamischer Reverse Proxy unterstützt ebenfalls HA. In Verbindung mit Keepalived oder VRRP kann die VIP für Traefik-Instanzen bereitgestellt werden.

Compose Beispiel Traefik HA

services:
  traefik:
    image: traefik:v2.10
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
      - webnet

6. Failover Szenarien testen

Um sicherzustellen, dass die HA-Strategie funktioniert, sollten verschiedene Szenarien simuliert werden:

  • Master-Proxy stoppen und VIP Umschaltung auf Backup prüfen.
  • Healthcheck-Fehler simulieren und Failover beobachten.
  • Netzwerkpartitionen und Split-Brain-Situationen testen.

7. Monitoring und Logging

Logs von Keepalived und dem Reverse Proxy sollten zentral gesammelt werden, um Failover-Ereignisse zu überwachen:

/var/log/syslog
/var/log/messages
nginx/access.log
nginx/error.log

Optional können Alerts über Slack, Prometheus oder ELK-Stack eingerichtet werden.

8. Best Practices

  • Immer mindestens zwei Proxy-Instanzen für kritische Dienste.
  • Healthchecks auf Anwendungsebene einrichten.
  • Prioritäten konsistent definieren, Master/Backup testen.
  • Monitoring und Logging implementieren.
  • Für Multi-Service Setups separate VIPs verwenden.
  • Failover und Split-Brain Szenarien regelmäßig testen.

9. Zusammenfassung

Mit Keepalived und VRRP können Nginx oder Traefik in Compose-Umgebungen redundant betrieben werden. Durch Healthchecks, Multi-VIP-Instanzen und konsequentes Monitoring lassen sich Ausfälle minimieren und die Verfügbarkeit für Clients maximieren. Dieses Setup eignet sich besonders für kleine Cluster, Homelabs oder produktive Umgebungen ohne Swarm/Kubernetes.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles