Proxmox über NUT mit der USV eines Synology-NAS verbinden
Den NUT-Server von DSM nutzen, um virtuelle Maschinen und den Proxmox-Host nach einem Stromausfall sauber herunterzufahren.
Meine USV ist per USB mit dem Synology-NAS verbunden. Dasselbe Kabel lässt sich nicht mit dem Proxmox-Host auf einem Aoostar WTR PRO teilen, deshalb dient DSM als Vermittler: Es liest den Zustand der USV aus und veröffentlicht ihn per NUT im Netzwerk. So erkennt Proxmox einen Stromausfall und fährt seine virtuellen Maschinen, seine Container und schließlich den Host sauber herunter.
Bevor Sie beginnen
- Vergeben Sie feste IP-Adressen oder DHCP-Reservierungen für das NAS und für Proxmox.
- Schließen Sie das NAS, den Proxmox-Host und den verbindenden Switch an die abgesicherten Steckdosen der USV an. Ohne Netzwerk während des Ausfalls erreicht die NUT-Meldung Proxmox nie.
- Prüfen Sie, dass DSM die USV erkennt und dass sie genug Laufzeit für das vollständige Herunterfahren bietet.
- Legen Sie in Proxmox Reihenfolge und Wartezeiten für das Herunterfahren der Gäste fest. Installieren und aktivieren Sie bei virtuellen Maschinen den QEMU Guest Agent, sofern das Gastsystem es zulässt.
- Führen Sie die folgenden Befehle in einer
root-Shell auf dem Proxmox-Host aus.
1. Den USV-Server in DSM aktivieren
Öffnen Sie Systemsteuerung → Hardware und Energie → USV. Aktivieren Sie die USV-Unterstützung und danach Netzwerk-USV-Server aktivieren. Fügen Sie unter Zulässige Synology-NAS-Geräte die IP-Adresse von Proxmox hinzu — in diesem Beispiel 192.168.68.24 — und übernehmen Sie die Änderungen.
Der NUT-Server von DSM darf nur aus dem vertrauenswürdigen lokalen Netz erreichbar sein. Trennt eine Firewall das NAS von Proxmox, geben Sie ausschließlich den TCP-Port 3493 von der Adresse des Proxmox-Hosts frei. Veröffentlichen Sie diesen Port niemals im Internet.
2. NUT auf Proxmox installieren
Installieren Sie den NUT-Client aus den Debian-Paketquellen, die Proxmox verwendet:
apt update && apt install nut -y
Legen Sie in /etc/nut/nut.conf fest, dass diese Maschine nur Client eines entfernten NUT-Servers ist:
MODE=netclient
3. Die entfernte USV eintragen
Öffnen Sie /etc/nut/upsmon.conf und ergänzen oder ändern Sie die folgenden Zeilen:
MONITOR ups@192.168.68.10 1 monuser secret secondary
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h now"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
NOTIFYCMD /usr/sbin/upssched
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG ONLINE SYSLOG+EXEC
ups, monuser und secret entsprechen den Werten, die der NUT-Server von DSM üblicherweise bereitstellt. Sie ersetzen die Beschränkung nach IP-Adresse nicht. Moderne NUT-Versionen nutzen die Rolle secondary; lehnt ein älteres Paket dieses Wort ab, verwenden Sie den früheren Alias slave.
4. Das Herunterfahren nach 60 Sekunden auslösen
Legen Sie /etc/nut/upssched.conf an:
CMDSCRIPT /etc/nut/upssched-cmd
PIPEFN /run/nut/upssched.pipe
LOCKFN /run/nut/upssched.lock
AT ONBATT * START-TIMER shutdown-now 60
AT ONLINE * CANCEL-TIMER shutdown-now online
Das Verzeichnis /run/nut wird normalerweise vom Paket angelegt. Fehlt es, erstellen Sie es mit eingeschränkten Rechten:
install -d -o nut -g nut -m 0750 /run/nut
Legen Sie anschließend das Skript /etc/nut/upssched-cmd an:
#!/bin/sh
case "$1" in
shutdown-now)
logger -t upssched-cmd "UPS on battery for 60 seconds - initiating shutdown"
/usr/sbin/upsmon -c fsd
;;
online)
logger -t upssched-cmd "UPS back online - canceling shutdown"
;;
*)
logger -t upssched-cmd "Unknown command: $1"
;;
esac
Machen Sie das Skript ausführbar. Die Konfigurationsdateien dürfen nur vom Administrator geändert werden können:
chown root:nut /etc/nut/upsmon.conf /etc/nut/upssched.conf /etc/nut/upssched-cmd
chmod 750 /etc/nut/upssched-cmd
chmod 640 /etc/nut/upsmon.conf /etc/nut/upssched.conf
Der Wert 60 übernimmt die im Ursprungsartikel getestete Konfiguration. Erhöhen Sie ihn, wenn Ihre Gäste mehr Zeit brauchen, und lassen Sie dabei genügend Reserve, bevor die Batterie leer ist.
5. Den Monitor starten und die Verbindung prüfen
systemctl enable nut-monitor
systemctl restart nut-monitor
systemctl status nut-monitor
Fragen Sie danach die von DSM bereitgestellte USV direkt ab:
upsc ups@192.168.68.10
Um nur den Zustand und die geschätzte Laufzeit zu sehen:
upsc ups@192.168.68.10 2>&1 | grep -E '^(ups.status|battery.runtime)'
OLsteht für On Line: Netzstrom liegt an.OBsteht für On Battery: Die USV läuft im Batteriebetrieb.LBsteht für Low Battery: Die Batterie ist schwach.
Was bei einem Ausfall geschieht
- DSM erkennt den Wegfall des Netzstroms und veröffentlicht den Zustand
OB. upsmonempfängt das EreignisONBATTund lässtupsschedeinen Zeitgeber über 60 Sekunden starten.- Kehrt der Strom vorher zurück, bricht das Ereignis
ONLINEden Zeitgeber ab. - Dauert der Ausfall an, ruft das Skript
upsmon -c fsdauf. Proxmox fährt dann die Gäste und anschließend den Host gemäß den eingestellten Wartezeiten herunter.
Ohne böse Überraschungen testen
Verfolgen Sie zunächst das Protokoll in einem zweiten Terminal:
journalctl -u nut-monitor -f
Ziehen Sie danach die Netzzuleitung der USV ab, niemals die Geräte an ihren abgesicherten Steckdosen. Prüfen Sie, dass der Zustand auf OB wechselt. Neuere NUT-Versionen erlauben es außerdem, den wartenden Zeitgeber aufzulisten:
/usr/sbin/upssched -l
Stecken Sie beim ersten Versuch die Netzzuleitung vor Ablauf der 60 Sekunden wieder ein und bestätigen Sie den Abbruch im Protokoll. Planen Sie danach eine echte Simulation in einem Wartungsfenster, um das vollständige Herunterfahren der virtuellen Maschinen, der Container und des Hosts zu prüfen. Der Befehl upsmon -c fsd löst die Abschaltsequenz tatsächlich aus: Führen Sie ihn auf einem Produktivserver nicht ohne geplantes Fenster aus.
Schnelle Fehlersuche
- Connection refused oder Zeitüberschreitung: Prüfen Sie die Adresse des NAS, den Netzwerk-USV-Server in DSM, den TCP-Port 3493 und die Firewall.
- Access denied: Prüfen Sie, ob die Adresse von Proxmox wirklich zu den zugelassenen Geräten gehört und ob die Zeile
MONITORdie von DSM erwarteten Werte verwendet. - Der Zeitgeber startet nicht: Prüfen Sie die beiden
NOTIFYFLAG-Zeilen mitEXEC, die Pfade vonPIPEFN/LOCKFNund die Rechte auf/run/nut. - Der Host fährt herunter, die virtuellen Maschinen aber nicht: Überprüfen Sie die Abschaltreihenfolge, die Wartezeiten in Proxmox und den QEMU Guest Agent im jeweiligen Gast.
Fazit
Dieser Aufbau erspart eine zweite USV oder das physische Teilen des USB-Kabels. Das NAS bleibt der NUT-Server, Proxmox wird zum Netzwerk-Client, und ein kurzer Ausfall unterbricht dank der 60 Sekunden Wartezeit nichts. Entscheidend bleibt der echte Test: Das Netzwerk muss mit Strom versorgt bleiben und alle Gäste müssen herunterfahren, bevor die Batterie leer ist.
Diskussion
Kommentare
Noch kein Kommentar. Eröffnen Sie die Diskussion gern mit einer Frage oder Ihrem eigenen Erfahrungsbericht.
Die Anmeldung hält den Austausch frei von Spam und verhindert, dass Ihre E-Mail-Adresse veröffentlicht wird.
Zum Kommentieren anmelden →