it-swarm.com.de

Das Herunterfahren von VMware ESXi wird durch eine über USB angeschlossene APC-USV ausgelöst

Ich versende eine Reihe von ESXi 5.1-Servern an Remote-Büros, wo sie über APC UPS mit Strom versorgt werden.

Ich möchte, dass die USV ein Herunterfahren des verbundenen Servers auslöst. Ich würde mich dann auf die ESXi-Konfiguration verlassen, um das Herunterfahren/Anhalten der darauf gehosteten VMs zu gewährleisten.

Ich kann sehen, dass APC eine Lösung hat dokumentiert durch PowerChute Network Shutdown , aber dies beinhaltet die Einrichtung eines zusätzlichen Servers pro Büro und erfordert Netzwerkkarten auf jeder USV. Wir verwenden in der Regel USV ohne Netzwerkkarte (z. B. Back-UPS Pro). Sie werden mit einem USB-Anschluss geliefert und sind an den Standorten, an denen sich unsere Büros befinden, leicht verfügbar.

Wie kann ich eine USV über USB an einen ESXi-Host anschließen, ESXi dann einen Stromausfall erkennen lassen und entsprechend handeln? Hat jemand das geschafft.

18
dunxd

Laut APC ist dies nicht möglich und Sie müssen das Powerchute-Netzwerk herunterfahren. Wir haben dies einige Male mit USB versucht und keine Lösung gefunden.

VMWare enthält hier Informationen zur Verwendung der von APC genehmigten Lösung.

Würde auch denken, SmartUPS wäre eine bessere Wahl und Sie können mit Netzwerkkarte passen. Natürlich mehr Geld, aber wenn Ihre Server überhaupt wichtig sind, sollten sich diese Kosten lohnen. Bietet Ihnen außerdem mehr Überwachung und Alarmierung, die an einem Remotestandort hilfreich sein können. Sie müssen auch sicherstellen, dass alle VMs eine ausreichende Laufzeit haben, um den Host sauber herunterzufahren und anschließend herunterzufahren

5
Dave M

Ja es ist möglich. Hier sind Details zu meinem ähnlichen Setup.

Hardwarekonfiguration : APC Smart-UPS 1500 über USB mit dem ESXi 5.1 Host verbunden. Eine virtuelle Linux-Maschine, die auf diesem ESXi-Host ausgeführt wird. Die USV wird über die ESXi USB-Durchgangsoption mit diesem VM verbunden.

Softwarekonfiguration : NUT-Master (Network UPS Tools), der auf der VM ausgeführt wird, und nativer ESXi-NUT-Slave, der auf dem ESXi-Host ausgeführt wird.

Abschaltlogik : VM führt den USV-Treiber aus usbhid-ups der für die Kommunikation mit der USV über USB verantwortlich ist. Der Prozess upsd stellt über den usbhid-ups-Treiber eine Verbindung zur USV her und überwacht den USV-Status. Der auf demselben Computer ausgeführte Masterprozess upsmon stellt eine Verbindung zum upsd her und leitet das Herunterfahren ein. ESXi Host führt die 2. Instanz von upsmon aus, die auch über ein internes Netzwerk eine Verbindung zu demselben VM upsd herstellt.

Bei Stromausfall erfolgt folgende Reihenfolge:

  1. UPS über usbhid-ups meldet upsd über Stromausfall.
  2. (Optional, nützlich, wenn Sie das Gerät in wenigen Minuten herunterfahren möchten, anstatt die Batterie zu entladen.) Upsmon auf dem VM initiiert Upssched 5-Minuten-Timer. Der Timer wird abgebrochen, wenn die Stromversorgung wiederhergestellt wird.
  3. Wenn der Timer ausgelöst wird oder wenn die USV einen niedrigen Batteriestand meldet, setzt der Upsmon das FSD-Flag (Forced Shutdown) auf Upsd.
  4. In einer eigenständigen NUT-Konfiguration würde das FSD-Flag die Maschine herunterfahren. Aber hier wird der Befehl zum Herunterfahren durch eine einfache Protokollierung wie "Ich sollte jetzt herunterfahren, aber ich warte stattdessen auf den Host" ersetzt. Und macht nichts.
  5. Das FSD-Flag wird auch von ESXi upsmon gelesen, das das Herunterfahren des ESXi-Hosts initiiert.
  6. ESXi Host fährt alle virtuellen Maschinen nacheinander herunter. Wichtig ist, dass VM, auf dem upsd ausgeführt wird, zuletzt heruntergefahren wird (mithilfe der ESXi-Sequenzkonfiguration für Start/Herunterfahren).
  7. Wichtig : Auf diesem VM müssen VMware-Tools installiert sein. Wenn der Host den Befehl zum Herunterfahren des Gasts empfängt, wird das Skript zum Herunterfahren von vmware-tools gestartet. Dieses Skript sucht nach dem Flag /etc/killpower. Wenn kein Flag vorhanden ist, wird nichts ausgeführt (dies bedeutet, dass der Benutzer das Herunterfahren des Linux aktiviert hat, nicht das USV-Ereignis). Wenn das Flag jedoch vorhanden ist (FSD aktiv), sendet dieses Skript den Befehl zum verzögerten Herunterfahren an die USV (z. B. in 3 Minuten).
  8. Nach dem Ausführen des vmware-tools-Skripts wird der Gast VM heruntergefahren.
  9. ESXi sieht den letzten VM Ausschaltzustand und geht selbst aus (es dauert ungefähr 1 Minute, da derzeit keine anderen Computer ausgeführt werden).
  10. In 2 verbleibenden Minuten unterbricht die USV die Stromversorgung.
  11. Wenn die Stromversorgung wiederhergestellt ist, startet der ESXi und schaltet alle VMs ein. Die USV-Überwachungsmaschine muss zuerst gestartet werden (dieselbe Konfiguration wie für die Abschaltreihenfolge).

Downloads :

Die NUT für Linux könnte aus dem Paket installiert werden.

Der native NUT-Client für den ESXi-Server kann über den letzten Link auf dieser Seite heruntergeladen werden: http://www.networkupstools.org/download.html

Einige meiner Skripte und Conf-Dateien sind hier (nur geänderte Zeilen werden angezeigt): http://Pastebin.com/KkEeanK1

Hinweise :

Natürlich gibt es mehr Details, und es hat einige Zeit gedauert, bis ich es so gemacht habe, wie es sollte. Aber jetzt funktioniert es sehr gut. Dieses System berücksichtigt die Fälle, in denen Sie die Überwachung VM nur von innen herunterfahren (das Skript vmware-tools wird nicht ausgeführt) oder wenn es sich um ein vom ESXi-Host initiiertes Herunterfahren VM handelt (no/etc./killpower flag, also keine USV entladen) oder wenn es sich um eine ESXi-Abschaltung handelt (das gleiche). Das einzig Wichtige ist, dass dieses VM nach dem Host-Start so schnell wie möglich ausgeführt wird und zuletzt heruntergefahren wird (so dass die Ausfallzeit des Hosts vorhersehbar ist - wie oben erwähnt, beträgt sie für mich etwa 1 Minute und ich reserviere nur 2 weitere Minuten im Falle).

Mein USV-Überwachungs-Linux VM ist auch ein Samba/NFS-Freigabeserver für den Sicherungsspeicher, der NAT/DHCP-Server für VMs und einige andere leichte Dienste. Es werden ca. 22 MHz ESXi-CPU-Freigaben und ca. 10 MB aktives RAM im Leerlauf benötigt. Durch die Verwendung der MUTTER können Sie bei Bedarf mehr Geräte über dieselbe USV mit Strom versorgen und alle Geräte ordnungsgemäß herunterfahren. Es ist keine PowerChute- und/oder teure Netzwerkmonitorkarte erforderlich.

21
Oleg Semyonov

Super Frage. Es ist tatsächlich möglich, dies ganz gut zu machen - zumindest bei einigen Setups. Ich habe das folgende Rezept auf einer Reihe von ESXi 5.5-Hosts ausprobiert. Grundsätzlich sieht die Lösung so aus:

  1. Aktivieren Sie den SSH-Zugriff auf Ihrem ESXi-Host
  2. Erstellen Sie ein Linux VM - Ich verwende Ubuntu. Sie benötigen nur ein sehr minimales Setup - keine GUI oder irgendetwas.
  3. Verbinden Sie Ihr APC-Gerät über USB mit dem ESXi-Host und leiten Sie es an die Linux-VM weiter.
    • Stellen Sie sicher, dass der USB-Controller, den Sie dem VM hinzufügen) mit dem tatsächlichen physischen USB-Controller übereinstimmt, an den das APC-Gerät angeschlossen ist, dh fügen Sie nur dann einen XHCI-Controller hinzu, wenn das physische Gerät ein USB3-Gerät ist scheinen seltsame Probleme im Linux USB-Gerätetreiber zu verursachen.
    • Wenn die Dinge nicht funktionieren und Sie Fehler wie ctrl urb status -62 In dmesg sehen, stimmt der physische Controller wahrscheinlich nicht mit dem in Ihrer VM überein. Wenn sie übereinstimmen, ist das ein Problem. Ich habe ein Setup mit dieser Art von Problem und keine wirkliche Lösung dafür.
  4. Installieren Sie apcupsd unter Linux VM - in Ubuntu können Sie Sudo apt-get install apcupsd Ausführen, um die neueste Version zu installieren. Das NUT-Projekt ist auch schön, aber ich bin ein Traditionalist.
  5. Installieren Sie das Plink-Dienstprogramm mit Sudo apt-get install PuTTY-tools
  6. Stellen Sie mit plink [email protected]<your ESXi Host IP> Eine Verbindung zu Ihrem ESXI-Host her. Sie können die Verbindung sofort schließen. Das Ziel ist es, den Host-Schlüssel zu speichern, damit plink nicht erneut dazu auffordert, wenn wir ihn über ein Skript ausführen
  7. Bearbeiten Sie /etc/apcupsd/apcupsd.conf Und ändern Sie die folgenden Elemente so, dass sie übereinstimmen: UPSNAME < the name you'd like your UPS to have > UPSCABLE usb UPSTYPE usb # DEVICE DIRECTIVE should be blank for USB DEVICE Stellen Sie außerdem sicher, dass /etc/default/apcupsdISCONFIGURED=yes Hat.
  8. Bearbeiten Sie /etc/apcupsd/apccontrol Und scrollen Sie zum Fall doshutdown. Lass es so aussehen: doshutdown) echo "UPS ${2} initiated Shutdown Sequence" | ${WALL} # Shut down indirectly by triggering the ESXi Host to do the # shutdown via VMWare tools /usr/bin/plink [email protected]< your ESXi Host IP > -pw < your root pw > "/sbin/shutdown.sh && /sbin/poweroff" ;;
  9. Starten Sie apcupsd mit Sudo service apcupsd restart Neu und überprüfen Sie, ob die Dinge funktionieren, indem Sie apcaccess aufrufen. Wenn nicht, überprüfen Sie die Protokolle und dmesg
  10. Stellen Sie sicher, dass auf allen VMs, die bei einem Stromausfall ordnungsgemäß heruntergefahren werden müssen, VMWare Tools installiert sind. Stellen Sie außerdem sicher, dass sie Teil der Liste VM Start/Herunterfahren) sind (gehen Sie im vSphere Web Client zu: vCenter -> <your Host> -> Manage -> Settings -> VM Startup/Shutdown). Stellen Sie sicher, dass die Aktion zum Herunterfahren beendet wird das Gastbetriebssystem herunterfahren.

Sobald Sie diese Dinge ausgeführt haben, wird das Scriptlet doshutdown aus Schritt 8 bei einem Stromausfall aufgerufen. Dies ruft wiederum das Skript shutdown.sh auf dem ESXi-Host auf, das dem VMWare Tools-Paket in jedem VM auf Ihrem Host signalisiert, dass ein sauberes Herunterfahren über das Gastbetriebssystem durchgeführt werden soll. Es funktioniert besser als die PowerChute-Software von APC.

Wenn Sie Dinge von Ihren VMs aus überwachen möchten, können Sie Slave-apcupsd-Instanzen auf diesen einrichten, die eine Verbindung zur Linux-Master-USV-Steuerungs-VM herstellen. Ihre Slave-Dateien apcupsd.conf sollten einen Eintrag wie den folgenden haben:
UPSTYPE net < your UPS control VM IP >:3551
Einträge wie UPSCABLE und solche spielen in diesem Fall keine Rolle. Dies funktioniert auch mit der Windows-Version von apcupsd (verfügbar hier ). Mit dem enthaltenen apctray.exe Können Sie den aktuellen Status der Dinge überprüfen.

Das deckt es ziemlich gut ab, denke ich.

14
MrMajestyk

Sie können die SB-Geräte-Passthrough-Funktion für einen Gast verwenden, der PowerChute oder eine andere Software ausführt, die den Zustand der USV überwachen und ein Herunterfahren auf dem ESXi-Host auslösen kann (z. B. apcupsd ). ESXi nterstützt offiziell nur eine sehr begrenzte Anzahl von USB-Geräten für das Passthrough , aber die Leute haben bereits seit einiger Zeit verschiedene Geräteklassen mit unterschiedlichem Erfolg angeschlossen und durchlaufen, aber die APC-USV USB scheint entsprechend zu funktionieren to diese exemplarische Vorgehensweise für eine Windows-VM oder diese für eine CentOS Linux-VM .

4
the-wabbit

Schauen Sie sich den vSphere Management Assistant (vMA) von hier an. Wir verwenden ihn in meinem Büro, um das zu tun, was Sie versuchen. Allerdings wird die Smart-USV über USB und nicht über die USV angeschlossen.

2
deveneyi

Obwohl dies (wahrscheinlich/allgemein) möglich ist, halte ich ein automatisches Herunterfahren eines Computers im Akkubetrieb nicht für eine gute Idee. Wenn Sie dies tun, sollten Sie sich für die meisten praktischen Zwecke wahrscheinlich nur das Geld einer batteriegepufferten USV sparen und den Stromausfall Ihre Maschine für Sie herunterfahren lassen. (Zugegeben, ein sauberes Herunterfahren ist einem Stromausfall immer vorzuziehen, aber Sie scheinen eine Batterielaufzeit von mehr als ein paar Minuten zu verpassen, wenn Sie alles automatisch abschalten, wenn Sie die Stromzufuhr verlieren. )

Ich habe immer damit umgegangen, dass die SAs durch Überwachung überwacht werden, wenn der Strom ausfällt, damit die SAs anhand ihrer grauen Substanz entscheiden können, wann (oder sogar ob) die Server heruntergefahren werden sollen. Wenn es sich um einen kurzen Ausfall handelt, ist es möglicherweise keine gute Idee, die Server überhaupt herunterzufahren, oder Sie möchten einige Server so lange wie möglich betriebsbereit lassen und sie erst herunterfahren, bevor der Akku fast leer ist. Scheint mir wirklich eine Entscheidungsaufgabe zu sein, die besser für einen Menschen geeignet ist als eine einfache Regel.

1
HopelessN00b

In den alten Tagen von Baremetall-Installationen war APC PowerChute Plus ein wesentlicher Bestandteil meines Installationsprozesses. Mit dem einfachen seriellen Signalisierungskabel und dessen nur Red Hat-Binärdatei war es einfach, Regeln für einen lokal angeschlossenen Server einzurichten. Grundlegende E-Mail-Benachrichtigungen für UPC Batterieereignisse, Netzstromereignisse und Abschaltaktionen waren verfügbar:

POWERCHUTE MAIL MESSAGE
Message from [email protected]:

UPS on battery: Blackout 000.0 V. 

und

POWERCHUTE MAIL MESSAGE
Message from [email protected]:

Normal power restored: UPS on line.  

oder

POWERCHUTE MAIL MESSAGE
Message from [email protected]:

Shutdown started.  

Plus eine vernünftige Schnittstelle, um zu sehen, was passiert ist ...

enter image description here

Diese Software wurde schließlich kommerziell (oder wurde auf der APC-Website vergraben). Es gab einige Open-Source-Ansätze, um etwas Ähnliches bereitzustellen. Bei einzelnen VMWare ESXi-Hosts wird dies jedoch kompliziert.

Es scheint, dass VMWare dies in den Basis-Hypervisor hätte integrieren sollen. Es ist einfach und könnte ein angemessenes Maß an Schutz für Benutzer bieten. Die häufigsten Abhilfemaßnahmen, die ich jetzt sehe, sind USB-Passthrough zu einer dedizierten VM, ein Netzwerk-Daemon-Ansatz oder das, was ich tue. Keine automatische Abschaltung oder Batterieabschaltung konfigurieren ...

Zugegeben, ich gehe normalerweise mit einer USV, die die Systemlast für eine Stunde oder länger unterstützen kann, aber es kommt zu längeren Ausfällen. Möglicherweise besteht eine Alternative darin, ein paar kostengünstige oder überholte Netzwerkschnittstellenkarten zu sammeln und mindestens SmartUPS-Geräte zu kaufen ...

1
ewwhite

Ich habe die MrMajestyk-Lösung verwendet und nur den SSH-Zugriff über Plink mit SSH-Zugriff ohne Passwort mit dem öffentlichen Schlüssel rsa geändert. Der in apcupsd VM) generierte rsa-Schlüssel muss in/etc/ssh/keys-root/authorized_keys des VMware-Hosts enthalten sein.

0

Schauen Sie sich den folgenden Link an . Nicht die eleganteste Lösung, aber eine sehr praktische, sehr einfache Lösung. Es gibt mögliche Nachteile in Bezug auf die Sicherheit (abhängig von Ihrem speziellen Netzwerkdesign, den auf den Hosts geladenen Gästen und dem Zugriff der Benutzer auf diese Gäste, aber Sie können diesen Anruf tätigen.

0
user207685