Nun einige Zeit später. Ich habe mich immer wieder gewundert, warum mein Server plötzlich offline ist. Der NUT-Server meldete immer wieder "ERROR: Data Stale". Nach meiner Recherche liegt das wohl an der Antwortzeit der USV. Per default schaltet der NUT-Server die Versorgung der Geräte ab, wenn er nach 15 sek keine Antwort von der USV erhält. Ich habe daraufhin sowohl die "Dead Time" auf 45 sek erhöht als auch die USV nur noch dem NUT-Server zugewiesen und nicht mehr dem Windows-Server. Wenn ich jetzt mal via PowerChute auf die USV will, dann ändere ich einfach fix die Zuweisung des Geräts in Proxmox. Ist der sauberere Weg, denn eigentlich geht es technisch nicht, dass ein USB-Gerät an zwei VMs durchgereicht wird.
Aktuell verteilt der NUT-Server die USV im Netz. Davon liest die DS ihre Daten (via Netzwerk-USV-Server). Da muss man Synology schon wieder was ankreiden. In der UI der DS nennt sich das "Synology USV-Server". Da spielt es allerdings keine Rolle, ob der USV-Server auf einer DS läuft, oder nicht. Lediglich die Zugangsdaten für den Server sind nach meiner Recherche in DSM gecodet und nicht änderbar. So muss der USV-Server die USV mit dem Nutzer "upsmon" und dem Passwort "secret" anbieten, sonst loggt sich die DS nicht ein. Ziemlich dumm, aber immerhin hinnehmbar. Die DS kann sich aber auch mit SNMP an einen beliebigen USV-Server verbinden. Da bin ich grad am Testen. Der Linux-Server stellt aktuell zusätzlich zum NUT die Daten auch via SNMP bereit, aber grad kann sich die DS da nicht anmelden. Warum auch immer.
So sieht der Plan aus:
-USV geht auf Batterie
-NUT-Server wartet 5 Minuten, ob der Strom wiederkommt
->wenn nicht, werden via Ansible alle Server vom USV-Server aus über ssh heruntergefahren, außer der NUT-Server selbst
-nach 8 Minuten wird noch ein FSD abgesetzt (Force Shutdown -> benachrichtigt alle Clients, die mit dem USV-Server per SNMP oder NUT verbunden sind darüber, dass sie sich dringend runterfahren sollen)
->nach 10 Minuten wechselt die DS in den sicheren Modus
->nach 15 Minuten fährt der NUT-Server die USV herunter und schaltet sich damit selbst "hart" ab
Da sind natürlich einige Dinge dabei, die "doppelt gemoppelt" sind. Aber das halte ich für wichtig. Denn wenn Ansible aus irgendeinem Grund nicht über ssh auf die Systeme kommt, dann fahren diese sich selbst herunter, wenn sie den Force Shutdown Befehl erhalten. Und wenn selbst das nicht passiert, hat am Ende des Tages wenigstens die DS das Volume ausgehängt, damit zumindest die letzten Backups aller Maschinen sicher sind, bevor diese gekillt werden. Der WinNUT Client auf den Windows-Maschinen ignoriert dieses Shutdown Signal aber, auch wenn man ihm explizit sagt, er möge doch bitte nach diesem Signal sofort herunterfahren. Das ist nach meinen Recherchen ein Bug, der wohl irgendwann mal behoben werden soll. Aber das ist auch zweitrangig. Am Wichtigsten ist mir, dass die Systeme runterfahren, wo Datenbanken laufen und halt die DS, weil letztere auch das einzige System ist, wo ein RAID läuft.
Weiterhin kann man mit dem NUT-Server auch einen Selbsttest der USV nach Zeitplan starten und dann via http Post eine Benachrichtigung an Gotify senden, wenn dieser einen Fehler aufweisen sollte. Das werde ich irgendwann auch noch implementieren.
@alexhell Ich habe nun auch ansible Semaphore aufgesetzt. Es scheint erstmal zu laufen (mit postgres), habe ich aber noch weiter eingerichtet / getestet.
In diesem Sinne, soweit das Wort zum Mittwochabend.