Wenn Infrastrukturänderungen scheitern: Eine Schritt-für-Schritt-Anleitung zur Wiederherstellung
Die Pipeline ist rot. Ein Terraform Apply, das eigentlich zwei Minuten dauern sollte, läuft seit fünfzehn Minuten. Ihr Monitoring-Dashboard zeigt fünf Ressourcen, die nicht erstellt werden konnten, und die Health Checks des Load Balancers geben 503er zurück. Der Chat-Kanal ist noch ruhig, aber Sie wissen, dass diese Stille nicht von Dauer sein wird.
Das ist der Moment, den jeder Infrastructure Engineer fürchtet. Nicht das Scheitern an sich, sondern die Unsicherheit, die danach kommt: Was tun Sie zuerst? Rollen Sie sofort zurück? Versuchen Sie, den Fehler direkt zu beheben? Und wie wissen Sie, wann alles wieder normal ist?
Der Unterschied zwischen einer kontrollierten Wiederherstellung und einem chaotischen Aktionismus liegt in einem klaren Ablaufplan, den Sie bereits vorbereitet haben. Hier ist eine praktische Anleitung, wie Sie eine Wiederherstellung durchführen, wenn Infrastrukturänderungen schiefgehen.
Schritt 1: Den Fehler bestätigen
Das erste Anzeichen für ein Problem sollte nicht von einer Benutzerbeschwerde kommen. Es sollte von Ihrer Pipeline und Ihren Monitoring-Systemen kommen. Eine gut designte CI/CD-Pipeline für Infrastrukturänderungen enthält Prüfpunkte, die jeden Schritt verifizieren: Wurde die Ressource erfolgreich erstellt? Ist die Konfiguration korrekt? Antwortet der Dienst noch richtig?
So sieht eine typische Fehlerbestätigung in der Praxis aus:
# Terraform Plan Ausgabe auf Fehler prüfen
terraform plan -var-file=production.tfvars
# Beispielausgabe, die einen klaren Fehler zeigt
# Error: Error creating security group: InvalidGroup.Duplicate: The security group 'web-sg' already exists
# on main.tf line 42, in resource "aws_security_group" "web":
# 42: resource "aws_security_group" "web" {
# Pipeline-Logs des fehlgeschlagenen Jobs abrufen
curl -s https://pipeline.internal/api/v1/jobs/12345/logs | tail -50
# Beispiel-Logausschnitt
# [ERROR] Terraform apply failed: Error creating security group: InvalidGroup.Duplicate
# [INFO] Retry attempt 1/3...
# [ERROR] Terraform apply failed: Error creating security group: InvalidGroup.Duplicate
Wenn ein Prüfpunkt fehlschlägt, stoppt die Pipeline und signalisiert, dass etwas nicht stimmt. Aber bevor Sie in den Wiederherstellungsmodus wechseln, nehmen Sie sich einen Moment Zeit, um zu bestätigen, dass der Fehler echt ist. Monitoring-Alarme können aus vielen Gründen ausgelöst werden: ein temporärer Netzwerkfehler, ein Timeout, das sich beim erneuten Versuch auflöst, oder ein False Positive durch einen falsch konfigurierten Health Check.
Was Sie prüfen sollten:
- Sehen Sie sich die Pipeline-Logs an. Ist der Fehler konsistent oder tritt er nur sporadisch auf?
- Prüfen Sie, ob derselbe Vorgang bei manueller Wiederholung erfolgreich ist.
- Verifizieren Sie, dass der Monitoring-Alarm kein bekannter False Positive ist.
Wenn der Fehler bestätigt ist, gehen Sie zum nächsten Schritt über. Handelte es sich um ein vorübergehendes Problem, dokumentieren Sie es und machen Sie weiter. Es ist kein Grund, eine vollständige Wiederherstellung für eine kleine Störung auszulösen.
Schritt 2: Die Wiederherstellungsstrategie festlegen
Hier zahlt es sich aus, einen vorab erstellten Wiederherstellungsplan zu haben. In der Hitze des Gefechts wollen Sie nicht darüber diskutieren, ob Sie zurückrollen, den alten Zustand anwenden oder auf eine Backup-Umgebung umschalten sollen. Diese Entscheidungen sollten bereits dokumentiert und vom Team abgestimmt sein.
Der entscheidende Faktor bei dieser Entscheidung ist die Zeit. Die meisten Wiederherstellungspläne definieren ein Rollback-Fenster: einen Zeitraum nach der Änderung, in dem ein vollständiges Rollback sicher ist. Wenn der Fehler innerhalb von Minuten erkannt wird, ist das Zurücksetzen auf den vorherigen Zustand in der Regel die beste Option. Die Infrastruktur hatte noch keine Zeit, abzuweichen, und abhängige Ressourcen haben sich wahrscheinlich noch nicht an die neue Konfiguration angepasst.
Das folgende Flussdiagramm fasst den Entscheidungsprozess zusammen:
Aber wenn eine Stunde vergangen ist und die Änderung bereits an andere Ressourcen weitergegeben wurde, könnte ein einfaches Rollback mehr Probleme verursachen als es löst. Andere Systeme haben möglicherweise begonnen, von der neuen Konfiguration abhängig zu sein. In diesem Fall ist die bessere Strategie, den alten Zustand vorwärts anzuwenden oder auf eine Standby-Umgebung umzuschalten, die von der fehlgeschlagenen Änderung nie berührt wurde.
Drei gängige Wiederherstellungsstrategien:
- Vollständiges Rollback: Zurück zum exakten vorherigen Zustand mit Ihrem Infrastructure as Code-Tool.
- Zustand erneut anwenden: Die letzte bekannte gute Konfiguration anwenden, ohne andere Änderungen rückgängig zu machen.
- Failover: Datenverkehr auf eine separate Umgebung umleiten, die von der Änderung nicht betroffen war.
Die Entscheidung sollte von Ihrem Wiederherstellungsplan geleitet werden, nicht von Ihrem Bauchgefühl.
Schritt 3: Die Wiederherstellung durchführen
Sobald die Strategie gewählt ist, führen Sie sie genau wie dokumentiert aus. Dies ist nicht die Zeit für Improvisation. Wenn Ihr Plan vorsieht, terraform apply mit einer bestimmten State-Datei auszuführen, dann führen Sie diesen Befehl aus. Versuchen Sie kein anderes Flag oder eine neuere Version des Tools, nur weil Sie denken, dass es schneller sein könnte.
Protokollieren Sie während der Ausführung jede Aktion, die Sie durchführen. Notieren Sie die Zeit, den Befehl, die Ausgabe und jedes unerwartete Verhalten. Diese Logs dienen nicht nur für Post-Mortems. Sie helfen Ihnen, den Überblick zu behalten, falls die Wiederherstellung selbst neue Probleme verursacht.
Wenn die Strategie ein Failover vorsieht, aktivieren Sie den Mechanismus, den Sie vorbereitet haben. Dies kann das Aktualisieren von DNS-Einträgen, das Umschalten von Load-Balancer-Zielen oder das Ändern der Routing-Konfiguration bedeuten. Die genauen Schritte hängen von Ihrer Infrastruktur ab, aber das Prinzip ist dasselbe: Folgen Sie dem Plan, nicht Ihrer Intuition.
Schritt 4: Die Wiederherstellung verifizieren
Die Wiederherstellung ist erst abgeschlossen, wenn Sie verifiziert haben, dass alles wieder normal ist. Gehen Sie nicht davon aus, dass die Infrastruktur gesund ist, nur weil das Terraform Apply erfolgreich war. Gehen Sie nicht davon aus, dass die Anwendung funktioniert, nur weil der Server online ist.
Verifikation bedeutet, mehrere Ebenen zu prüfen:
- Ressourcenzustand: Sind die Infrastrukturressourcen in der erwarteten Konfiguration?
- Dienstzustand: Laufen die Dienste und antworten sie auf Anfragen?
- Anwendungsverhalten: Kann die Anwendung ihre Kernfunktionen ausführen?
- Abhängige Systeme: Sind nachgelagerte Dienste, die auf diese Infrastruktur angewiesen sind, ebenfalls gesund?
Führen Sie dieselben Prüfungen durch, die Ihre Pipeline während eines normalen Deployments durchführen würde. Wenn Sie automatisierte Smoke-Tests haben, führen Sie sie aus. Wenn Sie manuelle Verifikationsschritte haben, befolgen Sie diese. Das Ziel ist Gewissheit, nicht Hoffnung.
Schritt 5: Das Ergebnis kommunizieren
Sobald die Verifikation abgeschlossen ist, informieren Sie den Rest des Teams. Andere Ingenieure warten möglicherweise darauf, dass Ihre Infrastruktur stabilisiert wird, bevor sie ihre eigenen Änderungen deployen. Operations-Teams überwachen möglicherweise dieselben Alarme und fragen sich, ob sie eskalieren müssen.
Eine klare Kommunikation sollte Folgendes enthalten:
- Was schiefgelaufen ist
- Was zur Wiederherstellung getan wurde
- Ob die Wiederherstellung erfolgreich war
- Alle verbleibenden Risiken oder Beobachtungen
Dies verhindert überlappende Änderungen und reduziert Verwirrung. Es hilft auch anderen Teams, ihre Pläne bei Bedarf anzupassen.
Eine praktische Wiederherstellungs-Checkliste
Wenn der Druck groß ist, hilft eine einfache Checkliste, den Fokus zu behalten. Hier ist eine, die Sie an Ihr Team anpassen können:
- Bestätigen Sie, dass der Fehler echt ist (kein vorübergehendes Problem oder False Alarm)
- Prüfen Sie das Rollback-Fenster: Wie lange ist es seit der Änderung her?
- Wählen Sie die Wiederherstellungsstrategie aus dem vorbereiteten Plan
- Führen Sie die Wiederherstellungsschritte genau wie dokumentiert aus
- Protokollieren Sie jede Aktion und ihr Ergebnis
- Verifizieren Sie den Infrastrukturzustand, die Dienstzustand und das Anwendungsverhalten
- Kommunizieren Sie das Ergebnis an das Team
Die eigentliche Arbeit beginnt nach der Wiederherstellung
Die Infrastruktur ist wieder normal. Die Alarme haben sich beruhigt. Das Team kann durchatmen. Aber der Wiederherstellungsprozess ist erst wirklich abgeschlossen, wenn Sie eine Frage beantwortet haben: Warum ist das passiert, und was können wir tun, um es in Zukunft zu verhindern?
Die Auswertung nach der Wiederherstellung ist der Punkt, an dem Sie Ihre Prozesse verbessern. Vielleicht benötigt die Pipeline bessere Pre-Deployment-Checks. Vielleicht hat der Wiederherstellungsplan einen Schritt übersehen. Vielleicht braucht das Team eine klarere Rollback-Fenster-Richtlinie. Was auch immer die Lehre ist, halten Sie sie fest und aktualisieren Sie Ihre Pläne entsprechend.
Eine fehlgeschlagene Infrastrukturänderung ist kein Versagen des Teams. Es ist ein Signal, dass das System verbessert werden muss. Die Teams, die sich gut erholen, sind nicht die, die niemals scheitern. Sie sind diejenigen, die einen klaren, geübten und wiederholbaren Prozess für den Fall haben, dass etwas schiefgeht.