killtec
Goto Top

Alle Vms auf einem ESXi 5 System suspenden und Host herunterfahren

Hallo,
ich möchte folgendes realisieren.
Ich möchte alle VM's auf einem Host Suspenden und den Host herunter fahren. Das ganze soll durch ein USV Event ausgelöst werden. Aktuell wird der Host herunter gefahren, aber die VM's einfach abgeschaltet ohne herunter zu fahren / zu suspenden.

Meine überlegung dazu ist mit diesem Script was ich im Netz gefunden habe:

# Get a list of all VMS currently on the ESX host
vim-cmd vmsvc/getallvms
# Suspend Virtual Machine 32 (From output of previous command)
vim-cmd vmsvc/power.suspend 32
# Flush disks
sync
sync
# Power off
poweroff

Nur habe ich das Problem, dass ich mehrer Hosts habe und somit die VMid's sich ändern.
Lese ich das aus (Reduziert auf Name und ID):
~ # vim-cmd vmsvc/getallvms
Vmid        Name
15     server1
20     server5
24     server13
31     server2
36     server3
7      server10
~ #

Kommen gemischte ID's heraus.

Meine Überlegung ist, dass ich die ID's separiere und in ein Array schreibe. Anschließend lasse ich das mit einer For-Schleife / bzw. do while laufen.
das ist dann auch die Stelle, an der ich hänge, da ich nicht genau weiß, wie ich das separieren kann.
Ausgeführt wird das Script direkt auf einem VMHost.
VM-System ist: VMWare ESXi 5.0

vim-cmd vmsvc/power.suspend Vmid

Gruß

Content-Key: 220895

Url: https://administrator.de/contentid/220895

Printed on: April 23, 2024 at 07:04 o'clock

Member: Bitboy
Bitboy Oct 31, 2013 at 14:50:25 (UTC)
Goto Top
Hi,

wäre PowerCLI vllt eine Alternative für dich?
http://www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Susp ...
Member: killtec
killtec Oct 31, 2013 at 15:11:49 (UTC)
Goto Top
Hi,
leider nicht. Das Script für die USV loggt sich auf dem Server per plink (putty link) ein und ruft da einen Befehl auf, bzw. aktuell eine Befehlsverkettung.
Also die eigentliche Ausführung muss auf dem Host bleiben.

Gruß
Member: cyber40014
cyber40014 Oct 31, 2013 at 18:30:59 (UTC)
Goto Top
Hi, wir hatten beinah dasselbe Problem. Da die von APC mitgelieferte Software nur mit Java 6 läuft und wir kein Java 6 auf unseren Servern haben wollen.
Wir stehen noch vor der Virtualisierung, allerdings macht das keinen Unterschied.

Wir nutzen Nagios zur Überwachung der USVs.
ein kleines Script überprüft die Restlaufzeit und setzt einen Befehl an die NSClient++ Clients auf den Servern.

Das führt dann nur noch ein kleines cmd aus (shutdown /s /f /t 60)

Das solltest du auch auf den Linux VM Hosts nutzen können.
Bei uns ist das zb so:

z.B. 1 USV fällt aus -> Warnung, kein Shutdown da redundante Netzteile auf USVs aufgeteilt sind.
2/3 USVs haben eine Reslaufzeit von unter 60 Minuten -> unwichtige Server werden heruntergefahren (2nd DC, Printserver, Datenbankserver für Anwendungen vor Ort)
2/3 unter 30 Minuten: Alle bis auf z.b. DC und Exchange sowie Blackberryserver werden heruntergefahren.
2/3 unter 15 Minuten: Kompletter Shutdown.

lg
Member: DerWoWusste
DerWoWusste Oct 31, 2013 at 21:08:01 (UTC)
Goto Top
Hi.

Ganz simpel: verändere über den vsphere-Client einfach die Standardaktion beim Runterfahren des Hosts auf suspend.
Member: killtec
killtec Nov 01, 2013 at 08:32:38 (UTC)
Goto Top
Hi
DWW: Meinst du das so?:
e4386f76b6dd8ee6a0d9109fb351e992
von Herunterfahren des Gastes auf Anhalten umstellen?
Das obere Drop-Down habe ich einfach eingefügt. Das war der alte Wert.

Gruß
Member: DerWoWusste
DerWoWusste Nov 01, 2013 at 08:36:02 (UTC)
Goto Top
Korrekt.______________
Member: killtec
killtec Nov 01, 2013 at 08:49:04 (UTC)
Goto Top
Werde ich umstellen.
Danke dir.

@cyber40014: Wir haben das APCUPSD auf einem separaten physischen Server laufen. Der gibt das dann an die vHosts weiter.

Gruß