Korrektes Herunterfahren des VMWare ESXi-Hypervisors, wenn der Ladezustand der APC-USV-Batterie kritisch ist

Es gibt viele Artikel darüber, wie man PowerChute Business Edition konfiguriert und wie man von PowerShell aus eine Verbindung zu VMWare herstellt, aber irgendwie konnte ich nicht alles an einem Ort finden, mit einer Beschreibung der subtilen Punkte. Aber es gibt sie.

1. Eintrag

Trotz der Tatsache, dass wir einen gewissen Bezug zur Energie haben, treten manchmal Probleme mit der Elektrizität auf. Hier kommt die USV ins Spiel, deren Batterien aber leider nicht lange halten. Was zu tun ist? Abschalten!

Obwohl alle Server physisch waren, lief alles gut. PowerChute Business Edition hat uns geholfen. Kostenlos, für 5 Server, was völlig ausreichend war. Auf einer Maschine wurden ein Agent, ein Server und eine Konsole installiert. Als das Ende näher rückte, führte der Agent einfach eine Befehlsdatei aus, die „shutdown.exe /s /m“ an benachbarte Server sendete und dann sein Betriebssystem herunterfuhr. Jeder lebt.
Dann war es Zeit für virtuelle Maschinen.

2. Hintergrund und Überlegungen

Was haben wir also? Gar nichts – ein physischer Server mit Windows Server 2008 R2 und ein Hypervisor mit mehreren virtuellen Maschinen, darunter Windows Server 2019, Windows Server 2003 und CentOS. Und noch eine USV – APC Smart-UPS.

Wir haben von NUT gehört, sind aber noch nicht dazu gekommen, es zu studieren; wir haben nur das verwendet, was uns zur Verfügung stand, nämlich PowerChute Business Edition.

Der Hypervisor kann seine virtuellen Maschinen selbst herunterfahren; ihm muss nur noch mitgeteilt werden, dass es an der Zeit ist. Es gibt so eine nützliche Sache VMWare.PowerCLI, das ist eine Erweiterung für Windows Powershell, mit der Sie eine Verbindung zum Hypervisor herstellen und ihm alles mitteilen können, was Sie brauchen. Es gibt auch viele Artikel über PowerCLI-Einstellungen.

3. Prozess

Die USV war physisch mit dem COM-Port des 2008-Servers verbunden, zum Glück war sie dort. Obwohl dies nicht wichtig ist, war es möglich, über einen Schnittstellenkonverter (MOXA) eine Verbindung zu jedem virtuellen Windows-Server herzustellen. Darüber hinaus werden alle Aktionen auf der Maschine ausgeführt, an die die USV angeschlossen ist – Windows Server 2008, sofern nicht ausdrücklich anders angegeben. Darauf wurde der PowerChute Business Edition-Agent installiert. Hier ist der erste subtile Punkt: Der Agentendienst muss nicht vom System, sondern vom Benutzer aus gestartet werden, sonst kann der Agent die cmd-Datei nicht ausführen.

Als nächstes haben wir .Net Framework 4.7 installiert. Hier ist ein Neustart erforderlich, auch wenn das Framework nach der Installation nicht explizit danach fragt, sonst geht es nicht weiter. Danach kommen möglicherweise noch Updates, die ebenfalls installiert werden müssen.

Als nächstes haben wir PowerShell 5.1 installiert. Erfordert außerdem einen Neustart, auch wenn er nicht fragt.
Als nächstes installieren Sie PowerCLI 11.5. Eine ziemlich aktuelle Version, daher die vorherigen Anforderungen. Sie können dies über das Internet tun, es gibt viele Artikel darüber, aber wir haben es bereits heruntergeladen, also haben wir einfach alle Dateien in den Ordner „Module“ kopiert.

Geprüft:

Get-Module -ListAvailable

Ok, wir sehen, wir haben Folgendes installiert:

Import-Module VMWare.PowerCLI

Ja, die Powershell-Konsole wird natürlich als Administrator gestartet.

Powershell-Einstellungen.

  • Erlauben Sie die Ausführung beliebiger Skripte:

Set-ExecutionPolicy Unrestricted

  • Oder Sie können nur zulassen, dass Skriptzertifikate ignoriert werden:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Erlauben Sie PowerCLI, eine Verbindung zu Servern mit ungültigen (abgelaufenen) Zertifikaten herzustellen:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Unterdrücken Sie die Ausgabe der PowerCLI-Nachricht über die Teilnahme am Erfahrungsaustauschprogramm, da sonst viele unnötige Informationen im Protokoll enthalten sind:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Speichern Sie die Benutzeranmeldeinformationen für die Anmeldung beim VMWare-Host, damit sie nicht explizit im Skript angezeigt werden:

New-VICredentialStoreItem -Host address -User user -Password 'password'

Bei der Überprüfung wird angezeigt, wen wir gespeichert haben:

Get-VICredentialStoreItem

Sie können auch die Verbindung überprüfen: Connect-VIServer-Adresse.

Das Skript selbst, zum Beispiel: verbunden, ausgeschaltet, getrennt für alle Fälle, folgende Optionen sind möglich:


    Connect-VIserver -Server $vmhost 
    Stop-VMHost $vmhost -force -Confirm:$false 
    Disconnect-VIserver $vmhost -Confirm:$false

4. Default.cmd

Dieselbe Batchdatei, die vom APC-Agenten gestartet wird. Es befindet sich in „C:Program Files[ (x86)]APCPowerChute Business Editionagentcmdfiles“ und darin:

„C:Windowssystem32WindowsPowerShellv1.0powershell.exe“ -Datei „C:...shutdown_hosts.ps1“
Es scheint, als ob alles konfiguriert und überprüft wurde, wir haben sogar cmd gestartet – es funktioniert ordnungsgemäß, schaltet es aus.

Wir führen einen Befehlsdateitest über die APC-Konsole aus (dort gibt es eine Testschaltfläche) – er funktioniert nicht.

Hier ist er, dieser unangenehme Moment, in dem die ganze geleistete Arbeit zu nichts geführt hat.

5. Katharsis

Wir schauen auf den Task-Manager, wir sehen cmd-Blitze, Powershell-Blitze. Schauen wir uns das genauer an - cmd *32 und dementsprechend Powershell *32. Wir verstehen das Der APC-Agentendienst ist 32-Bit, was bedeutet, dass er die entsprechende Konsole ausführt.

Wir starten Powershell x86 als Administrator und installieren und konfigurieren PowerCLI erneut aus Schritt 3.

Nun, ändern wir die Powershell-Anrufzeile:

"C:Windows<b>SysWOW64</b>WindowsPowerShellv1.0powershell.exe…

6. Happy End!

Source: habr.com

Kommentar hinzufügen