VMWare ESXi herunterfahren wenn keine VM aktiv ist

ThommyLee

Newbie
Registriert
Jan. 2016
Beiträge
5
Hallo zusammen,

ich habe jetzt mal eine ziemlich komplexe Frage an euch:

Bei mir zuhause läuft derzeit ein Windows Server 2012 R2 als AD-Controller mit Hyper-V Rolle und einigen VM's und 5-7 Clients (Windows Pc's, Smartphones, Mediacenter auf einem Raspberry PI. Da der Server nicht rund um die Uhr benötigt wird, habe ich mit Enviprot AutoShutDown Manager und einem Raspberry Pi mit Debian (welcher 24/7 läuft) ein intelligentes Power-Management erstellt. Das ganze läuft folgendermaßen ab:

1. Der Server wird durch die Clients bzw. VM's aktiv gehalten. Die VM's werden zu einem bestimmten Zeitpunkt bzw. wenn bestimmte Voraussetzungen gegeben sind (Netzwerkauslastung, CPU Last, usw.) heruntergefahren. Wenn die Clients nun ebenfalls aus sind erkennt dies der Server und fährt nach einem vorgegebenen Countdown ebenfalls herunter.

2. Der RaspberryPi scannt jede Minute mittels eines cronjob das Netzwerk nach aktiven IP Adressen, sobald er eine aktive IP erkennt sendet er mit etherwake einen WOL befehl an den Server.

Und da kommt jetzt schon meine erste OffTopic-Frage. Bei dem nachfolgenden Script, welches ich zufällig in einem Forum gefunden habe, sendet der Raspberry Pi ab der ersten aktiven IP zu jeder Minute einen WOL Befehl und das obwohl der Server schon in Betrieb ist. Wie müsste ich jetzt das Script abändern, damit erkannt wird ob der server nun aktiv ist und keine weiteren WOL befehle mehr gesendet werden müssen. Im Gegenzug muss das Script ja dann wieder erkennen wenn der Server aus ist und dann wieder beginnen das Netzwerk nach aktiven IP Adressen zu scannen.


#!/bin/bash
# Program name: wakeup.sh
date
cat /usr/pinglist.txt | while read output
do
ping -c 1 "$output" > /dev/null
if [ $? -eq 0 ]; then
echo "IP $output is up".
/usr/sbin/etherwake 00:25:90:A5:3F:C1
else
echo "IP $output is down"
fi
done​

In der pinglist.txt sind nur die IP Adressen eingetragen, die der Raspberry Pi scannen soll.



So viel zum kleinen Problem.

Mein größeres Problem ist jedoch folgendes:

Ich plane den Windows Host mit Hyper-V gegen einen ESXi Host zu ersetzen. Als VM wird dann der Windows Server 2012R2 mit AD und den anderen VM's eingerichtet.

Allerdings soll nun meine Power-Management Lösung für diese Szenario adaptiert werden.

Den ESXi Host mit der Etherwake Lösung zu starten, denke ich, wird kein Problem sein. Jedoch soll der Host herunterfahren wenn keine VM mehr aktiv ist. Eine Zeitgesteuerte Lösung wird allerdings hier nicht funktionieren, da ja die VM des Windows Servers so lange aktiv sein wird wie die anderen VM's bzw. Clients.

Ich habe lange überlegt und bin dann auf die Idee gekommen, den Spieß einfach umzudrehen. D.h. der Raspberry Pi scannt das Netzwerk so lange bis keine vorgegeben IP mehr aktiv verfügbar ist und führt dann auf dem ESXi Host einen Shutdownbefehl durch.

Allerdings habe ich keine Ahnung wie das gehen soll.

Habt ihr da vielleicht Ideen die mir weiterhelfen können?


Vielen Dank im Vorfeld


Grüße
ThommyLee
 
SSH auf dem ESXi aktivieren und dann per Console den Rechner herunterfahren?
 
Viel zu kompliziert.

Konfigurier auf dem ESXi einfach den VM-Autostart inkl. Shutdown. Das läuft dann so ab:

- Dein RPi schickt zu einem bestimmten Zeitpunkt (cronjob) einen simplen Shutdown-Befehl via SSH an den ESXi-Host
- Der Host schickt daraufhin über die VMTools nacheinander an jede VM einen Shutdown-Befehl
- Sobald die letzte VM sauber heruntergefahren ist, fährt der Host runter

https://www.thomas-krenn.com/de/wik...en_von_virtuellen_Maschinen_unter_VMware_ESXi
 
Hallo,

Danke für die schnellen Antworten.

@Inateck: Leider ist mir das zu umständlich, da müsste ich jeden tag manuell den Server herunterfahren.

@chriss_msi: Klingt an sich nicht schlecht, leider habe ich mit dem Zeitgesteuert herunterfahren noch ein kleines Problem. der Server soll ja aktiv bleiben wenn ein Client noch aktiv ist. Ebenso kann ich nicht einschätzen was passiert, wenn eine der VM's ein Update, Sicherung, Download oder eine andere Operation durchführt und plötzlich schickt der Host einen Shutdownbefehl.


Grüße
ThommyLee
 
Der Grund warum das vermeintlich so komplex ist ist der folgende: Man schaltet einen Server nicht aus, erst recht keinen Domänencontroller oder einen Host für VMs, sei es nun ein Hyper-V Server oder ein ESX. Wieso auch? Wenn du diese System abschalten kannst, dann brauchst du sie ja eigentlich gar nicht und könntest sie auch abschaffen.
Du willst was machen was nicht vorgesehen und für den normalen Use Case auch nicht sinnvoll ist, daher ist das so ein Gefummel. Lass die Büchse doch einfach laufen!
 
Hallo DunklerRabe,

dessen bin ich mir natürlich bewusst. Nur warum soll der Host die ganze Zeit laufen wenn er nicht mehr benötigt wird. Der Domaincontroller als wichtigstes hat keine Funktion wenn kein client mehr zur Verfügung steht. Ich verfolge hier den Gedanken "greenIT".

Ich muss allerdings dazu sagen, dass ich hier keine Business-Lösung betreibe, sondern nur einen etwas komplexeren Homeserver.


Gruß
ThommyLee
 
Ich verfolge hier den Gedanken "greenIT".
Zu bedenken wäre hier noch die erhöhte Stromaufnahme die die gesamte Infrastruktur braucht bis sie nach dem Wiederhochfahren wieder "da" ist. Gegebenfalls wird die Ersparnis hierdurch direkt wieder aufgefressen. Bei regelrechter Serverhardware mit minutenlangem POST ist das nicht undenkbar; bei Consumer nicht unbedingt.
Bei greenIT gilt es nicht nur darum den Stromverbrauch aller Geräte zu senken sondern auch den ganzen Footprint auf dem Weg dorthin zu betrachten. Anders ausgedrückt: Wieviel Energie und Geld hast du bis jetzt durch die Recherche und Implementierung deiner Lösung verbraucht? Hat der (eigens angeschaffte?) RPi noch eine andere Rolle außer dem Netzwerkscan?

Von der Ergonomie mal abgesehen: Macht dein DC auch den (primären) DNS im Netzwerk, sowie ggf. auch DHCP? Dann ists bissl unkomfortabel darauf zu warten bis
a) der RPi einen Client im Netzwerk "erkennt" und den Server startet und
b) DNS & DHCP wieder da sind.

Frage nebenbei: Warum auf ESXi wechseln?
 
Hallo t-6,

Wieviel Energie und Geld hast du bis jetzt durch die Recherche und Implementierung deiner Lösung verbraucht?
Ok das ist ein Argument, der Rechercheaufwand war, ist und wird noch enorm bis alles so läuft wie ich mir das vorstelle. Aber es ist eben mein Hobby und ich versuche gerne neue Dinge aus. Wenn das eine Projekt abgeschlossen ist, beginnt schon das nächste. Das war auch der Grund, warum ich mir kein NAS von der Stange (der mit sicherheit genau das kann was ich hier suche) sondern einen Eigenbau-Server bei dem ich von 0 starte und mir dadurch selbst sehr viel erfahrung aneigne.

Hat der (eigens angeschaffte?) RPi noch eine andere Rolle außer dem Netzwerkscan?
Der Pi ist nicht extra für den Netzwerkscan angeschaft worden, er war einfach zufällig übrig. Besitze 4 von diesen Wunderkisten wobei momentan nur 2 im Einsatz sind (Mediacenter und Netzwerkscanner).

Von der Ergonomie mal abgesehen: Macht dein DC auch den (primären) DNS im Netzwerk, sowie ggf. auch DHCP? Dann ists bissl unkomfortabel darauf zu warten bis
a) der RPi einen Client im Netzwerk "erkennt" und den Server startet und
b) DNS & DHCP wieder da sind.
Auch hier muss ich dir recht geben. Jedoch ist es bei uns so, dass zu beginn des Tages meistens zuerst die Smartphones bzw. das Mediacenter auf den Server zugreifen, und die benötigen kein AD und somit ist der DNS zweitrangig (als alternative springt hier die Fritz-Box ein). DHCP läuft derzeit noch komplett auf der Fritz-Box, wobei auch hier versuche ich wo es nur geht feste IP-Adressen zu vergeben.

Frage nebenbei: Warum auf ESXi wechseln?
Weil mich das Thema Virtualisierung brennend interresiert. Wobei ich immer noch am testen und recherchieren bin, welcher hypervisor besser zu meinem Szenario passt, Hyper-V oder eben ESXi. Mir persönlich gefällt die Option den ESXi Hypervisor auf einem USB Stick zu betreiben. Bei Hyper-V hat mich die einrichtung der Konsole etwas abgeschreckt, da der Hyper-V Server nicht in einer Domäne betrieben wird (ist ja der 1. und einzige physikalische Host) müssen hier mehrere Einstellungen am Client der ihn administriert vorgenommen werden, somit ist diese Lösung nicht wirklich flexiebel.

Hast du vielleicht einige pro und contra argumente bzw. Erfahrungen zu den genannten Hypervisor?


Grüße
ThommyLee
 
Mir persönlich gefällt die Option den ESXi Hypervisor auf einem USB Stick zu betreiben.
Geht mit Hyper-V mittlerweile auch. Ist aber bissl kniffliger einzurichten als ESXi; da hat MS noch einen Weg vor sich.

Bei Hyper-V hat mich die einrichtung der Konsole etwas abgeschreckt, da der Hyper-V Server nicht in einer Domäne betrieben wird (ist ja der 1. und einzige physikalische Host)
Das ist egal. Hyper-V kann (mittlerweile?) auch AD-Memberserver sein, selbst wenn der DC auf ihm selber läuft. Stichwort cached credentials & einen dokumentierten, lokalen Administrator hast du ja natürlich auch. Klingt kontraintuitiv, is aber so ^^
Die VM-Dienste laufen ja unter keinem wie auch immer gearteten User-Konto.
DNS1 sollte natürlich der DNS sein. DNS2 ggf. der Router.
 
Hallo,

was würde denn "für" den Hyper-V sprechen? Ich meine einige male gelesen zu haben, dass Hyper-V Server mehr Ressourcen benötigt (hauptsächlich Arbeitsspeicher).

Einerseits gefällt es mir, den Hyper-V Server mit dem ab Windows 8 integrierten Management Tool zu administrieren. Andererseits habe ich den Weg nun durchexerziert, das Hyper-V Management Tool zum laufen zu bekommen, wenn der Host kein AD-Member ist . Es geht, kompfortabel ist natürlich etwas anderes. Zumal das dann nur für den PC gilt auf dem das eingerichtet wurde.

Den Hyper-V Server als AD-Member einzurichten wird aber häufig abgerten obwohl es ja mit "cached credentials" möglich ist. Sind diese Bedenken gerechtfertigt?

Und nun meine Frage der Fragen wieder: Kann ich den Hyper-V Host dann ebenfalls mit einem Remotebefehl herunterfahren lassen wenn keine VM's mehr aktiv sind. Habe etwas gelesen, dass es mit einem, auf dem Host vorhandenen skript, möglich sein soll eine Abfrage durchzuführen, ob noch eine VM läuft und kann dann mit der Aufgabenplanung eine entsprechende Aktion ausführen zu lassen? Kennt das Jemand von euch, bzw. hat jemand von euch in diese Richtung bereits etwas umgesetzt?

Danke für eure Meinungen/Hilfen/Vorschläge/usw.

Grüße
ThommyLee
 
Hallo Community!

Besteht vielleicht die Möglichkeit, dass mit dem Taskplaner eine abfrage am Hyper-V Host durchgeführt wird, welche Checkt ob noch eine Vm aktiv ist? Wenn keine Vm mehr aktiv ist, könnte man ja auf gleicher Weise einen Showdown Befehl senden.

Oder gibt es noch andere Alternativen?

Danke


Grüße
ThommyLee86
 
Per Powershelgl kannst du die laufenden VMs abfragen:
Code:
Get-VM | Where-Object {$_.State –eq 'Running'}
Da müsstest du dir eine Abfrage drumrum basteln, die den Server runterfährt, wenn nichts zurückgegeben wird. Das Ganze dann als Powershellscript abspeichern und regelmäßig über den Taskplaner ausführen lassen.
 
Zurück
Oben