2.4. APC SmartUPS (USV)

2.4.1. Zweck

Eine USV (Unterbrechungsfreie Stromversorgung) soll, wie der Name schon sagt, die Stromversorgung sicherstellen. Dabei kann man sich die USV als einen sehr großen Akku vorstellen. Fällt der Strom aus, dann wird der Server weiterhin mit Strom versorgt - aus dem Akku. Außerdem schützt die USV den Server vor Überspannung.

2.4.2. Möglichkeiten ohne Treiber

Wenn die USV einfach so, ohne Treiber an den Server angeschlossen wird, dann springt sie automatisch ein, wenn der Strom ausfällt. Wenn der Akku leer ist, fällt der Strom komplett aus; der Server wird nicht heruntergefahren! Die USV ohne Treiber ist also nur für kurze Stromausfälle geeignet.

2.4.3. Installation des Treibers

Wenn der Treiber installiert ist, meldet die USV den Stromausfall. Dann kann der Server entsprechend reagieren. Reagiert er nicht, dann fährt die USV den Server herunter, sobald die Akkuladung einen kritischen Wert erreicht hat. Der Server kann aber auch reagieren und z.B. nach 60 Sekunden herunterfahren. Dadurch kann verhindert werden, dass der Akku beim möglicherweise etwas langen Herunterfahren versagt.

Die USV wird über die erste serielle Schnittstelle (COM1) an den Server angeschlossen. Zur Installation des Treibers wird das Programmpaket nut benötigt. Die Version, die bei Debian Woody (stable) dabei ist, ist offenbar zu alt und funktioniert nicht richtig. Deshalb verwenden wir eine neuere Version. Unter http://www.logic.at/debian/i386/ gibt es neuere Versionen für Woody. Hier die Dateien nut_1.4.2-2woody1_i386.deb und nut-cgi_1.4.2-2woody1_i386.deb (o.ä. je nach Versionsnummer) herunterladen. Diese Dateien lassen sich mit dpkg -i *.deb installieren. Dann ist die neue Version installiert.

Konfiguriert wird der Treiber über mehrere Dateien. In /etc/nut/ups.conf müssen zunächst folgende Zeilen hinzugefügt werden:

[myups]
    driver = apcsmart
    port = /dev/ttyS0
    cable = 940-0095B

Danach muss mit chown root.nut /dev/ttyS0 dem Treiber Zugriff auf die COM1-Schnittstelle erlaubt werden. Dann muss /etc/nut/upsd.conf bearbeitet werden: Die Zeile mit "#ACCESS grant master localhost [<upsmon-password>]" suchen und ändern in:

ACCESS grant master localhost passwort

Damit wird dem Monitorprogramm erlaubt, den Treiber zu befragen. Dabei wird das Passwort "passwort" verwendet. Der Treiber und das Monitorprogramm müssen aber auf demselben Rechner laufen, sodass das Passwort nicht so sicherheitsrelevant ist.

In der Datei /etc/nut/upsmon.conf muss im ersten Abschnitt noch folgende Zeile ergänzt werden:

MONITOR myups@localhost 1 username passwort master

In /etc/nut/upsd.users wird noch ein Benutzer definiert:

[username]
    password = passwort
    allowfrom = localhost
    upsmon master

Damit ist die einfache Konfiguration abgeschlossen. Mit /etc/init.d/nut start wird der Treiber geladen.

Damit der Server nach einer bestimmten Zeit nach dem Stromausfall automatisch herunterfährt, ist weitere Arbeit nötig. In der Datei /etc/nut/upsmon.conf müssen in den entsprechenden Abschnitten folgende Zeilen hinzugefügt werden:

NOTIFYCMD /sbin/upssched

NOTIFYFLAG ONLINE SYSLOG+EXEC

NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC

Wenn der Strom ausfällt (ONBATT) oder wieder da ist (ONLINE) wird das Programm /sbin/upssched ausgeführt. Jetzt muss die Datei /etc/nut/upssched.conf mit folgendem Inhalt erstellt werden:

#
# /etc/nut/upssched.conf
#

CMDSCRIPT /usr/local/sbin/go-down
PIPEFN /var/run/upssched.pipe
AT ONBATT * START-TIMER onbattwarn 40
AT ONLINE * CANCEL-TIMER onbattwarn

Mit dieser Konfiguration wird bei Stromausfall (ONBATT) ein 40-Sekunden-Timer gestartet, der nach Ablauf das Script /usr/local/sbin/go-down ausführt. Wird die Stromversorgung vor Ablauf des Timers wiederhergestellt (ONLINE), wird der Timer abgebrochen.

Das Script /usr/local/sbin/go-down sieht so aus:

#!/bin/sh
#
# /usr/local/sbin/go-down
#
upsmon -c fsd

Die Zugriffsrechte für dieses Script werden mit chmod 700 /usr/local/sbin/go-down richtig gesetzt. Mit /etc/init.d/nut restart wird die neue Konfiguration verwendet. Damit ist die Konfiguration komplett abgeschlossen.

Jetzt sollte die USV noch getestet werden. Wird das Stromkabel an der USV herausgezogen, sollte in /var/log/syslog eine Meldung erscheinen. Nach 40 Sekunden sollte der Server herunterfahren.

2.4.4. Anzeigetools

Die Anzeigetools sind CGI-Programme für einen Webserver. Sie können also erst richtig genutzt werden, wenn ein Webserver läuft. Trotzdem können sie auch schon jetzt eingerichtet werden.

Die Programme wurden schon im letzten Abschnitt installiert. Zur Konfiguration muss zunächst die Datei /etc/nut/hosts.conf erstellt werden:

#
# /etc/nut/hosts.conf
#
MONITOR myups@localhost "Local UPS"

Weiter muss die Datei /etc/nut/upsset.conf erstellt werden. Diese Datei ist nötig, um dem upsset.cgi-Programm mitzuteilen, dass die CGI-Programme auf dem Webserver gesichert sind und nur vom internen Netzwerk zu erreichen sind. Das muss bei der späteren Konfiguration des Webserver beachtet werden! Die Datei hat folgenden Inhalt:

#
# /etc/nut/upsset.conf
#
I_HAVE_SECURED_MY_CGI_DIRECTORY

Die CGI-Scripte liegen in /usr/lib/cgi-bin/nut/ und sollten, wenn der Webserver konfiguriert ist, in ein entsprechendes cgi-bin-Verzeichnis kopiert werden.