Zero-Downtime Deployments mit Compose: Blue/Green und Traffic Switch

Zero-Downtime Deployments sind in modernen DevOps-Umgebungen essenziell, um neue Versionen von Anwendungen einzuführen, ohne bestehende Nutzer zu unterbrechen. Mit Docker Compose lassen sich solche Deployments umsetzen, indem Blue/Green-Strategien oder Traffic-Switch-Mechanismen genutzt werden, um Container-Stacks nahtlos zu aktualisieren.

1. Grundlagen von Blue/Green Deployments

Bei Blue/Green-Deployments existieren zwei identische Umgebungen: Blue (aktuell live) und Green (neu zu deployen). Der Traffic wird initial zur Blue-Umgebung geleitet, während die Green-Umgebung vorbereitet wird.

  • Neue Versionen werden in der Green-Umgebung gestartet und getestet.
  • Nach erfolgreichem Test erfolgt ein Traffic-Switch, sodass Nutzer nahtlos auf die neue Version zugreifen.
  • Die vorherige Blue-Umgebung dient als Backup für schnelle Rollbacks.

2. Vorbereitung des Compose Stacks

Um Blue/Green effektiv umzusetzen, sollte der Docker Compose Stack modular aufgebaut sein.

Beispielstruktur

version: "3.9"

services:
app_blue:
image: myapp:1.0
ports:
- "8080:80"
networks:
- webnet

app_green:
image: myapp:2.0
ports:
- "8081:80"
networks:
- webnet

networks:
webnet:
driver: bridge

  • Beide Umgebungen laufen parallel auf unterschiedlichen Ports.
  • Netzwerke erlauben Kommunikation zwischen Load-Balancer, App und ggf. Datenbanken.
  • Die Green-Version wird initial nicht im Live-Traffic eingebunden.

3. Traffic Switch Strategien

Der zentrale Punkt ist der kontrollierte Wechsel des Traffics.

Option 1: Load-Balancer Update

# Beispiel für Nginx Reverse Proxy
upstream app {
    server app_blue:80;
    # server app_green:80;  # noch auskommentiert
}

server {
listen 80;
location / {
proxy_pass http://app;
}
}

  • Nach erfolgreichem Test der Green-Version wird der Load-Balancer umkonfiguriert.
  • Die neue Version übernimmt sofort den Traffic, die alte kann gestoppt oder als Backup behalten werden.

Option 2: DNS-Switch

Alternativ kann der Traffic über DNS umgeleitet werden:

  • Blue-Service ist unter app.example.com erreichbar.
  • Green-Service erhält temporär eine Subdomain wie green.app.example.com.
  • Nach Tests wird die DNS-A Record auf die Green-IP gesetzt.

4. Automatisierung mit Compose

Docker Compose selbst bietet keine integrierte Traffic-Switch-Funktion, aber mit Skripten lässt sich der Prozess automatisieren.

Beispiel-Skript

# Stoppe Blue, starte Green
docker-compose up -d app_green
docker-compose stop app_blue
docker-compose rm -f app_blue
  • Vorbereitung: Green-Container hochfahren und Healthchecks bestehen lassen.
  • Traffic-Switch durch Stop/Start oder Load-Balancer-Update.
  • Optional: Alte Blue-Version als Backup erhalten.

5. Healthchecks einbinden

Healthchecks stellen sicher, dass nur gesunde Container Traffic erhalten.

services:
  app_green:
    image: myapp:2.0
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/health"]
      interval: 15s
      timeout: 5s
      retries: 3
  • Erst nach erfolgreichem Healthcheck erfolgt der Traffic-Switch.
  • Verhindert Downtime durch fehlerhafte Deployments.

6. Datenbank-Kompatibilität

Bei Zero-Downtime Deployments müssen Datenbanken berücksichtigt werden:

  • Schema-Migrationen sollten rückwärtskompatibel sein.
  • Für schreibende Anwendungen kann eine kurze Downtime beim Switch nötig sein.
  • Read-Replicas können zum Testen der Green-Version genutzt werden.

7. Rollback-Strategien

Ein wesentlicher Vorteil von Blue/Green ist das einfache Rollback:

  • Wenn Probleme auftreten, wird der Traffic einfach wieder auf Blue umgeleitet.
  • Green kann gestoppt, logs ausgewertet und korrigiert werden.
  • Rollbacks ohne Datenverlust, wenn Migrationen kompatibel gestaltet sind.

8. Logging und Monitoring

Monitoring ist essentiell für sichere Deployments:

  • Healthchecks regelmäßig prüfen.
  • Load-Balancer-Logs für Traffic-Umleitungen auswerten.
  • Alerting bei Fehlern oder erhöhten Latenzen einrichten.

9. Best Practices

  • Getrennte Compose-Services für Blue und Green.
  • Automatisierte Skripte für Traffic-Switch und Rollback.
  • Healthchecks für Readiness und Liveness implementieren.
  • Datenbank-Migrationen rückwärtskompatibel gestalten.
  • Monitoring und Logging aktiv nutzen, um Ausfallzeiten zu erkennen.
  • Dokumentation der Prozesse für Teams bereitstellen.

10. Zusammenfassung

Zero-Downtime Deployments mit Docker Compose lassen sich durch eine klare Trennung von Blue/Green-Umgebungen, kontrollierte Traffic-Switches, Healthchecks und automatisierte Skripte zuverlässig realisieren. Dies minimiert Ausfallzeiten, erlaubt schnelle Rollbacks und sichert stabile Deployments in Produktionsumgebungen.

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