APC UPS Daemon am Xenserver

In Citrix Xenserver sind keine UPS/USV Dienste bzw. Einstellungsmöglichkeiten enthalten.

Die Windows Variante:

Von einem Host mit installiertem Xencenter wird zb. folgendes Command abgesetzt um eine VM herunterzufahren:

xe.exe -s <XenServer-IP> -u root -pw password vm-shutdown vm=VM-Name

Jedoch, warum soll ein VM Wirtsystem von einem anderen Windows Host abhängig sein, damit ein herunterfahren bei Stromausfall funktioniert ??

Mein Fazit: NICHT empfehlenswert, wenn USV direkt am Xenhost betrieben werden kann (USB-, Network- oder Serial-Verbindung)

Die Linux Variante:

In Linux nennt sich die Lösung apcupsd, diese ist eigententlich in jeder Distribution enthalten, bzw. kann sie per Repository nach installiert werden. Dumm nur das dies beim Xenserver (abgespecktes CentOS) nicht der Falls ist. Jedoch ist es möglich das RPM Paket vom offiziellen CentOS-Repository manuell am Xenserver zu installieren und anzupassen. Damit ein herunterfahren der VM Gäste, Mailbenachrichtigung, Meldung im Xencenter erfolgt sind jedoch mehrere Schritte, genauer gesagt Scriptanpassungen erforderlich.

apcupsd am Xenserver, ein Überblick:

  • apcupsd, Daemon aus CentOS
  • apcupsd.conf, angepasste Konfigurationsdatei, ruft vm_shutdown.sh auf, Protokolleintrag in Xencenter Applikation.
  • vm_shutdown.sh, Shutdown aller VM Gäste am lokalen Xenserver (nur lokale VMs, falls Xenserver in Pool !! )
  • sendemail, Paket zum einfachen SMTP Versand der USV Statusmails
  • mailconfigs, changeme;commfailure;commok;offbattery;onbattery;sendemail.conf

Ich biete hier zur einfacheren Installation ein TAR File als Download (siehe Punkt 1 in der Installationsanleitung weiter unten), die einzelnen Files können auch hier besichtigt werden.


Xenserver apcupsd Installationsanleitung (Mithilfe von Tar File):

Wie immer gilt “auf eigene Gefahr”, die Bedienung eines Linux Hosts mit Shell Commands sollte geläufig sein 😉

1. Download des tar Files am Xenhost

cd ~
mkdir apc
cd apc
wget http://www.flurweg.net/linux/xenserver/apcupsd/xenserver6_apcupsd.tar

2. Dateien entpacken

tar xvf xenserver6_apcupsd.tar

3. Installation von apcupsd

yum localinstall –nogpgcheck apcupsd-3.14.10-1.el5.i386.rpm

3. Fehlermeldung bei Xenserver Version 6.2: Error: Cannot find a valid baseurl for repo: citrix

Lösung: Öffne die Datei “/etc/yum.repos.d/Citrix.repo” und deaktiviere dieses Repository temporär:

[citrix]
name=XenServer 6.2.0 updates
mirrorlist=http://updates.vmd.citrix.com/XenServer/6.2.0/domain0/mirrorlist
#baseurl=http://updates.vmd.citrix.com/XenServer/6.2.0/domain0/
gpgcheck=1
gpgkey=http://updates.vmd.citrix.com/XenServer/RPM-GPG-KEY-6.2.0
enabled=0

 

4. Sichern der bestehenden/originalen Konfigurationsdateien

mkdir -p /etc/apcupsd/org
cp /etc/apcupsd/* /etc/apcupsd/org

5. Kopieren der neuen Konfigurationsdateien (Überschreiben: JA [y])

cp -f etc/apcupsd/* /etc/apcupsd/

6. Anpassen der Maileinstellungen in der Datei /etc/apcupsd/sendemail.conf

nano /etc/apcupsd/sendemail.conf

7. Sendemail installieren

cp usr/bin/sendemail /usr/bin/sendemail
chmod +x /usr/bin/sendemail

8. Testen der Benachrichtigung per Mail zb. mit:

sh /etc/apcupsd/changeme

9. Anpassen der apcupsd.conf Konfiguration

(Die beinhaltete apcupsd.conf ist für eine Smart APC-650 per USB Schnittstelle konfiguriert)

 


Allgemeines zu apcupsd:

USV Kommunikation prüfen, Werte ausgeben:

apcaccess

APC USV konfigurieren:

apctest

Jedoch muss zuvor der Service beendet werden, (starten nach der Konfiguration nicht vergessen !!)

/etc/init.d/apcupsd stop
apctest
/etc/init.d/apcupsd start


Weitere Tips:

Xenserver Firewall, Port freischalten:

Falls man von einem anderen Linux Host mit installiertem CGI-Multimon, die Werte der am Xenserver angeschlossenen USV auslesen möchte (NISIP) , dem steht die Xenserver Firewall im Weg. Es muss Tcp Port 3551 geöffnet werden, dazu muss die Datei “/etc/sysconfig/iptables” editiert werden, die Zeile: “-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT” und füge Sie darunter nochmals ein. Ändere in dieser kopierten Zeile den Port auf 3551:

-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 3551 -j ACCEPT

Danach ist der iptables Service neustarten:

/etc/init.d/iptables restart

Am Multimon Host unter /etc/apcupsd/hosts.conf die Xenserver IP eintragen.

APCUPSD Multimon am Debian Host mit lighttpd:

Installation:

apt-get install lighttpd apcupsd-cgi

CGI am lighttpd Webserver aktivieren:

lighty-enable-mod cgi

cgi-bin Symlink erstellen:

ln -s /usr/lib/cgi-bin/ /var/www/cgi-bin

Kurzurl mit Umleitung erstellen:

mkdir /var/www/apc
cd /var/www/apc
nano index.html

Im Verzeichnis /var/www/apc wird eine “index.html” mit folgendem Inhalt erstellt:

<html>
<head>
<meta http-equiv=”Refresh” content=”0; URL=/cgi-bin/apcupsd/multimon.cgi”>
</head>
<body>
</body>
</html>

Den Xenserver Host in die Multimon Page eintragen in Datei “/etc/apcupsd/hosts.conf”:

MONITOR 192.168.8.6 “Xenserver”

 

3 Gedanken zu „APC UPS Daemon am Xenserver“

  1. Danke für die Anleitung, haben wir dank Ihnen schon am zweiten Xen-Server implementiert. Uns ist noch etwas aufgefallen > bei uns kam beim Befehl “apcaccess” – trotz der erwähnten iptables-Regel – die Nachricht “.. connection port 3351 refused” oder so Ähnlich. Das hing aber anscheinend nicht damit zusammen, dass die Firewall irgendwie dazwischen funkt, sondern es war einfach der apcupsd nicht gestartet. nach einem “/etc/init.d/apcupsd start” lief Alles “normal”, und apcaccess funktionierte.
    darauf kontrollierte ich noch, ob apcupsd beim Booten automatisch startet, und das tut es (es liegt ein Link in /etc/rcd.d/rc3.d)
    vielleicht ist noch Folgendes brauchbar > folgendes Szenario > Strom ist weg, Citrix Xen Server + VMs laufen durch Strom von der USV, USV wird leer, Citrix Xen-Server fährt die VMs, dann sich selber runter (laut apcupds-Konfiguration). Auf einmal gibt es wieder Strom > dann sollte man im BIOS die Funktion “Reboot on Power..” oder so Ähnlich aktiviert haben, der Citrix Xen-Server fährt wieder hoch, aber die VMs nicht (bleiben auf PowerOff). Dann half uns dieser Link > http://support.citrix.com/article/CTX133910.

    Antworten
  2. Vielen Dank erstmal für die tolle Anleitung. Das meiste habe ich jetzt am Laufen, aber ein paar Fragen hätte ich noch.
    Bei diesem Befehl sind übrigens zwei Bindestriche nötig: yum localinstall –nogpgcheck

    1. Warum heißt das Paket zur Emailversendung Sendemail und nicht Sendmail?
    2. Kann ich in der /etc/apcupsd/sendemail.conf Datei auch einstellen, dass eine SSL-verschlüsselte Verbindung zu meinem Webserver aufgebaut wird? Was muss man eigentlich bei Hostname eintragen? Beim Ausführen des Tests wird immer “hostname: Unknown host” ausgegeben. Die Mail wird aber trotzdem versand.
    3. Muss man noch irgendwo einstellen, welche VMs heruntergefahren werden sollen?

    Über Antworten würde ich mich sehr freuen!

    Antworten

Schreibe einen Kommentar



error: