Kann ein Home-Server Dienste nach der Wiederherstellung der USV in Abhängigkeitsreihenfolge fortsetzen?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Ja, aber nur, wenn der Abhängigkeitsgraph explizit definiert ist. Ein Server kann sich nach der Wiederherstellung der USV-Versorgung automatisch einschalten, während Anwendungen weiterhin fehlschlagen, weil Speicher, DNS, Datenbanken oder Netzwerke noch nicht bereit sind.

Die Startreihenfolge von Prozessen ist nicht dasselbe wie die Bereitschaft von Diensten. Verwenden Sie systemd-Abhängigkeiten für Ressourcen auf Hostebene und Zustandsprüfungen für Container und Anwendungen. Diese Unterscheidung bestimmt die sichere Konfiguration, die Validierungsmethode und den Rollback-Punkt.

Erstellen Sie den Abhängigkeitsgraphen, bevor Sie ihn automatisieren

Listen Sie die Kette von Stromversorgung und Netzwerk über verschlüsselte Datenträger, NAS-Mounts, die Container-Laufzeitumgebung, Datenbanken, Anwendungsdienste und den Reverse-Proxy auf. Kennzeichnen Sie, welche Abhängigkeiten lokal sind und welche auf einem anderen Server liegen.

Geben Sie jeder zustandsbehafteten Abhängigkeit ein Bereitschaftssignal: einen eingebundenen Pfad, eine Datenbankabfrage, eine DNS-Abfrage oder einen Zustandsendpunkt der Anwendung. Vermeiden Sie feste Wartezeiten, da sich die Wiederherstellungsdauer nach einem unsauberen Herunterfahren ändert.

Definieren Sie einen begrenzten Fehlerzustand, damit ein fehlendes NAS nicht dazu führt, dass eine Anwendung in ein leeres lokales Verzeichnis schreibt.

Koordinieren Sie jede Steuerungsebene

Verwenden Sie die Beziehungen `After=` und `RequiresMountsFor=` von systemd für Hostdienste und Remote-Mounts. Lassen Sie die Unit des Container-Stacks von Docker und den erforderlichen Mount-Units abhängen.

Fügen Sie in Compose echte Zustandsprüfungen hinzu und verwenden Sie, sofern unterstützt, `depends_on` mit `condition: service_healthy`. Anwendungen sollten Datenbankverbindungen trotzdem erneut versuchen, da Abhängigkeiten auch nach dem Start ausfallen können.

Verwenden Sie die folgende Tabelle, um jede Abhängigkeit der Ebene zuzuordnen, die sie tatsächlich überwachen kann.

Überwachter Zustand Bewertung Nächste Aktion
Datenträger- und NAS-Mounts systemd-Mount-Abhängigkeiten Zustandsbehaftete Dienste blockieren
Datenbank für Abfragen bereit Container-Zustandsprüfung Anwendungen blockieren
Externe Anwendung erreichbar Erneuter Anwendungsversuch plus Überwachung Keine feste Wartezeit verwenden

Planen Sie die Wiederherstellung über zwei Server hinweg

Starten Sie zuerst den Speicher- oder Infrastrukturserver und warten Sie anschließend, bis exportierte Freigaben und Datenbanken ihren gesunden Zustand erreicht haben, bevor Sie die Anwendungsdienste auf dem zweiten Host freigeben. Die USV-Software sollte nicht einfach beide Hosts gleichzeitig einschalten.

Der ZimaSpace-Artikel zu USV-Signalen und virtuellen Maschinen zeigt, warum sich die Steuerungskette über mehrere Ebenen erstreckt.

Ein unabhängiger Leitfaden zu systemd und Compose erklärt Wettläufe bei der Start- und Herunterfahrreihenfolge.

Halten Sie für den Fall, dass die Automatisierung an einer fehlgeschlagenen Zustandsprüfung stoppt, ein manuelles Kaltstart-Runbook bereit. Es sollte die Prüfung, das erwartete Timeout, den sicheren Wiederholungsversuch und die zuständige Person für jeden Dienst nennen.

Testen Sie den vollständigen Wiederherstellungszustand der USV

Führen Sie ein kontrolliertes Herunterfahren im Batteriebetrieb durch, stellen Sie die Netzversorgung wieder her und erfassen Sie Zeitstempel für den Hoststart, die Mount-Bereitschaft, den Datenbankzustand, den Anwendungszustand und die Verfügbarkeit des Proxys.

Wiederholen Sie den Test mit einem verzögert verfügbaren NAS und mit einer Datenbankwiederherstellung, die länger als gewöhnlich dauert. Dienste sollten warten oder sichtbar fehlschlagen, anstatt mit fehlendem Zustand zu starten.

Fahren Sie fort, wenn sowohl die normale als auch die verzögerte Wiederherstellung Reihenfolge und Datenpfade beibehalten. Stoppen Sie, wenn Neustartrichtlinien die Bereitschaft umgehen, Anwendungen in Ausweichverzeichnisse schreiben oder eine Abhängigkeit kein messbares Zustandssignal besitzt.

Support & Tipps

Mehr zum Lesen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.