Fullmoon System

The Operations Loop 03 — Failover und Wiederherstellung prüfen

EdwardMoon

Der Maßstab für eine Überprüfung ist nicht, ob sich ein Bildschirm öffnet, sondern ob Daten und Pfade tatsächlich miteinander verbunden sind. Dieser Beitrag dokumentiert die bei der VirtualBox-Praxisübung am 20.09.2026 ausgeführten Aufgaben und Beobachtungsergebnisse. Dabei wird zwischen architektonischen Erwartungen, tatsächlichen Tests und noch nicht durchgeführten Bereichen unterschieden.

Ablauf dieses Beitrags

1. Überprüfungsumgebung und Kriterien für die Beurteilung

Es wurden Rocky Linux 10.2, Zabbix 7.0.30 LTS, NetBox 4.7.1 und AWX 24.6.1 verwendet. Es wurden zwei zentrale VMs sowie Quorum, Gateway, Provision und Proxy/Bastion für drei Umgebungen konfiguriert. Alle VMs teilen sich Arbeitsspeicher, CPU und Speicher eines physischen PCs.

Ein erfolgreiches Onboarding gilt erst dann als bestanden, wenn alle folgenden Schritte erfolgreich sind: PXE-Installation → autorisierter SSH-Pfad → tatsächliche Asset-Erfassung → NetBox-natives IPAM → Zabbix-Registrierung → NetBox-basierte AWX-Inventory-Sync → Überprüfung der tatsächlichen neuesten Werte. Eine API-Registrierungsantwort und der Empfang aktueller Daten sind unterschiedliche Prüfpunkte.

2. Aufzeichnung des tatsächlichen erfolgreichen Onboardings

PROD wurde auf einer leeren 32-GiB-Platte mit einer internen Netzwerkkarte installiert. SSH über den Bastion-Host bestätigte Rocky Linux 10.2, die Management-IP 10.77.20.101/24, SELinux Enforcing und die PXE-Abschlussmarkierung. Anschließend wurde der Speicher von 4 auf 1 GiB reduziert.

Nachweis Beobachtungsergebnis
AWX Workflow 22, erfolgreich
Onboard-Job 23, erfolgreich
NetBox-Inventaraktualisierung 24, erfolgreich
Überprüfungsjob 26, erfolgreich
Git-Commit 58bb87b9842c159b1986784062916c4d9eb97c00
NetBox-Ressource VM-ID 1, fml-prod-app-01
IP-Beziehung VM-Schnittstellen-ID 1 → IP-Adress-ID 1 → primary_ip4 10.77.20.101/24
Erfassungsstatus complete, collection_errors leeres Array
Zabbix hostid 10683, proxyid 1, templateid 10343
Tatsächliche Erfassung system.uptime itemid 50799, state 0, kein Fehler

Der Prüfjob bestätigte den Empfang aktueller tatsächlicher Laufzeitdaten. Erfolgreiche Registrierung und funktionierende Überwachung waren gemeinsam die Abnahmekriterien.

In NetBox wurden 1 vCPU, 954 MiB für den Gast verfügbarer Speicher, 32768 MiB Festplatte, Rocky Linux 10.2, Virtualisierungstyp virtualbox, Verwaltungs-NIC enp0s3, die PROD-Umgebung und die tatsächliche Partitionsstruktur gespeichert. Der beobachtete Speicherwert des Gasts von 954 MiB und der zugewiesene VirtualBox-Wert von 1024 MiB sind unterschiedlich.

Das NetBox-Inventar von AWX erhielt ansible_host=10.77.20.101, ansible_user=labadmin, fml_environment=prod, fml_subnet=20. Es wurden nicht nur die Ressourcennamen synchronisiert, sondern auch die Verwaltungs-IP und die für die Berechnung des Bastion-Pfads erforderlichen Umgebungsvariablen gemeinsam überprüft.

Nach der PXE-Installation auf leerer Platte bestand DEV Workflow 30 mit Registrierung 31, Inventaraktualisierung 32 und Prüfung 34. Überwachungshost 10684 nutzte DEV-Proxy 2 und damit einen von PROD getrennten Pfad.

STG startet automatisch nach Erkennung des Installationsabschlusses

Nachdem die erste SSH-Identität von STG durch den Public Key und den Fingerprint der seriellen VirtualBox-Konsole autorisiert wurde, wurde der Installations-RAM von 4 GiB auf 1 GiB reduziert. Der Installationsabschluss-Controller bestätigte den Autorisierungsschlüssel, das Installationskennzeichen sowie Hostnamen und Maschinen-ID und synchronisierte das SCM- sowie das Bootstrap-Inventar. Danach wurde Job 38 ohne manuellen Workflow-Start begonnen.

STG-Nachweis Ergebnis
Workflow 38 Normaler Betrieb bestätigt
Onboard / inventory / Verify 39 / 40 / 42 alle erfolgreich
Git-Commit 8877198864680095a1a8b5684d3382b9034237e9
NetBox VM 3 → Schnittstelle 3 → IP-Adresse 3, 10.77.40.101/24
Erfassungsstatus complete, leeres Array von collection_errors
Zabbix host 10685, proxy 3, uptime item 51005
Verifizierungsdaten Aktuelle reale Überwachungsdaten empfangen
Controller-Status Entsprechende Machine-ID und Workflow 38 als successful gespeichert

Auch STG lieferte aktuelle reale Überwachungsdaten. AWX enthielt die drei Umgebungshosts mit Management-IP und Umgebungsvariablen. Die erste SSH-Identitätsfreigabe blieb eine Betreiberprüfung; nicht genehmigte Schlüssel wurden nicht umgangen.

3. Gefundene und behobene Probleme bis zum Normalpfad

Ausführung Fehlerpunkt Ursache und Behebung
Workflow 7 / Job 8 Herunterladen der Agent-RPM-Metadaten Fehlende BaseOS/AppStream-Pfade im Minimal-ISO führten zu 404. Auf tatsächliches Minimal-Repository geändert
Workflow 12 / Job 13 Vor der Ausführung lokaler NetBox-API-Jobs Die Berechtigungserhöhungsvariable des Inventars wurde auch auf delegate_to localhost angewendet, wodurch sudo-Aufrufe stattfanden, die in der EE nicht vorhanden sind
Workflow 17 / Job 18 Derselbe lokale Job Unter Berücksichtigung der Auswirkungen bestehender Inventory-Variablen wurden ansible_become=false in den Task-Vars und der EE-Python-Pfad explizit angegeben
Workflow 22 / Jobs 23 und 26 Gesamtablauf Erfolgreiche Registrierung von Assets, IPAM und Überwachung, Inventaraktualisierung sowie Verifizierung der tatsächlichen Erfassung

Fehlgeschlagene Jobs wurden nicht gelöscht. Sie wurden belassen, um Korrektur-Commits mit den Ergebnissen des nächsten Jobs vergleichen zu können. Ein vor der NetBox/Zabbix-Registrierung aufgetretener Fehler wird nicht mit der Situation duplizierter tatsächlicher Assets verwechselt.

4. Backup und Isolationswiederherstellung

Die NetBox-Datenbank wurde mit pg_dump gesichert und mit pg_restore in eine separate Prüfdatenbank eingespielt. Das Asset fml-prod-app-01 und seine Zuordnung zur primären Management-IP blieben erhalten.

Der SHA-256-Hash des Backups lautet 06914eb419d88edb97245ed435177b396309a625b65eb14b72ae9fb627667390. Es wurde eine separate Verifizierungs-DB verwendet, ohne die bestehende DB zu überschreiben. Dieses Ergebnis ist ein Test der logischen NetBox-DB-Wiederherstellung und kein Notfallwiederherstellungstest, bei dem alle VMs, Medien, AWX und Git auf einmal wiederhergestellt werden.

5. Ausfalltest für den zentralen Knoten

Unmittelbar vor dem ersten Test war der PostgreSQL-Leader ops02, ops01 war ein Sync-Standby und die Replikationsverzögerung betrug 0. In Zabbix war ops01 aktiv und ops02 Standby. Der Strom von Maschine 1 wurde gewaltsam abgeschaltet, um einen VM-Stromausfall zu simulieren.

Die VIP 10.77.10.10 wechselte zu Maschine 2. Im Übergangsbereich gab das NetBox-Backend jedoch den Status 500 und die VIP den Status 503 zurück. Zabbix nahm daraufhin aktive Jobs auf Maschine 2 auf und empfing die Verbindungen der drei Proxies. Dieser Test wurde nicht als „erfolgreiches unterbrechungsfreies HA“ eingestuft.

Die erste Logdatei des Beobachtungswerkzeugs wurde aufgrund eines Pfads, der nicht zu den SELinux-Richtlinien passte, nicht erstellt. Daher wird in diesem Test keine präzise RTO berechnet. Nach dem Verschieben des Protokollierungspfads unter /var/log und der Bestätigung der ordnungsgemäßen Aufzeichnung wurde der Test wiederholt.

Anfangs verzögerten Wiederholungsversuche der Cache-Verbindung die NetBox-Wiederherstellung. Nach Prüfung des Konfigurationscodes wurden der lokale Sentinel bevorzugt und Verbindungs- sowie Wiederholungsversuche begrenzt. Danach wurde erneut getestet.

Stromausfall von Maschine 2 nach Behebung von DB, Redis und aktivem Zabbix

Der aktive zentrale Knoten 2 für PostgreSQL, Redis und Zabbix wurde zwangsweise ausgeschaltet. Rollenwechsel und Dienstantworten auf Knoten 1 wurden bestätigt. Vorübergehende Antwortfehler während des Wechsels schließen die Bewertung als unterbrechungsfreies Failover aus.

Posten Ergebnis
PostgreSQL ops01 primary Normaler Betrieb bestätigt
NetBox-API-Abfrage für bestehende Assets Normaler Betrieb bestätigt
Zabbix-API-Antwort Normaler Betrieb bestätigt
AWX-Ping Normaler Betrieb bestätigt
Zabbix-Wert mit Erfassungszeitpunkt nach dem Ausfall Normaler Betrieb bestätigt

Bei ausgeschaltetem Knoten 2 wurde eine Testmarkierung in NetBox geschrieben, gelesen und zurückgesetzt. Asset und Management-IP blieben erhalten; Schreiben über die verbleibende DB funktionierte. Eine wiederhergestellte AWX-Statusantwort beweist keine Kontinuität laufender Jobs.

Nach dem Neustart kehrte Knoten 2 als synchroner PostgreSQL-Standby zurück, und NetBox wurde betriebsbereit. Dienstverfügbarkeit und Wiederherstellung der Reservekapazität wurden getrennt geprüft.

Stromverlust an Host 1 bei aktiven VIP, DB und Zabbix nach Änderung

Auch die Gegenrichtung wurde durch Ausschalten von Knoten 1 getestet. Knoten 2 behielt die gemeinsame Service-IP und DB-Schreibrolle; NetBox-Abfragen und neue Zabbix-Daten wurden wieder verfügbar. Asset-Identität und Management-IP blieben erhalten.

AWX lief nur auf Knoten 1 und war während dessen Ausfall nicht verfügbar. Der Neustart stellte AWX, DB-Replikation und NetBox wieder her. Dies war die Wiederherstellung des ursprünglichen Servers, kein AWX-HA-Erfolg.

Beide Tests beinhalten Timeouts und HTTP 500/503 im Übergangsbereich. Es wird nicht als „unterbrechungsfrei“ bezeichnet. Da sich die Datenbankaktivierungsposition und die Last bei Messungen vor und nach Verbesserungen ähnlicher Tests unterscheiden, darf die Leistungswirkung nicht anhand einfacher Verhältnisse abgeleitet werden.

6. Proxy-Trennung und erneute Übertragung verzögerter Daten

Am Gateway wurde nur TCP 10051 vom PROD-Proxy 10.77.20.10 zum zentralen Netz gesperrt. SSH, lokale Agent-Erfassung und DEV blieben erreichbar. Zentrale PROD-Aktualisierungen stoppten, während DEV weiter erfasste.

Die schreibgeschützte Prüfung der PROD-Proxy-Datenbank bestätigte lokal gespeicherte, zentral noch fehlende Daten. Die Gesamtzahl der Zeilen wurde wegen möglicherweise noch vorhandener bereits versendeter Datensätze nicht als Zahl ungesendeter Daten gewertet.

Die temporäre Sperrregel blieb trotz Ablaufkonfiguration bestehen. Sie wurde ausdrücklich entfernt und die Verbindung geprüft. Weitere Tests kontrollieren die tatsächliche Regelentfernung statt allein den Timer.

Nach Wiederkehr der Verbindung wurden gepufferte Daten in ursprünglicher Reihenfolge und mit ursprünglichem Erfassungsabstand zentral übernommen. Aktuelle Werte wurden wieder aktualisiert. Langzeitaufbewahrung, voller Datenträger und Ausfall der Proxy-VM bleiben separate Prüfungen.

7. Schutz von Asset-Daten und Pfadüberprüfung

Basierend auf den tatsächlichen PROD-Erfassungsergebnissen wurde dieselbe NetBox-Registrierung erneut ausgeführt. Die VM-ID 1 und die IPAddress-ID 1 wurden beibehalten, und derselbe Name sowie dieselbe Adresse existierten jeweils nur einmal. Es wurde zwischen der Aktualisierung des Erfassungszeitpunkts und der Erstellung doppelter Assets unterschieden.

Eingefügte Bedingung / tatsächlicher Pfad Beurteilung
Übertragung der DEV-Management-IP an ein PROD-Asset Ablehnung vor API-Änderung, Mutation 0
Übertragung einer Machine-ID, die sich von dem bestehenden Asset unterscheidet Ablehnung vor API-Änderung, Mutation 0
Übertragung einer IP, die bereits für ein Asset mit anderem Namen verwendet wird Ablehnung vor Erstellung des neuen Assets, Mutation 0
Explizite Einspeisung von Fehlschlägen bei der Erfassung von CPU, Festplatte und Netzwerk Beibehaltung der bestehenden CPU-, Partition- und Produktfelder, Kennzeichnung als partiell
Erneute Anwendung des ordnungsgemäßen Erfassungsergebnisses Wiederherstellung des Status „vollständig“
Produktprozesse in einem anderen Mount-Namespace Kein Aufruf der Versions-Ausführungsdatei bzw. der JAR-Abfrage des Hosts
Zentral → Direkte SSH zum PROD-Ziel Abgelehnt
Zentral → SSH über Bastion jeder Umgebung Zulässig
PROD → DEV SSH Abgelehnt
PROD → Extern 1.1.1.1:443 Abgelehnt
PROD → Lokaler Proxy und internes RPM-Repository Zulässig

Der teilweise Erfassungsfehler ist eine für Testzwecke erstellte Eingabe und wird nicht als realer Fall eines Festplattenausfalls vorgestellt. Ablehnungsbedingungen werden zuerst geprüft und dann geändert. Bei Situationen, in denen nur einige APIs erfolgreich waren, werden erfolgreiche Objekte nicht bedingungslos gelöscht, sondern können zu einer erneuten Ausführung führen.

8. Installation auf Zielen ohne Internet und Paketüberprüfung

Das PXE-Ziel verfügt nur über eine interne Netzwerk-NIC und keine NAT- oder Bridge-NIC. Das Betriebssystem wurde vom Rocky 10.2 Minimal-Installationsbaum von Provision bezogen. Nachdem der Agent-RPM-Cache von PROD geleert wurde, wurden nur zwei interne Repositorys aktiviert und zabbix-agent2 7.0.30 wurde neu installiert. Der tatsächliche Download von 6.4 MB, die GPG-Überprüfung und der aktive Dienst wurden bestätigt.

NetBox HTTPS mit interner Repo-Metadaten- und CA-Überprüfung gab auf demselben Ziel mit verbindungseingeschränktem Externbereich den Status 200 zurück. Eine vollständige Neuinstallation der gesamten Zentrale in einem neuen isolierten Netzwerk liegt außerhalb des Rahmens. Was diesmal verifiziert wurde, ist die Betriebssysteminstallation, das Agenten-Deployment und die interne API-Integration für Ziele ohne Internetzugang.

9. Überprüfung der Architekturanzeige

Bildschirm/Funktion Ergebnis
Vollbild 1920×1080 Zentraler Dienst, 12 Knoten in drei Umgebungen, Registerkarten, Beschreibungen und unterer Fluss werden auf dem Bildschirm angezeigt
An die Bildschirmgröße angepasster Skalierungsfaktor graph-scroll client 1590×740, scroll 1590×740. Kein Abschneiden bei Standardskalierung
Inhaltsbreite 784px Gesamtstruktur wird angezeigt, nur das Beschreibungspanel scrollt unabhängig
Mobil 390×844 Kein horizontales Überlaufen des Haupttexts, kleine Komponenten ebenfalls im unteren Beschreibungsbereich platziert
Gesamt/Automatisierung/Überwachung/Ausfall Registerkarten und NetBox-IPAM-Schritte überprüfen, Erklärungen zu Witness/NFS-Ausfällen anzeigen
Vergrößern/Zurücksetzen 125% Vergrößerung, Gesamtansicht 100%, Ein- und Austritt in den Vollbildmodus bestätigen
Browser-Fehler Keine Konsolenfehler erfasst

Der Ausfallstatus und die Ablaufwiedergabe der Architektur dienen Erklärungszwecken. Es handelt sich hierbei um kein Betriebsdashboard zum Senden von Befehlen an Server oder zum Anzeigen des tatsächlichen Status.

10. Verifizierungs-Checkliste und Grenzen

Prüfpunkt Ergebnis/Begründung
Tatsächliche Rocky-Installation / SELinux Enforcing Tatsächliche Gastüberprüfung für PROD·DEV·STG
NetBox-Detailfelder·IPAM·Primary-IP Überprüfung der tatsächlichen Beziehungen zwischen Asset, Schnittstelle und IPAddress
NetBox-basiertes AWX-Inventory Überprüfung von Quellaktualisierung und Verbindungsvariablen des Workflows
Tatsächliche Daten nach Registrierung der Zabbix-API Überprüfung von Uptime und Lastclock für PROD·DEV·STG
Erkennung des Installationsendes → Automatischer AWX-Start Automatischer Start und Erfolg von STG Workflow 38 nach Bestätigung der Freigabe-Identität
Erneute Asset-Ausführung, Adresskonflikt, Änderung der Kennung Keine Duplikate, Ablehnung vor Änderung bei Konflikteingabe
Beibehaltung von Altlasten bei teilweisem Sammelfehler Wiederherstellung zur normalen Beobachtung nach Bestehen des Injektionstests
Stromverlust des zentralen aktiven Knotens DB-Hochstufung, API-Wiederaufnahme, neue Überwachungsdaten, Schreibvorgang bestätigt
Rückkehr des ausgefallenen Knotens PostgreSQL Sync Standby, Verzögerung 0, App fehlerfrei
Unterbrechung der Proxy-Übertragung SQLite-Speicherung und Bestätigung des zentralen Verlauf-Backfills
Umgebungskommunikation eingeschränkt / Bastion-Pfad Verbindungsüberprüfung nach erlaubten und abgelehnten Pfaden
Interne RPM-Downloads / Signatur Erfolgreicher echter Re-Download und Re-Installation nach Leeren des Caches
Logische DB-Sicherung und -Wiederherstellung von NetBox Überprüfung gleicher Asset- und IP-Referenzen in einer separaten DB
Gesamter Bildschirm und mobile Architektur FHD 1920×1080, Fließtext 784px, Mobil 390px überprüft
Physischer Server UEFI/BMC/RAID Nicht ausgeführt
Neugestaltung des gesamten zentralen isolierten Netzwerks Verfahrensverfassung, Test der vollständigen Neuinstallation nicht ausgeführt
Eigenständiger Ausfall von NFS, Quorum, Gateway, Proxy VM Auswirkungsanalyse, entsprechende Fehlerinjektion nicht ausgeführt
Notfallwiederherstellung des Gesamtsystems, Last- und Langzeitausdauertests Nicht ausgeführt

Es gilt nicht als durch diese VM-Übung verifiziert, UEFI-PXE physischer Server, BMC- und RAID-Automatisierung, Ausfälle zwischen zwei physischen Hosts, vollständiger Speicherausfall oder die Erkennung aller kommerziellen DB/WAS-Produktversionen durchgeführt zu haben. Die Implementierung jeder Funktion und der tatsächliche Testumfang werden getrennt voneinander betrachtet.

Es wird auch zwischen der Online-Erstinstallation und der Installation sowie Agentenbereitstellung für Ziele ohne Internet unterschieden. Der Test zur Neuinstallation des gesamten zentralen Bereichs von Grund auf in einem neuen isolierten Netzwerk muss auch die Überprüfung der Abhängigkeiten des Importpakets umfassen. Dies wird nicht durch das Ergebnis ersetzt, bei einem bestehenden Dienst lediglich die externe NIC zu trennen.

Die in dieser Übung bestanden Punkte und die nächsten Verifizierungsaufgaben wurden in derselben Tabelle festgehalten. Die Ergebnisse eines einzelnen PCs dürfen nicht als Betriebs-SLA oder Garantie für Datenverlustfreiheit bei allen Ausfällen dargestellt werden.

Weiterführende Lektüre und Konfigurationsmaterialien

Portfolio-Original · Leitfaden zum Aufbau von Online- und isolierten Netzwerken · Fehlerszenarien und Verifizierungsprotokolle

ZIP mit Übungskonfiguration und Automatisierungsquellcode · ZIP SHA-256

Das öffentliche ZIP enthält Konfigurationsvorlagen und Automatisierungsquellcode. Betriebssysteme, RPMs, Container-Images und Anmeldeinformationen sind nicht enthalten. Die Anwendung erfolgt nach der Konfiguration mit eigenen Adressen, öffentlichen CAs, autorisierten SSH-Schlüsseln und Geheimhaltungsspeichern.