Proxmox, Synology en voeding 9 min. leestijd

Proxmox koppelen aan de ups van een Synology-NAS met NUT

De NUT-server van DSM gebruiken om virtuele machines en de Proxmox-host netjes af te sluiten na een stroomonderbreking.

Mijn ups is via USB verbonden met de Synology-NAS. Dezelfde kabel kan niet worden gedeeld met de Proxmox-host op een Aoostar WTR PRO, en dus doet DSM dienst als doorgeefluik: het leest de toestand van de ups en publiceert die met NUT op het netwerk. Zo kan Proxmox een stroomonderbreking opmerken en zijn virtuele machines, zijn containers en ten slotte de host netjes afsluiten.

Voor u begint

  • Geef de NAS en Proxmox vaste IP-adressen of DHCP-reserveringen.
  • Sluit de NAS, de Proxmox-host en de switch die ze verbindt aan op de beveiligde stopcontacten van de ups. Zonder netwerk tijdens de stroomonderbreking bereikt de NUT-melding Proxmox nooit.
  • Controleer of DSM de ups herkent en of die genoeg autonomie biedt om het afsluiten te voltooien.
  • Stel in Proxmox de volgorde en de wachttijden voor het afsluiten van de gasten in. Installeer en activeer voor virtuele machines de QEMU Guest Agent wanneer het gastsysteem dat toelaat.
  • Voer de onderstaande opdrachten uit vanuit een root-shell op de Proxmox-host.

1. De upsserver activeren in DSM

Open Configuratiescherm → Hardware en energie → UPS. Schakel de ondersteuning voor de ups in en daarna Netwerk-upsserver inschakelen. Voeg bij Toegestane Synology NAS-apparaten het IP-adres van Proxmox toe — in dit voorbeeld 192.168.68.24 — en pas de wijzigingen toe.

De configuratie van de netwerk-upsserver in DSM, met Franstalige interface, met het toegestane adres van Proxmox
De markeringen 1 tot 7 volgen het oorspronkelijke scherm. Het adres van Proxmox staat in de lijst met toegestane clients.

De NUT-server van DSM mag alleen bereikbaar zijn vanuit het vertrouwde lokale netwerk. Staat er een firewall tussen de NAS en Proxmox, laat dan alleen TCP-poort 3493 vanaf het adres van de Proxmox-host toe. Stel die poort nooit open op het internet.

2. NUT installeren op Proxmox

Installeer de NUT-client uit de Debian-pakketbronnen die Proxmox gebruikt:

apt update && apt install nut -y

Geef in /etc/nut/nut.conf aan dat deze machine uitsluitend client is van een externe NUT-server:

MODE=netclient

3. De externe ups aangeven

Open /etc/nut/upsmon.conf en voeg de volgende regels toe of pas ze aan:

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 en secret komen overeen met de waarden die de NUT-server van DSM gewoonlijk aanbiedt. Ze vervangen de beperking op IP-adres niet. Moderne NUT-versies gebruiken de rol secondary; weigert een ouder pakket dat woord, gebruik dan de oude alias slave.

4. Het afsluiten starten na 60 seconden

Maak /etc/nut/upssched.conf aan:

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

De map /run/nut wordt normaal door het pakket aangemaakt. Bestaat ze niet, maak ze dan aan met beperkte rechten:

install -d -o nut -g nut -m 0750 /run/nut

Maak vervolgens het script /etc/nut/upssched-cmd aan:

#!/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

Maak het script uitvoerbaar. De configuratiebestanden mogen alleen door de beheerder te wijzigen zijn:

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

De waarde 60 volgt de configuratie die in het oorspronkelijke artikel is getest. Verhoog ze als uw gasten meer tijd nodig hebben, maar houd voldoende marge voor de batterij leeg is.

5. De monitor starten en de verbinding controleren

systemctl enable nut-monitor
systemctl restart nut-monitor
systemctl status nut-monitor

Bevraag daarna rechtstreeks de ups die DSM aanbiedt:

upsc ups@192.168.68.10
Een Proxmox-terminal met de upsgegevens die de opdracht upsc oplevert
De oorspronkelijke schermafbeelding bevestigt de verbinding met de NUT-server van DSM. De waarde ups.status: OL betekent dat er netstroom is.

Om alleen de toestand en de geschatte autonomie te tonen:

upsc ups@192.168.68.10 2>&1 | grep -E '^(ups.status|battery.runtime)'
  • OL betekent On Line: er is netstroom.
  • OB betekent On Battery: de ups werkt op batterij.
  • LB betekent Low Battery: de batterij is bijna leeg.

Wat er gebeurt bij een stroomonderbreking

  1. DSM merkt het wegvallen van de netstroom op en publiceert de toestand OB.
  2. upsmon ontvangt de gebeurtenis ONBATT en vraagt upssched een timer van 60 seconden te starten.
  3. Komt de netstroom terug voor die tijd om is, dan annuleert de gebeurtenis ONLINE de timer.
  4. Duurt de onderbreking voort, dan roept het script upsmon -c fsd aan. Proxmox sluit dan de gasten af en daarna de host, volgens de ingestelde wachttijden.

Testen zonder onaangename verrassingen

Volg eerst het logboek in een tweede terminal:

journalctl -u nut-monitor -f

Trek daarna de netvoeding van de ups uit, nooit de apparaten op de beveiligde stopcontacten. Controleer of de toestand naar OB gaat. Recente NUT-versies laten ook toe de wachtende timer op te vragen:

/usr/sbin/upssched -l

Steek voor een eerste test de stekker terug binnen de 60 seconden en bevestig de annulering in het logboek. Plan daarna een echte simulatie tijdens een onderhoudsvenster, om het volledige afsluiten van de virtuele machines, de containers en de host te controleren. De opdracht upsmon -c fsd start de afsluitreeks echt: voer ze niet uit op een productieserver buiten een gepland venster.

Snelle probleemoplossing

  • Connection refused of time-out: controleer het adres van de NAS, de netwerk-upsserver van DSM, TCP-poort 3493 en de firewall.
  • Access denied: controleer of het adres van Proxmox wel degelijk bij de toegestane apparaten staat en of de regel MONITOR de waarden gebruikt die DSM verwacht.
  • De timer start niet: controleer de twee regels NOTIFYFLAG met EXEC, de paden van PIPEFN/LOCKFN en de rechten op /run/nut.
  • De host sluit af maar de virtuele machines niet: herbekijk de afsluitvolgorde, de wachttijden in Proxmox en de QEMU Guest Agent in elke betrokken gast.

Besluit

Deze opstelling bespaart u een tweede ups of het fysiek delen van de USB-kabel. De NAS blijft de NUT-server, Proxmox wordt een netwerkclient, en een korte onderbreking verstoort niets dankzij de wachttijd van 60 seconden. Het belangrijkste blijft de echte test: het netwerk moet gevoed blijven en alle gasten moeten afsluiten voor de batterij leeg is.

Bronnen

Over de auteur

Jeremy Kraft beheert de infrastructuur en de zelfgehoste diensten van het IBCSC. Deze gidsen beschrijven configuraties die echt zijn uitgerold en voor publicatie opnieuw zijn nagekeken.

Discussie

Reacties

0

Nog geen reacties. U kunt de discussie openen met een vraag of uw eigen ervaring.