Korrekt nedlukning af VMWare ESXi hypervisor, når APC UPS-batteriets ladeniveau er kritisk

Der er mange artikler derude om, hvordan man konfigurerer PowerChute Business Edition, og hvordan man forbinder til VMWare fra PowerShell, men på en eller anden måde kunne jeg ikke finde alt dette på ét sted med en beskrivelse af de subtile punkter. Men de findes.

1. adgang

På trods af at vi har en vis forbindelse med energi, opstår der nogle gange problemer med elektricitet. Det er her UPS'en kommer i spil, men dens batterier holder desværre ikke længe. Hvad skal man gøre? Sluk!

Mens alle serverne var fysiske, gik det godt, PowerChute Business Edition hjalp os. Gratis, til 5 servere, hvilket var ganske nok. En agent, server og konsol blev installeret på én maskine. Da slutningen nærmede sig, udførte agenten simpelthen en kommandofil, der sendte shutdown.exe /s /m til naboservere og lukkede derefter dens OS. Alle er i live.
Så var det tid til virtuelle maskiner.

2. Baggrund og refleksioner

Så hvad har vi? Intet overhovedet - én fysisk server med Windows Server 2008 R2 og én hypervisor med flere virtuelle maskiner, inklusive Windows Server 2019, Windows Server 2003 og CentOS. Og endnu en UPS – APC Smart-UPS.

Vi hørte om NUT, men er ikke nået til at studere det endnu; vi brugte kun det, der var ved hånden, nemlig PowerChute Business Edition.

Hypervisoren kan selv lukke sine virtuelle maskiner ned; det eneste, der er tilbage, er at fortælle det, at det er på tide. Der er sådan en nyttig ting VMWare.PowerCLI, dette er en udvidelse til Windows Powershell, der giver dig mulighed for at oprette forbindelse til hypervisoren og fortælle den alt, hvad du har brug for. Der er også mange artikler derude om PowerCLI-indstillinger.

3. Proces

UPS'en var fysisk forbundet til com-porten på 2008-serveren, heldigvis var den der. Selvom dette ikke er vigtigt - var det muligt at oprette forbindelse via en interface-konverter (MOXA) til enhver virtuel Windows-server. Yderligere udføres alle handlinger på den maskine, som UPS'en er tilsluttet - Windows Server 2008, medmindre andet er udtrykkeligt angivet. PowerChute Business Edition-agenten blev installeret på den. Her er det første subtile punkt: agenttjenesten skal ikke startes fra systemet, men fra brugeren, ellers vil agenten ikke være i stand til at udføre cmd-filen.

Dernæst installerede vi .Net Framework 4.7. En genstart er påkrævet her, selvom rammen ikke eksplicit beder om det efter installationen, ellers går det ikke længere. Bagefter kan der stadig komme opdateringer, som også skal installeres.

Dernæst installerede vi PowerShell 5.1. Kræver også en genstart, selvom han ikke spørger.
Installer derefter PowerCLI 11.5. En ganske nyere version, derfor de tidligere krav. Du kan gøre det via internettet, der er mange artikler om dette, men vi har allerede downloadet det, så vi har bare kopieret alle filerne til mappen Moduler.

Tjekket:

Get-Module -ListAvailable

Ok, vi kan se, at vi har installeret:

Import-Module VMWare.PowerCLI

Ja, Powershell-konsollen lanceres selvfølgelig som administrator.

Powershell-indstillinger.

  • Tillad udførelse af alle scripts:

Set-ExecutionPolicy Unrestricted

  • Eller du kan kun tillade, at scriptcertifikater ignoreres:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Tillad PowerCLI at oprette forbindelse til servere med ugyldige (udløbne) certifikater:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Undertrykk outputtet af PowerCLI-meddelelsen om at deltage i erfaringsudvekslingsprogrammet, ellers vil der være en masse unødvendig information i loggen:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Gem brugeroplysningerne for at logge på VMWare-værten for ikke at vise dem eksplicit i scriptet:

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

Tjek vil vise, hvem vi reddede:

Get-VICredentialStoreItem

Du kan også tjekke forbindelsen: Connect-VIServer adresse.

Selve scriptet, for eksempel: tilsluttet, slukket, afbrudt, bare hvis følgende muligheder er mulige:


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

4. Default.cmd

Den samme batchfil, som lanceres af APC-agenten. Det er placeret i "C:Program Files[(x86)]APCPowerChute Business Editionagentcmdfiles", og inde i:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -Fil "C:...shutdown_hosts.ps1"
Det ser ud til, at alt var konfigureret og kontrolleret, vi lancerede endda cmd - det fungerer korrekt, slår det fra.

Vi kører en kommandofiltest fra APC-konsollen (der er en testknap der) - det virker ikke.

Her er det, det akavede øjeblik, hvor alt det udførte arbejde ikke har ført til noget.

5. Katarsis

Vi ser på opgavehåndteringen, vi ser cmd-blink, powershell-blink. Lad os se nærmere - cmd *32 og følgelig powershell *32. Det forstår vi APC-agenttjenesten er 32-bit, hvilket betyder, at den kører den tilsvarende konsol.

Vi starter powershell x86 som administrator og installerer og konfigurerer PowerCLI fra trin 3 igen.

Nå, lad os ændre powershell-opkaldslinjen:

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

6. God slutning!

Kilde: www.habr.com

Tilføj en kommentar