Oui c'est possible. Voici les détails de ma configuration similaire.
Configuration matérielle:
APC Smart-UPS 1500 connecté à l'hôte ESXi 5.1 via USB. Une machine virtuelle Linux exécutée sur cet hôte ESXi. L'onduleur est connecté à cette machine virtuelle à l'aide de l'option de transfert USB ESXi.
Configuration logicielle:
maître NUT (Network UPS Tools) exécuté sur la machine virtuelle et esclave natif ESXi NUT exécuté sur l'hôte ESXi.
Logique d'arrêt:
VM exécute les usbhid-ups du pilote UPS qui est responsable de la communication avec UPS via USB. Le processus upsd se connecte à l'onduleur via le pilote usbhid-ups et surveille l'état de l'onduleur. Le processus maître upsmon exécuté sur la même machine se connecte à l' upsd et lance l'arrêt. L'hôte ESXi exécute la 2e instance de upsmon qui se connecte également à la même machine virtuelle upsd via le réseau interne.
En cas de panne de courant, la séquence suivante a lieu:
- UPS via usbhid-ups rapporte à upsd une panne de courant.
- (facultatif, utile si vous souhaitez arrêter en quelques minutes au lieu de batterie faible) upsmon sur la machine virtuelle lance un minuteur de 5 minutes. La minuterie est interrompue si l'alimentation est rétablie.
- Lorsque la minuterie se déclenche ou lorsque l'onduleur signale une batterie faible, l'upsmon place le drapeau FSD (arrêt forcé) sur upsd.
- Dans une configuration NUT autonome, l'indicateur FSD arrêterait la machine. Mais ici, la commande d'arrêt est remplacée par une simple journalisation comme "Je devrais arrêter maintenant mais j'attends l'hôte à la place". Et ne fait rien.
- L'indicateur FSD est également lu par ESXi upsmon, qui initie l'arrêt de l'hôte ESXi.
- L'hôte ESXi arrête toutes les machines virtuelles une par une. L'important est que la VM qui exécute l'upsd soit arrêtée en dernier (en utilisant la configuration de séquence de démarrage / arrêt ESXi).
- Important: cette machine virtuelle doit disposer d'outils vmware installés. Lorsqu'il reçoit la commande d'arrêt invité de l'hôte, le script d'arrêt vmware-tools est en cours de démarrage. Ce script vérifie l' indicateur / etc / killpower . Si aucun indicateur, il ne fait rien (cela signifie l'arrêt Linux activé par l'utilisateur, pas l'événement UPS). Mais si l'indicateur existe (FSD actif), alors ce script envoie à l'onduleur la commande de mise hors tension différée (disons, en 3 minutes).
- Après avoir exécuté le script vmware-tools, la machine virtuelle invitée s'arrête.
- ESXi voit le dernier état de mise hors tension de la machine virtuelle et s'arrête (cela prend environ 1 minute car il n'y a aucune autre machine en cours d'exécution).
- Dans les 2 minutes restantes, l'onduleur coupe l'alimentation.
- Lorsque l'alimentation est rétablie, l'ESXi démarre et met sous tension toutes les machines virtuelles. La machine de surveillance de l'onduleur doit être démarrée en premier (la même configuration que pour l'ordre d'arrêt).
Téléchargements:
Le NUT pour Linux peut être installé à partir du package.
Le client NUT natif pour le serveur ESXi peut être téléchargé en utilisant le dernier lien sur cette page: http://www.networkupstools.org/download.html
Certains de mes scripts et fichiers de conf sont ici (seules les lignes modifiées sont affichées): http://pastebin.com/KkEeanK1
Remarques:
Bien sûr, il y a plus de détails et il m'a fallu un certain temps pour que cela fonctionne comme il se doit. Mais maintenant, il fonctionne très bien. Ce système prend en compte les cas où vous venez d'arrêter la machine virtuelle de surveillance de l'intérieur (le script vmware-tools n'est pas exécuté), ou s'il s'agit d'un arrêt de machine virtuelle lancé par l'hôte ESXi (pas d'indicateur / etc / killpower, donc pas de chargement de l'onduleur), ou s'il s'agit d'un arrêt ESXi (le même). Le seul important est d'avoir cette machine virtuelle exécutée dès que possible après le démarrage de l'hôte, et de l'arrêter en dernier (donc le temps d'arrêt de l'hôte est prévisible - comme dit ci-dessus, c'est environ 1 minute pour moi et 2 minutes de plus je réserve juste au cas où).
Mon UPS surveillant la machine virtuelle Linux est également un serveur de partage Samba / NFS pour le stockage de sauvegarde, le serveur NAT / DHCP pour les machines virtuelles et certains autres services légers. Il prend environ 22 MHz de partages de processeur ESXi et environ 10 Mo de RAM active lorsqu'il est inactif. En raison de l'utilisation du NUT, vous pouvez alimenter plus d'appareils à partir du même onduleur si nécessaire, et tout cela peut être arrêté sans problème. Aucune carte de moniteur réseau PowerChute et / ou coûteuse n'est requise.