Zum Hauptinhalt springen
Version: 5.6

Redundanz Failover mit Traefik

Was ist Traefik?

Traefik ist ein moderner, quelloffener Reverse Proxy und Lastverteiler für microservice-orientierte Architekturen. Er unterstützt mehrere Backends wie Docker und Kubernetes, bietet automatische Diensterkennung, SSL/TLS-Verschlüsselung und einfache Verwaltung über ein Dashboard oder eine API.

Es gibt mehrere Möglichkeiten, Traefik zu konfigurieren, da unterschiedliche Provider verwendet werden können, zum Beispiel Dateien oder Docker.

Im Folgenden wird zunächst die Konfiguration von Traefik mit Dateien beschrieben, da diese Variante allgemein einsetzbar ist. Anschließend zeigt ein Beispiel, wie Traefik in Docker Compose konfiguriert werden kann.

hinweis

Auch Traefik ersetzt nicht die interne OPC-Router-Redundanz. Die Traefik-Konfiguration nutzt nur die bereitgestellten Health-Endpunkte, um Anfragen an den aktuell aktiven OPC Router weiterzuleiten.

Konfiguration von Failover mit Dateien

Die allgemeine Grundkonfiguration von Traefik für die Verwendung von Konfigurationsdateien kann zum Beispiel so aussehen. In diesem Beispiel werden alle Konfigurationsdateien aus dem Ordner /etc/traefik/traefik_configs geladen.

traefik.yaml
api:
dashboard: true
insecure: true

ping: {}

providers:
file:
# Legt fest, in welchem Verzeichnis die Konfigurationsdateien liegen.
directory: /etc/traefik/traefik_configs

entryPoints:
web:
address: ":80"

warnung

Die Einstellung insecure: true ist hier nur für ein einfaches Beispiel mit lokalem Zugriff gedacht. In produktiven Umgebungen sollte das Traefik-Dashboard nicht ungeschützt veröffentlicht, sondern nur abgesichert oder vollständig deaktiviert werden.

Eine mögliche Konfigurationsdatei für das Failover eines OPC-Router-Redundanzpaares könnte so aussehen. Diese Datei muss im konfigurierten Verzeichnis für Konfigurationsdateien liegen.

redundancy_failover.yaml
http:
routers:
api-router:
# Reagiert auf den Präfix /api
rule: "PathPrefix(`/api`)"
# Sendet Anfragen an opcrouter-service
service: opcrouter-service
entryPoints:
- web
middlewares:
- api-rewrite

middlewares:
api-rewrite:
# Ersetzt /api/ durch /services/MyRestServer/api/
replacePathRegex:
regex: "^/api/(.*)"
replacement: "/services/MyRestServer/api/$1"

services:
opcrouter-service:
loadBalancer:
# Server des Redundanzpaares
servers:
- url: "http://opcrouter-primary:8080"
- url: "http://opcrouter-secondary:8080"
# Sendet Anfragen an den angegebenen Pfad, um die Verfügbarkeit zu testen
healthCheck:
path: "/health/runtime/ready"
interval: "5s"
timeout: "2s"