ArrĂȘt correct de l'hyperviseur VMWare ESXi Ă  un niveau critique de charge de la batterie de l'UPS APC

Il existe de nombreux articles sur la configuration de PowerChute Business Edition et la connexion Ă  VMWare via PowerShell, mais je ne les ai pas trouvĂ©s tous rĂ©unis au mĂȘme endroit, avec des descriptions des dĂ©tails subtils. Et il y en a.

1. Introduction

Bien que nous ayons un lien avec l'Ă©nergie, des problĂšmes d'Ă©lectricitĂ© surviennent parfois. C'est lĂ  qu'intervient l'onduleur, mais ses batteries, hĂ©las, ne sont pas durables. Que faire ? Éteindre !

Tant que tous les serveurs Ă©taient physiques, les choses se passaient plutĂŽt bien, PowerChute Business Edition nous aidait. C'Ă©tait gratuit, sur 5 serveurs, ce qui Ă©tait largement suffisant. Sur une machine, un agent, un serveur et une console Ă©taient installĂ©s. À l'approche de la fin, l'agent exĂ©cutait simplement un fichier de commandes, qui envoyait shutdown.exe /s /m aux serveurs voisins, avant d'Ă©teindre son propre OS. Tout le monde est en vie.
Puis est venu le moment machines virtuelles.

2. Données de base et réflexions

Alors, que avons-nous ? Pas grand-chose – un serveur physique avec Windows Server 2008 R2 et un hyperviseur avec plusieurs machines virtuelles, dont Windows Server 2019, Windows Server 2003 et CentOS. Et un onduleur – APC Smart-UPS.

Nous avons entendu parler de NUT, mais nous n'avons pas encore eu le temps de l'étudier, nous avons seulement utilisé ce qui était à portée de main, à savoir PowerChute Business Edition.

L'hyperviseur peut Ă©teindre ses machines virtuelles lui-mĂȘme, il ne reste plus qu'Ă  lui faire savoir que c'est le moment. Il existe un outil utile appelĂ© VMWare.PowerCLI, une extension pour Windows PowerShell, qui permet de se connecter Ă  l'hyperviseur et de lui transmettre toutes les informations nĂ©cessaires. Il y a aussi beaucoup d'articles sur la configuration de PowerCLI sur internet.

3. Processus

L'onduleur a Ă©tĂ© physiquement connectĂ© au port com du serveur 2008, heureusement qu'il Ă©tait prĂ©sent. Bien que ce ne soit pas essentiel – il aurait Ă©tĂ© possible de se connecter via un convertisseur d'interface (MOXA) Ă  n'importe quel serveur Windows virtuel. Par la suite, toutes les actions se dĂ©roulent sur la machine Ă  laquelle l'onduleur est connectĂ© – Windows Server 2008, sauf indication contraire. L'agent PowerChute Business Edition y a Ă©tĂ© installĂ©. C'est ici qu'intervient le premier dĂ©tail subtil : le service de l'agent doit ĂȘtre lancĂ© non pas par le systĂšme, mais par un utilisateur, sinon l'agent ne pourra pas exĂ©cuter le fichier cmd.

Ensuite, nous avons installĂ© .Net Framework 4.7. Un redĂ©marrage est requis, mĂȘme si le framework ne le demande pas explicitement aprĂšs l'installation, sinon la suite ne pourra pas se poursuivre. D'autres mises Ă  jour peuvent Ă©galement ĂȘtre proposĂ©es, et il faudra les installer.

Nous avons ensuite installĂ© PowerShell 5.1. Un redĂ©marrage est Ă©galement nĂ©cessaire, mĂȘme s'il ne le demande pas.
Ensuite, installez PowerCLI 11.5. C'est une version relativement rĂ©cente, d'oĂč les exigences prĂ©cĂ©dentes. On peut le faire via Internet, de nombreux articles en parlent, mais nous l'avions dĂ©jĂ  tĂ©lĂ©chargĂ©, donc nous avons juste copiĂ© tous les fichiers dans le dossier Modules.

Vérifié :

Get-Module -ListAvailable

D'accord, nous voyons que nous avons installé :

Import-Module VMWare.PowerCLI

Oui, la console Powershell est bien lancée en tant qu'administrateur.

ParamĂštres Powershell.

  • Autoriser l'exĂ©cution de tous les scripts :

Set-ExecutionPolicy Unrestricted

  • Ou permettre seulement d'ignorer les certificats des scripts :

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 

  • Autoriser PowerCLI Ă  se connecter aux serveurs avec des certificats non valides (expirĂ©s) :

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

  • Supprimer le message de PowerCLI concernant la participation Ă  un programme de retour d'expĂ©rience, sinon le journal sera encombrĂ© :

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

  • Sauvegarder les identifiants utilisateur pour se connecter Ă  l'hĂŽte VMWare afin de ne pas les rĂ©vĂ©ler explicitement dans le script :

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

La vérification montrera qui nous avons sauvegardé :

Get-VICredentialStoreItem

On peut aussi vérifier la connexion : Connect-VIServer address.

Le script lui-mĂȘme, par exemple : connectĂ©, Ă©teint, dĂ©connectĂ© au cas oĂč, plusieurs options sont possibles :


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

4. Default.cmd

Le fameux fichier de commande qui est lancĂ© par l'agent APC. Se trouve dans “C:Program Files[(x86)]APCPowerChute Business Editionagentcmdfiles”, et Ă  l'intĂ©rieur :

«C:Windowssystem32WindowsPowerShellv1.0powershell.exe» -File «C:
shutdown_hosts.ps1»
Il semble que nous avons tout configurer et vĂ©rifier, mĂȘme lancĂ© cmd – cela fonctionne correctement, il Ă©teint.

Nous lançons depuis la console APC le test du fichier de commande (il y a un bouton Test) – cela ne fonctionne pas.

Voici ce moment gĂȘnant oĂč tout le travail accompli n'a eu aucun rĂ©sultat.

5. Catharsis

Nous regardons le gestionnaire des tĂąches, nous voyons – cmd a clignotĂ©, powershell a clignotĂ©. Nous regardons de plus prĂšs – cmd *32 et, par consĂ©quent, powershell *32. Nous rĂ©alisons que le service d'agent APC est en 32 bits, ce qui signifie qu'il lance la console correspondante.

Nous lançons powershell x86 en tant qu'administrateur, faisons encore une fois l'installation et la configuration de PowerCLI du point 3.

Et nous changeons la ligne d'appel Ă  powershell :

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

6. Fin heureuse !

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster