Карэктнае завяршэнне працы гіпервізара VMWare ESXi пры крытычным узроўні зарада батарэй КБС APC

На прасторах ёсць шмат артыкулаў аб тым, як наладжваць PowerChute Business Edition, і як падлучацца да VMWare з PowerShell, але неяк не сустрэлася ўсё гэта ў адным месцы, з апісаннем тонкіх момантаў. А яны ёсць.

1. ўступленне

Нягледзячы на ​​тое, што мы маем некаторае дачыненне да энергетыкі, праблемы з электрычнасцю часам узнікаюць. Тут у справу ўступае КБС, але і яго батарэі, нажаль, не даўгавечныя. Што рабіць? Выключаць!

Пакуль усе серверы былі фізічнымі, справы ішлі нядрэнна, нас выбаўляла PowerChute Business Edition. Бясплатная, на 5 сервераў, чаго суцэль хапала. На адной машыне быў устаноўлены агент, сервер і кансоль. Пры набліжэнні канца агент проста выконваў камандны файл, у якім на суседнія серверы дасылалася shutdown.exe /s /m, а потым гасіў сваю АС. Усе жывыя.
Потым надышоў час віртуальных машын.

2. Зыходныя дадзеныя і разважанні

Дык вось, што мы маем? Усяго нічога - адзін фізічны сервер з Windows Server 2008 R2 і адзін гіпервізор з некалькімі віртуальнымі машынамі, сярод якіх ёсць і Windows Server 2019, і Windows Server 2003, і ​​CentOS. І яшчэ КБС - APC Smart-UPS.

Пра NUT мы чулі, але рукі пакуль да яго вывучэння не дайшлі, выкарыстоўвалі толькі тое, што было пад рукой, а менавіта PowerChute Business Edition.

Гіпервізар умее сам завяршаць працу сваіх віртуальных машын, засталося толькі яму паведаміць, што час. Ёсць такая карысная штука VMWare.PowerCLI, гэтае пашырэнне для Windows Powershell, як раз якое дазваляе падлучацца да гіпервізара і паведаміць яму ўсё што трэба. Пра налады PowerCLI таксама ёсць шмат артыкулаў на прасторах.

3. Працэс

КБС фізічна падключылі да com-порту сервера 2008, балазе ён быў. Хоць гэта не прынцыпова - можна было падлучыцца праз пераўтваральнік інтэрфейсаў (MOXA) да любога віртуальнага Windows серверы. Далей усе дзеянні вырабляюцца на машыне, да якой падлучаная КБС - Windows Server 2008, калі відавочна не пазначана іншае. На ёй устанавілі агента PowerChute Business Edition. Вось тут знаходзіцца першы тонкі момант: службу агента трэба запускаць не ад сістэмы, а ад карыстача, інакш агент не зможа выканаць cmd-файл.

Далей усталявалі. Net Framework 4.7. Тут патрабуецца перазагрузка, нават калі фрэймворк яе відавочна не просіць пасля ўстаноўкі, інакш далей не пойдзе. Пасля яшчэ могуць прыйсці абнаўленні, таксама трэба ўсталяваць.

Далей устанавілі PowerShell 5.1. Таксама патрабуецца перазагрузка, нават калі не просіць.
Далей усталёўка PowerCLI 11.5. Даволі свежая версія, ад гэтага і папярэднія патрабаванні. Можна праз інтэрнэт, пра гэта ёсць шмат артыкулаў, але ў нас яно ўжо было скачана, так што проста скапіявалі ўсе файлы ў тэчку Modules.

Праверылі:

Get-Module -ListAvailable

Ок, бачым, усталявалі:

Import-Module VMWare.PowerCLI

Так, кансоль Powershell вядома запушчана ад Адміністратара.

Налады Powershell.

  • Дазволіць выкананне любых скрыптоў:

Set-ExecutionPolicy Unrestricted

  • Або дазволіць толькі ігнараваць сертыфікаты скрыптоў:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Дазволіць PowerCLI падлучэнне да сервераў з несапраўднымі (пратэрмінаванымі) сертыфікатамі:

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Здушыць выснову паведамлення PowerCLI аб далучэнні да праграмы абмену досведам, інакш у логу будзе шмат лішняга:

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Захаваць уліковыя дадзеныя карыстача для ўваходу на хост VMWare, каб відавочна не свяціць іх у скрыпце:

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

Праверка пакажа, каго мы захавалі:

Get-VICredentialStoreItem

Можна і падлучэнне праверыць: Connect-VIServer address.

Сам скрыпт, ну напрыклад: падключыліся, загасілі, на ўсялякі выпадак адключыліся, магчымыя варыянты:


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

4. Default.cmd

Той самы камандны файл, які запускаецца агентам APC. Ляжыць у "C:Program Files[(x86)]APCPowerChute Business Editionagentcmdfiles", а ўнутры:

"C:Windowssystem32WindowsPowerShellv1.0powershell.exe" -File "C:…shutdown_hosts.ps1"
Накшталт усё наладзілі і праверылі, нават запусцілі cmd адпрацоўвае правільна, выключае.

Запускаем з кансолі APC праверку каманднага файла (там ёсць кнопка Test) - не працуе.

Вось ён, той няёмкі момант, калі ўся праведзеная праца ні да чаго не прывяла.

5. Катарсіс

Глядзім дыспетчар задач, бачны – прамільгнула cmd, прамільгнула powershell. Прыглядаемся больш уважліва – cmd *32 і, адпаведна, powershell *32. Разумеем, што служба агента APC 32-разрадная, а значыць яна запускае адпаведную кансоль.

Запускаем powershell x86 ад адміністратара, праробны яшчэ раз усталёўку і наладу PowerCLI з пункта 3.

Ну і змяняем радок выкліку powershell:

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

6. Happy end!

Крыніца: habr.com

Дадаць каментар