1. Einleitung
Trotz der Tatsache, dass wir etwas mit Energie zu tun haben, treten manchmal Probleme mit Elektrizität auf. Hier kommt die USV ins Spiel, aber ihre Batterien sind leider nicht langlebig. Was zu tun ist? Schalte aus!
Solange alle Server physisch waren, lief alles gut, und die PowerChute Business Edition half uns dabei. Kostenlos für 5 Server, was völlig ausreichend war. Der Agent, der Server und die Konsole wurden auf einem Computer installiert. Als sich das Ende näherte, führte der Agent einfach eine Batchdatei aus, in der shutdown.exe / s / m an benachbarte Server gesendet wurde, und löschte dann sein Betriebssystem. Jeder lebt.
Dann kam die Zeit der virtuellen Maschinen.
2. Hintergrund und Reflexionen
Was haben wir also? Gar nichts - ein physischer Server unter Windows Server 2008 R2 und ein Hypervisor mit mehreren virtuellen Maschinen, einschließlich Windows Server 2019, Windows Server 2003 und CentOS. Und noch eine USV - APC Smart-UPS.
Wir haben von NUT gehört, aber wir haben es noch nicht in die Hände bekommen. Wir haben nur das verwendet, was zur Hand war, nämlich PowerChute Business Edition.
Der Hypervisor kann seine virtuellen Maschinen selbst herunterfahren, es bleibt nur zu sagen, dass es Zeit ist. VMWare.PowerCLI ist eine Erweiterung für Windows Powershell, mit der Sie lediglich eine Verbindung zum Hypervisor herstellen und ihm alles mitteilen können, was Sie benötigen. Es gibt auch viele Artikel über PowerCLI-Einstellungen im Freien.
3. Prozess
Die USV war seitdem physisch mit dem Com-Port des Servers 2008 verbunden. Obwohl dies nicht unbedingt erforderlich ist, konnte über den Interface Converter (MOXA) eine Verbindung zu einem beliebigen virtuellen Windows-Server hergestellt werden. Darüber hinaus werden alle Aktionen auf dem Computer ausgeführt, an den die USV angeschlossen ist - Windows Server 2008, sofern nicht ausdrücklich anders angegeben. Der PowerChute Business Edition-Agent wurde darauf installiert. Hier ist der erste subtile Punkt: Der Agentendienst muss nicht vom System, sondern vom Benutzer gestartet werden, da der Agent sonst die Cmd-Datei nicht ausführen kann.
Dann haben wir .Net Framework 4.7 installiert. Hier ist ein Neustart erforderlich , auch wenn das Framework nach der Installation nicht explizit danach fragt, da es sonst nicht weiter geht. Danach werden möglicherweise noch Updates bereitgestellt. Sie müssen diese auch installieren.
Als Nächstes haben wir PowerShell 5.1 installiert.Ein Neustart ist ebenfalls erforderlich , auch wenn Sie nicht dazu aufgefordert werden.
Installieren Sie als Nächstes PowerCLI 11.5. Eine ziemlich frische Version von diesen und den vorherigen Anforderungen. Es ist über das Internet möglich, es gibt viele Artikel darüber, aber wir haben es bereits heruntergeladen, also haben wir einfach alle Dateien in den Ordner "Module" kopiert.
Überprüft:
Get-Module -ListAvailable
Ok, wir sehen, installiert:
Import-Module VMWare.PowerCLI
Ja, die Powershell-Konsole wird natürlich vom Administrator gestartet.
Powershell-Einstellungen.
- Erlaube die Ausführung von Skripten:
Set-ExecutionPolicy Unrestricted
- Oder lassen Sie nur Skriptzertifikate ignorieren:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- Ermöglichen 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 zum Beitritt zum Austauschprogramm, da sonst viele unnötige Dinge im Protokoll enthalten sind:
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false
- Speichern Sie Benutzeranmeldeinformationen für die Anmeldung am VMWare-Host, um sie nicht explizit im Skript verfügbar zu machen:
New-VICredentialStoreItem -Host address -User user -Password 'password'
Die Überprüfung zeigt, wen wir gespeichert haben:
Get-VICredentialStoreItem
Sie können auch die Verbindung überprüfen: Connect-VIServer-Adresse.
Das Skript selbst, zum Beispiel: verbunden, gelöscht, getrennt, nur für den Fall, dass Optionen möglich sind:
Connect-VIserver -Server $vmhost
Stop-VMHost $vmhost -force -Confirm:$false
Disconnect-VIserver $vmhost -Confirm:$false
4. Default.cmd
Dieselbe Batchdatei, die der APC-Agent startet. Liegt in "C: \ Programme [(x86)] \ APC \ PowerChute Business Edition \ agent \ cmdfiles" und in:
"C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Powershell.exe" -File "C. : \ ... \ shutdown_hosts.ps1 "
Es scheint, dass alles eingerichtet und überprüft wurde, sogar cmd gestartet - es funktioniert korrekt, schaltet es aus.
Wir führen die Befehlsdateiprüfung über die APC-Konsole aus (es gibt eine Testschaltfläche) - sie funktioniert nicht.
Hier ist es, dieser unangenehme Moment, in dem all die geleistete Arbeit zu nichts führte.
5. Katharsis
Wir schauen auf den Task-Manager, wir sehen - cmd blitzte, Powershell blitzte. Schauen wir uns das genauer an - cmd * 32 und dementsprechend Powershell * 32. Wir verstehen, dass der APC-Agentendienst 32-Bit ist, was bedeutet, dass er die entsprechende Konsole startet.
Starten Sie Powershell x86 als Administrator, installieren und konfigurieren Sie PowerCLI ab Schritt 3 erneut
und ändern Sie die Zeile zum Aufrufen von Powershell:
"C:\Windows\<b>SysWOW64</b>\WindowsPowerShell\v1.0\powershell.exe…