Ispravno gašenje hipervizora VMWare ESXi prilikom kritične razine punjenja baterija UPS-a APC

Na spletu je veliko člankov o tem, kako nastaviti PowerChute Business Edition in kako se povezati z VMWare iz PowerShell-a, vendar vse to nekako ni bilo zbrano na enem mestu z opisom subtilnosti. Te pa obstajajo.

1. Uvod

Kljub temu, da imamo nekaj povezave z energetiko, se težave z elektriko včasih pojavijo. Tukaj pride v poštev UPS, vendar so tudi njegove baterije, nažalost, kratkotrajne. Kaj storiti? Izklopiti!

Dokler so bili vsi strežniki fizični, je šlo vse dobro, PowerChute Business Edition nas je rešila. Brezplačna, za 5 strežnikov, kar je povsem zadoščalo. Na enem računalniku je bil nameščen agent, strežnik in konzola. Ko se je bližal konec, je agent preprosto izvajal ukazno datoteko, v kateri se je na sosednje strežnike pošiljalo shutdown.exe /s /m, nato pa je izklopil svoj OS. Vsi so preživeli.
Nato je prišel čas virtualnih naprav.

2. Izhodišča in razmisleki

Torej, kaj imamo? Skoraj nič – en fizični strežnik z Windows Server 2008 R2 in en hipervizor z več virtualnimi stroji, med katerimi so Windows Server 2019, Windows Server 2003 in CentOS. In še UPS – APC Smart-UPS.

Slišali smo za NUT, a dokler se nismo lahko lotili njegovih raziskav, smo uporabljali le to, kar je bilo pri roki, to je PowerChute Business Edition.

Hipervizor lahko sam zaključi delo svojih virtualnih strojev, le sporočiti mu mora, da je čas. Obstaja zelo uporabna stvar VMWare.PowerCLI, to je razširitev za Windows Powershell, ki omogoča povezovanje s hipervizorjem in sporočanje vsega potrebnega. O nastavitvah PowerCLI je bilo tudi veliko člankov na spletu.

3. Postopek

UPS smo fizično priključili na serijski port strežnika 2008, sreča, da je bil tam. Čeprav to ni nujno – lahko bi se povezali preko pretvornika (MOXA) na katerikoli virtualni Windows strežnik. Naslednji ukrepi se izvajajo na računalniku, na katerega je priključen UPS – Windows Server 2008, če ni posebej navedeno drugače. Na njem smo namestili agenta PowerChute Business Edition. Tukaj je prvi subtilni trenutek: storitev agenta je treba zagnati ne iz sistema, temveč kot uporabnik, sicer agent ne bo mogel izvesti cmd-datoteke.

Nato smo namestili .Net Framework 4.7. Tu je potrebna ponovna zagon, tudi če okvir to izrecno ne zahteva po namestitvi, sicer ne bo šlo naprej. Po tem lahko pridejo posodobitve, tudi te je treba namestiti.

Nato smo namestili PowerShell 5.1. Tudi to zahteva ponovni zagon, tudi če ne zahteva.
Nato se postavi PowerCLI 11.5. To je relativno nova verzija, a iz toga proizašle su prethodne zahtjeve. Može se preuzeti putem interneta, o tome ima mnogo članaka, ali mi smo ga već preuzeli, pa smo jednostavno kopirali sve datoteke u mapu Modules.

Provjerili smo:

Get-Module -ListAvailable

U redu, vidimo da smo instalirali:

Import-Module VMWare.PowerCLI

Da, PowerShell konzola je naravno pokrenuta kao Administrator.

Postavke PowerShell-a.

  • Dozvoliti izvršavanje svih skripti:

Set-ExecutionPolicy Unrestricted

  • Ili dozvoliti samo ignorisanje sertifikata skripti:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Dozvoliti PowerCLI povezivanje na servere s nevažećim (isteklim) sertifikatima:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Smanjiti izlaznu poruku PowerCLI o učlanjenju u program za razmjenu iskustava, inače će biti mnogo suvišnih podataka u logu:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Sačuvati korisničke podatke za ulaz na VMWare host, da ih ne prikazujemo očigledno u skripti:

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

Provjera će pokazati ko je sačuvan:

Get-VICredentialStoreItem

Može se provjeriti i konekcija: Connect-VIServer address.

Sama skripta, na primjer: povezali smo se, isključili, za svaki slučaj se isključili, moguće su opcije:


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

4. Default.cmd

Onaj komandni fajl koji pokreće agent APC. Nalazi se u "C:Program Files[(x86)]APCPowerChute Business Editionagentcmdfiles", a unutra:

„C:Windowssystem32WindowsPowerShellv1.0powershell.exe“ -File „C:…shutdown_hosts.ps1“
Izgleda da smo sve postavili i provjerili, čak smo pokrenuli cmd – radi ispravno, isključuje.

Pokrećemo proveru komandnog fajla iz APC konzole (ima dugme Test) – ne radi.

Evo tog nezgodnog trenutka kada sav učinjeni rad nije doveo ni do čega.

5. Katarza

Gledamo upravitelj zadataka, vidimo – bljeskalo je cmd, bljeskalo je powershell. Približavamo se pažljivije – cmd *32 i, shodno tome, powershell *32. Shvatamo da APC agent usluga je 32-bitna, što znači da pokreće odgovarajuću konzolu.

Pokrećemo powershell x86 kao administrator, još jednom prolazimo kroz instalaciju i postavku PowerCLI iz tačke 3.

A mijenjamo red poziva powershell:

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

6. Sretan kraj!

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster