Diese Anleitung beschreibt die Anbindung und das automatische herunterfahren der VMs und des Hosts bei Stromausfall.

Diese Anleitung gilt aktuell nur für einen einzelnen Proxmox Host und nicht für einen Cluster.
Wie man einen Proxmox-Cluster konfiguriert habe ich in diesem Beitrag beschrieben:

apcpusd funktioniert auch mit USV-Geräten anderer Hersteller.
Dieses Tutorial wurde mit den folgenden USV-Geräten getestet:
– APC SmartUPS 1500
– Eaton USV Ellipse ECO 650 USB DIN
– APC Back-UPS 500VA

Die USV muss per USB direkt mit dem Proxmox-Host verbunden sein.

Das Tool apcupsd auf dem Proxmox-Host installieren.

apt update
apt install apcupsd

Die erste Konfigurationsdatei wie folgt anpassen:

nano /etc/apcupsd/apcupsd.conf
-------------------------------
UPSNAME APC-USV
UPSCABLE usb
UPSTYPE usb
DEVICE /dev/usb/hiddev0

# Shutdown settings
TIMEOUT 300                # Maximale Zeit in Sekunden, bevor ein Shutdown erzwungen wird (0 = deaktiviert)
KILLDELAY 0               # Zeit in Sekunden, bevor die USV nach dem Shutdown abgeschaltet wird

Nun ein Shutdown-Script erstellen:

nano /etc/apcupsd/killvms.sh
-----------------------------
#!/bin/bash

# Wartezeit, um sicherzustellen, dass der Shutdown-Befehl ausgelöst wird
sleep 5

# Liste aller laufenden VMs abrufen
running_vms=$(qm list | awk '/running/ {print $1}')

# VMs sicher herunterfahren
for vmid in $running_vms; do
    echo "Herunterfahren der VM $vmid ..."
    qm shutdown $vmid --skiplock
    sleep 2
done
sleep 300
/sbin/shutdown -h now

Das Script muss ausführbar gemacht werden:

chmod +x /etc/apcupsd/killvms.sh

Jetzt diese Config-Datei bearbeiten und den Inhalt am Ende der Datei einfügen:

nano /etc/apcupsd/apccontrol
-----------------------------
case "$1" in
    onbattery)
        echo "Stromausfall erkannt. Warten auf Shutdown-Befehl..."
        ;;
    doshutdown)
        echo "Shutdown-Befehl von apcupsd empfangen. VMs werden heruntergefahren..."
        /etc/apcupsd/killvms.sh
        ;;
    offbattery)
        echo "Stromversorgung wiederhergestellt. Abbruch des Shutdowns."
        # Hier könntest du ein Skript ausführen, das den Shutdown-Prozess abbricht,
        # falls dieser bereits gestartet wurde, was aber bei apcupsd meist automatisch
        # über die Abbruchsignale (SIGTERM/SIGKILL) passiert.
        ;;
esac

Nun diese Datei bearbeiten und den Wert ändern:

nano /etc/default/apcupsd
--------------------------
ISCONFIGURED=yes

Im Anschluss den Dienst neustarten.

systemctl restart apcupsd

Jetzt sollte der Shutdown Funktionieren. Mit diesem Befehl kann der Status und der Fortschritt abgerufen werden (aktualisiert live bei Stromausfall):

systemctl status apcupsd

Von NRTX

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert