Ein Server, zwei APC-USVs mit redundanten Netzteilen: Wie wird das Herunterfahren ausgelöst?

10

Ich habe einen Server gestapelt und seine redundanten Netzteile an zwei APC Smart-UPS 3000 XLM angeschlossen. Jede USV ist an zwei verschiedene Netzstromquellen angeschlossen.

Es werden zwei Instanzen von apcupsd ausgeführt, von denen jede mit einer eigenen USV verbunden ist. Sie können beide erkennen, wenn eine USV im Akkubetrieb ist, und jede USV kann dann ein Herunterfahren des Servers auslösen.

Die Frage ist: Wie kann man NICHT herunterfahren, wenn NUR EINE USV leer ist?

Hinweis: Die Smart-UPS 3000 XLM verfügt über eine "Power Sync" -Funktion, mit der eine Verbindung zu ihrem Peer hergestellt und der Status erkannt werden kann. Aber als ich den Stecker aus einem von ihnen zog, wurde der Shutdown-Befehl trotzdem gesendet. Ich denke darüber nach, die Shutdown-Skripte zu ändern, um mit "apcaccess" zu überprüfen, ob die anderen Ups nicht verfügbar sind. Jede Erfahrung in diesem Bereich wäre dankbar!

Falken
quelle

Antworten:

13

Derzeit wird das Doshutdown- Ereignis ausgelöst, wenn eine der beiden USV stirbt , und das Standardskript wird über apccontrol ausgeführt . Das Doshutdown- Skript ignoriert die zweite USV, da sie nicht mit einem Ereignis verbunden sind, und fährt normal mit dem Herunterfahren fort.

Damit die Doshutdown- Ereignisse etwas miteinander verbunden sind, benötigen die beiden Instanzen von apcupsd eine speziell angepasste Konfigurationsdatei. Der Unterschied liegt in dem Verzeichnis, aus dem die Ereignisskripte ausgeführt werden müssen.

Haupteigenschaften von First Ups, in /etc/apcupsd/apcupsd.ups0.conf

SCRIPTDIR /etc/apcupsd/ups0
UPSNAME ups0
DEVICE /dev/ups0
PWRFAILDIR /etc/apcupsd/ups0
NOLOGINDIR /etc/apcupsd/ups0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.0.events

Und für die ups1, in /etc/apcupsd/apcupsd.ups1.conf

SCRIPTDIR /etc/apcupsd/ups1
UPSNAME ups1
DEVICE /dev/ups1
PWRFAILDIR /etc/apcupsd/ups1
NOLOGINDIR /etc/apcupsd/ups1
NISPORT 3552
EVENTSFILE /var/log/apcupsd.1.events

Jedes Skriptverzeichnis sollte eine Kopie der Standardskripte erhalten.
Wir möchten das Doshutdown- Skript anpassen, das den Computer nicht direkt herunterfährt, sondern prüfen muss, ob die andere USV noch eingeschaltet ist oder sich im Shutdown-Modus befindet.

Oben im Doshutdown- Skript könnten wir so etwas hinzufügen

für ups0

if [ ! -f /tmp/ups1.is.down ]
then
  touch /tmp/ups0.is.down
  exit 99
fi

für ups1

if [ ! -f /tmp/ups0.is.down ]
then
  touch /tmp/ups1.is.down
  exit 99
fi

Der Status 99 hat eine spezielle Bedeutung, die apccontrol anweist , die laufende Aktion zu stoppen. Die fünf Zeilen prüfen, ob die andere UPS-Down-Datei erstellt wurde. Wenn nein , wird die Down-Datei für die Downs erstellt und beendet. Wenn ja , was bedeutet, dass die andere USV ausgefallen ist, fällt auch diese aus, daher sollte das Skript fortgesetzt und die Maschine heruntergefahren werden.

Die Dateien /tmp/usp[01].is.downzeigen an, ob das Ups [01] derzeit nicht funktioniert.

Wichtig: Das Startskript init.d von apcupsd sollte diese Dateien entfernen, wenn sie in einer früheren Sitzung erstellt wurden:

rm -f /tmp/usp[01].is.down

Schließlich sollten die oben erstellten Verzeichnisse / etc / apcupsd / ups [01] Zugriff auf den Benutzer apcupsd (oder auf den relevanten Benutzer, der die Instanzen ausführt ) erhalten.

chown -R apcupsd /etc/apcupsd/ups[01]

Bitte schauen Sie sich die ausführliche Dokumentation an .

Bearbeiten behoben die /tmp/ups[01].is.downNamen, die .isfehlten.

Ring Ø
quelle
1
und normale Benutzer können Ihren Server mit touch /tmp/ups1.is.down stoppen; Berühren Sie /tmp/ups0.is.down: D Es ist also besser, beispielsweise / var / run zu verwenden. Übrigens. Wenn jemand die Lösung ausschneidet und einfügt, ist rm -f /tmp/usp[01 lightboxes.is.down ein Tippfehler. Übrigens sollten Sie die Datei /tmp/ups[01‹.is.down aus dem Offbattery-Fall der Steuerung löschen, wenn die Stromversorgung wieder hergestellt ist.
Harka Gyozo
1
Ich würde vorschlagen, Ihre eigene is.down-Datei zu berühren, bevor Sie die andere überprüfen - so wie es jetzt ist, gibt es meiner Meinung nach ein winziges Fenster mit den Rennbedingungen, wenn beide Ups genau zur gleichen Zeit ausgehen.
Michael Kohne
4

Schau dir NUT an. Es geht gut damit um. Definieren Sie die Anzahl der Netzteile von jeder USV und die Anzahl der erforderlichen Netzteile. Das Herunterfahren wird nicht ausgelöst, solange nicht genügend USV-Netzteile vorhanden sind.

BillThor
quelle