Sieci komputerowe, sieci bezprzewodowe, sprzęt do wideokonferencji - Network Expert

Ever Sinline RT XL 3000

integracja z VMware

Zima, energetyka, drogo! To słowa, które w 2022 roku słyszmy cały czas. W naszej serwerowni postanowiliśmy przygotować się na sytuacje krótszych i dłuższych blackoutów. Kupiliśmy nowego UPSa od polskiego producenta – Ever, którego jesteśmy parterem. Znamy te rozwiązania i stosujemy je w różnych projektach.

Sinline RT XL 3000

Duża moc, dobra cena i parametry przesądziły o wyborze.

Brakowało nam tylko jednej rzeczy – integracji z VMware tak, aby przy niskim poziomie baterii móc położyć miękko całe środowisko. Wiadomo jak reagują bazy danych na nagłe wyłączenia – kilka razy się uda, ale łatwo o potencjalne problemy. Dodam, że mamy kilka hostów działających z vCenter – wszystko na najnowszej wersji 7.0U3.

Ever nie oferuje natywnego wsparcia takiej funkcjonalności – ma ją za to zachodnia konkurencja. Tyle że taki sam UPS kosztowałby dokładnie tyle samo tylko ze znaczkiem EUR zamiast PLN na końcu.

Koledzy z Evera podpowiedzieli kilka rzeczy i postanowiłem to zrobić sam.

[br]

Jak możecie zrobić to sami?

Na początku oczywiście zainstalowałem PowerSoft na naszym serwerze Windows Server 2016 oraz doinstalowałem PowerCli.

Install-Module VMware.PowerCLI -Scope CurrentUser

Musiałem powalczyć z niezaufanym certyfikatami, ale to nie był wielki problem.

[br]

Następnie dodałem dedykowanego usera, który będzie mógł tylko kłaść maszyny. Szybki clone uprawnień Read-only i dodanie uprawnienia Power Off:

Dodanie uprawnień UPS Ever Sinline RT XL 3000

I do całego Datacenter dodałem uprawnienia z rolą

Dodanie roli w uprawnieniach

Sprawdźmy czy działa:

> Connect-VIServer -Server vcenter -User ups-shutdown@vsphere.local -Password tajnehaslo

Name                           Port  User

—-                           —-  —-

vcenter                        443   VSPHERE.LOCAL\ups-shutdown

PS C:\Users\Administrator.WIN-9EAP947T44V> GET-VM

Name                 PowerState Num CPUs MemoryGB

—-                 ———- ——– ——–

mz-test          PoweredOff 8        16.000

………..

Działa bez zarzutu!

[br]

Pora zabrać się za PowerSoft. To oprogramowanie ma monitorować UPS i wywoływać nasz skrypt.

Ponieważ nie chcemy składać środowiska, jak nam zniknie napięcie, to na kilka minut musimy posłużyć się obsługą zaawansowanych zdarzeń w PowerSoft. Oprogramowanie skomplikowane nie jest, ale pozwoli nam zrobić wszystko, co chcemy.

PowerSoft UPS Ever

Wchodzimy w event configuration. Mamy tam co prawda gotowe zdarzenia, jednak nie mamy nic co odnosiłoby się do czasu autonomii. Ja chciałbym, aby środowisko wirtualne złożyło się w sytuacji, gdy będziemy mieć mniej niż 15 minut czasu pracy na bateriach. Dzięki pomocy kolegom z IT Evera mamy następujące warunki do spełnienia:

Warunki początkowe:

((stateBatteryBackup==ON)&&(paramAutonomyTime<=10))

Warunki końcowe:

((stateNormal==ON)||(stateAvrActive==ON))

PowerSoft ma dobrą dokumentację, jednak szybko bym pewnie sam do tego nie doszedł. Plus dla polskiej dynamicznej firmy za szybką pomoc.

Nasz event wygląda następująco:

Dodanie Eventu w PowerSoft UPS Ever

Event wywoła nam skrypt w następujący sposób:

PowerSoft konfiguracja UPS Ever

Ale to za chwilę. Najpierw sprawdźmy czy z PowerCLI możemy kłaść maszynki:

PS C:\Users\Administrator.WIN-9EAP947T44V> Shutdown-VMGuest -VM CSR1000V -Confirm:$False

Shutdown-VMGuest : 11-Oct-22 1:53:50 PM Stop-VMGuest            Operation “Shutdown VM guest.” failed for VM “CSR1000v” for the following reason: Cannot complete operation

because VMware Tools is not running in this virtual machine.

At line:1 char:1

+ Shutdown-VMGuest -VM CSR1000V -Confirm:$False

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo          : NotSpecified: (:) [Stop-VMGuest], VimException

+ FullyQualifiedErrorId : Client20_VmGuestServiceImpl_ShutdownVmGuest_ViError,VMware.VimAutomation.ViCore.Cmdlets.Commands.StopVmGuest

No tak – brak VMware Tools.

Spróbujmy więc maszynę VM Tools

VM Tools Ups Ever Sinline RT XL 3000

Działa. Maszyna grzecznie i miękko się wyłączyła.

No to czas na skrypt. Tutaj spora uwaga – skrypt odpalany przez PowerSoft należy umieścić w katalogu C:\Program Files\PowerSoft Professional. Zdarzenia odpalające skrypt działają z poziomu usługi, a więc Local Service. Na naszym Windows Server 2016 było z tym sporo zamieszania i straciłem kilka godzin na walkę z uprawnieniami. Jak zrobimy to we wskazanym katalogu, to będzie prosto i szybko ?

PowerSoft uruchamia jeden plik – aby nie bawić się z przekazywaniem parametrów, stworzyłem plik .bat, który uruchamia skrypt:

shutdown_ups.bat

powershell -NoProfile -ExecutionPolicy Bypass “. .\shutdown_script.ps1” > logi.txt

Proste uruchomienie powershell’owego skryptu z logiem do pliku logi.txt.

Pora na nasz główny skrypt. Chcę zalogować się na vCenter (działamy na vCnter 7.0U3) i położyć wszystkie maszyny, które są podniesione – na początku OPRÓCZ vCenter (w końcu skrypt działa na vCenter). Na końcu kładziemy vCenter.

Niestety skrypt nie złoży w ładny sposób systemów operacyjnych bez VMWARE Tools (!!!) – komendy Stop-VMGuest zrzucą błąd. Dopiero kolejna komenda zrobi PowerOff maszyn bez zainstalowanych VMware Tools – trochę brutalne ale cóż…  U nas wszystkie ważne maszyny mają VMware Tools – ale zawsze się trafi kilka maszynek demo gdzie vmtools nie ma.

Dodatkowo na razie stwierdziłem, że nie będziemy kłaść hostów. Na razie. Musielibyśmy dodatkowo wprowadzić hosty w maintenance mode i potem je położyć. ESXi powinien braki prądu przeżyć bez większych problemów.

[br]

Nasz skrypt wygląda następująco:

shutdown_script.ps1

Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false

Connect-VIServer -Server vcenter -User ups-shutdown@vsphere.local -Password xyz

Get-VM | Where-object { $_.PowerState -eq ‘PoweredOn’ -and $_.name -notlike ‘VMware vCenter Server*’   }  | Stop-VMGuest -Confirm:$false

Sleep 10

Get-VM | Where-object { $_.PowerState -eq ‘PoweredOn’ -and $_.name -notlike ‘VMware vCenter Server*’   }  | Stop-VM -Confirm:$false

Sleep 30

Get-VM | Where-object { $_.PowerState -eq ‘PoweredOn’ -and $_.name -like ‘VMware vCenter Server*’   }  | Stop-VMGuest -Confirm:$false

Dzięki takiemu rozwiązaniu możemy nie bać się dłuższych przerw w zasilaniu!

autorem artykułu jest:

Piotr Szafran Dyrektor  – techniczny/CEO w Network Experts Sp. z o.o. sp. k.

Posiada ponad 15 lat doświadczenia w dużych sieciach operatorskich jak i enterprise. Realizował projekty jako inżynier w Citibank oraz Główny Architekt sieci Exatela, zrealizował projekty za ponad 10M USD.

Piotr Szafran Dyrektor techniczny/CEO w Network Experts Sp. z o.o. sp. k.

Masz pytania? Napisz

    Wszystkie pola oznaczone (*) są wymagane




    Potwierdzam, że zapoznałem się z polityką prywatności - Polityka prywatności
    Zgadzam się na przetwarzanie moich danych osobowych (imię, nazwisko, adres email, numer telefonu) przez Sprzedawcę NETWORK EXPERTS Sp. z o.o. sp. k. ul. Chojnowska 8, 03-583 Warszawa w celu marketingowym. Wyrażenie zgody jest dobrowolne. Mam prawo cofnięcia zgody w dowolnym momencie bez wpływu na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej cofnięciem. Mam prawo dostępu do treści swoich danych i ich sprostowania, usunięcia, ograniczenia przetwarzania, oraz prawo do przenoszenia danych na zasadach zawartych w polityce prywatności sklepu internetowego. Dane osobowe w sklepie internetowym przetwarzane są zgodnie z polityką prywatności. Zachęcamy do zapoznania się z polityką przed wyrażeniem zgody. - Polityka prywatności


    To również może Cię zainteresować

    DATA CENTER

    2022-10-28T13:47:37+02:00
    Przejdź do góry