Client NUT pour ESXi 5 et 6

Dans un précédent article je vous présentait un client NUT natif pour éteindre automatiquement un serveur VMWare ESXi 4 sur une alerte onduleur. La solution présentée n’était pas compatible avec ESXi 5 dont l’architecture logicielle a évoluée. Voici une solution pour intégrer un client NUT natif à vSphere Hypervisor  (ESXi 5.0, 5.1, 5.5, 6.0 et 6.5 testées). Le client NUT est désormais intégré et peut être contrôlé et paramétré depuis vSphere Client.

Mise à jour du 29/01/2017 : La version 2.0 du client NUT a été largement repensé pour mieux s’intégrer dans l’architecture VMware ESXi. Les modifications suivantes ont été apportées :

  • Le client s’appelle désormais NutClient dans la liste des services
  • Les règles de firewall portent le nom de NutServer
  • Le fichier VIB respecte le standard CommunitySupported pour les versions 6.x de ESXi. Pour les versions 5.x il faudra toujours forcer l’installation avec l’option –no-sig-check
  • Le VIB est indépendant, il n’est plus nécessaire d’utiliser les scripts d’installation pour déployer le VIB. Vous pouvez utiliser les outils de déploiement de VMWare. Les scripts servaient à créer les variables UserVars.Nut* c’est désormais intégré dans le VIB.
  • Le client prend en charge les connexions SSL en utilisant la librairie LibreSSL 2.5.0 mais la validité du certificat du serveur NUT n’est pas contrôlé.
  • L’état du service est désormais correctement remonté dans l’interface d’administration vCenter ou le client HTML après un reboot de l’hyperviseur
  • Si les variables de configuration n’apparaissent pas dans l’interface d’administration après l’installation, lancez la commande /etc/init.d/hostd restart sur l’hyperviseur. Attention à ne pas avoir de jobs en cours si vous faites ça (prise de snapshot, VMotion, …).

 

Principe

La procédure consiste à installer dans l’hyperviseur les binaires et scripts nécessaires à la réception des alertes onduleur. Je reprend le schéma des connexions qui ne change pas.

Câblage Onduleur

Câblage Onduleur

Cette solution n’est pas officiellement supportée par VMWare et elle ne s’applique qu’à des hyperviseurs standalone. Elle ne peut pas convenir pour des fermes d’hyperviseurs sous le contrôle d’un VMWare vCenter. Seul le client NUT est ajouté à l’hyperviseur, l’onduleur doit être surveillé par un serveur NUT.

Évolutions par rapport à ESXi 4

Les différences qui font que la solution pour ESXi 4 ne fonctionne pas sous ESXi 5 :

  • La méthode d’installation utilise un fichier VIB (vSphere Installation Bundle). Les binaires qu’il contient correspondent à un client nut 2.7.4 (upsmon et upsc)
  • Dans /etc/passwd, l’utilisateur nobody n’existe plus. Le client tourne désormais avec le compte daemon.
  • Le module VIB ne respecte pas les préconisations de sécurité imposées par VMWare. Vous perdez le support de VMWare en installant ce package. Je bricole pour mes besoins personnels en utilisant une licence gratuite de ESXi sans support, j’ai donc ignoré cette restriction.

Téléchargement du module

L’installation se fait en ligne de commande sur l’hyperviseur : un fichier TAR compressé doit être déposé sur l’hyperviseur.

Téléchargez ici le fichier NutClient-ESXi-2.0.0.tar.gz (1553)

Installation

Activez l’accès ssh à votre host ESXi si ce n’est pas déjà fait. Cela est fait à partir du client vSphere ou de la console. A partir du client : dans l’inventaire choisissez votre hôte ESXi, onglet configuration, dans la liste Logiciel choisir profil de sécurité, dans services cliquez sur propriétés…, choisissez SSH puis options et enfin démarrer. Le service ssh sera actif jusqu’au prochain reboot de l’hyperviseur si vous ne le désactivez pas.

Copiez le fichier NutClient-ESXi-2.0.0.tar.gz dans le répertoire /tmp du host ESXi. Ici je vous  donne l’exemple  depuis une machine linux (remplacez 10.0.0.8 par l’adresse IP du host ESXi ou son nom FQDN). Depuis Windows vous pouvez utiliser l’outil gratuit WinSCP.

[root@linux ~]# scp NutClient-ESXi-2.0.0.tar.gz root@10.0.0.8:/tmp
The authenticity of host '10.0.0.8 (10.0.0.8)' can't be established.
RSA key fingerprint is 89:49:ce:6d:... ...:40:76:7a:4a:fe.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.8' (RSA) to the list of known hosts.
Password: (saisir le mot de passe administrateur ESXi)
NutClient-ESXi-2.0.0.tar.gz          100%  671KB  1.9MB/s   00:00

Passez votre hyperviseur au niveau d’acceptance Communauté si ce n’est pas déjà fait !

Connectez-vous root en ssh à l’hôte ESXi et tapez la suite de commandes suivantes pour installer le VIB (l’opération peu être longue si votre système est installé sur une clé USB lente) :

~ # cd /tmp
/tmp # tar -xzf NutClient-ESXi-2.0.0.tar.gz
/tmp # sh upsmon-install.sh
Installation Result
   Message: Operation finished successfully.
   Reboot Required: false
   VIBs Installed: Margar_bootbank_upsmon_2.7.4-2.0.0
   VIBs Removed:
   VIBs Skipped:

Vous n’avez pas besoin de rebooter pour commencer à utiliser le client NUT sur votre système. Vous devez toutefois le configurer avant son premier lancement.

Vous pouvez supprimer les fichier qui ont été créés dans /tmp et désactiver le service SSH

Configuration

A l’aide de vSphere Client, rendez-vous dans l’onglet configuration de l’hôte ESXi. Sélectionnez les paramètres avancés et sélectionnez les UserVars. Vous avez 6 variables à configurer :

Configuration du client NUT sous ESXi 5

Configuration du client NUT sous ESXi 5

  • UserVars.NutUpsName : Nom de l’onduleur sur le serveur NUT (sous la forme nom_onduleur@nom_ou_ip_serveur). Plusieurs onduleurs peuvent être saisis séparés par un espace. Il n’y aura pas d’arrêt système tant que le dernier onduleur encore debout n’aura pas donné l’ordre d’arrêt.
  • UserVars.NutUser : Nom du compte de connexion au serveur NUT
  • UserVars.NutPassword : Mot de passe du compte de connexion au serveur NUT
  • UserVars.NutFinalDelay : Secondes qu’il faudra attendre après la réception de l’événement batterie faible pour procéder à l’arrêt du système
  • UserVars.NutSendMail : A mettre à 1 pour que le client NUT envoie un e-mail à chaque évènement important de l’onduleur
  • UserVars.NutMailTo   : Adresse e-mail à laquelle envoyer les évènements de l’onduleur

Notez qu’à chaque modification de ces paramètres il sera nécessaire de faire un arrêt/relance du service pour leur prise en compte.

Lancement du service

A l’aide de vSphere Client, rendez-vous dans l’onglet configuration de l’hôte ESXi. Sélectionnez les profils de sécurité et les propriétés des services :

Services-ESXi5

Client NUT dans les services ESXi 5

Dans les options du service Network UPS Tools Client, choisissez le mode de démarrage (Démarrer et arrêter avec l’hôte me semble un bon choix). Vous pouvez également le démarrer immédiatement ou l’arrêter.

NutClientService-ESXi5

Configuration du lancement de NUT Client

Astuces

Utilisez l’onglet de configuration du host ESXi dans vSphere Client pour décider de l’ordre de démarrage et d’arrêt (ou suspension) des machines virtuelles. Cet ordre sera respecté par la procédure d’arrêt sur alerte onduleur.

L’arrêt propre des OS dans les machines virtuelles n’est possible que si les vmware tools sont installées.

Pour désinstaller le client NUT, utilisez le script upsmon-remove qui se trouve dans le fichier que vous avez téléchargé :

/tmp # sh upsmon-remove

Pour estimer le temps nécessaire au serveur pour s’éteindre sur alerte onduleur tapez la commande « /opt/nut/sbin/upsmon -c fsd » sur le host ESXi (par ssh ou sur la console). La procédure d’arrêt est immédiatement lancée.

 

VN:F [1.9.22_1171]
Evaluation: 4.6/5 (23 votes exprimés)
Client NUT pour ESXi 5 et 6, 4.6 out of 5 based on 23 ratings

Suivre les commetaires avec le flux RSS 2.0. Vous pouvez laisser un comentaire, or trackback depuis votre site.

357 Commentaires »

 
  • avatar Bob dit :

    Hi René,

    In the « Update of 29/01/2017 » notice for Version 2.0 it states that « The VIB is independent, so it is no longer necessary to use the installation scripts to deploy the VIB. You can use the VMWare deployment tools. The scripts were used to create UserVars.Nut * variables, which is now integrated into the VIB. »

    Does that mean upsmon-install.sh does not need to be run and instead one can just issue a command like:
    esxcli software vib install -v -f

    I ask because the Installation section on this page still instructs the use of:
    sh upsmon-install.sh

    Regards,
    Bob

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
  • avatar Rob dit :

    I’m getting the following message:

    [root@ESX01:/tmp] ./upsmon-install.sh
    Installation Result
    Message: Host is not changed.
    Reboot Required: false
    VIBs Installed:
    VIBs Removed:
    VIBs Skipped: Margar_bootbank_upsmon_2.7.4-2.0.0

    Any ideas as to what that might be?

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      Is it already installed?

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
      • avatar Rob dit :

        I’m not seeing it as a service, or under UserVars

        VA:F [1.9.22_1171]
        Evaluation: 0 (sur 0 votes)
        • avatar René dit :

          What is the output of command :
          esxcli software vib list | grep ups

          VN:F [1.9.22_1171]
          Evaluation: 0 (sur 0 votes)
          • avatar Rob dit :

            Nothing.

            [root@ESX01:/tmp] esxcli software vib list | grep ups
            [root@ESX01:/tmp]

            VA:F [1.9.22_1171]
            Evaluation: 0 (sur 0 votes)
        • avatar René dit :

          I need to know more about your configuration,
          what is the output of commands :
          esxcli software acceptance get
          and
          uname -a

          VN:F [1.9.22_1171]
          Evaluation: 0 (sur 0 votes)
          • avatar Rob dit :

            [root@ESX01:/tmp] esxcli software acceptance get
            CommunitySupported
            [root@ESX01:/tmp] uname -a
            VMkernel ESX01 6.0.0 #1 SMP Release build-5050593 Feb 9 2017 23:27:25 x86_64 x86_64 x86_64 ESXi

            VA:F [1.9.22_1171]
            Evaluation: 0 (sur 0 votes)
        • avatar René dit :

          Sorry, I can’t reproduce your issue. I’ve made a fresh ESXi 6.0.0 install and upgraded to your build but the install procedure works as expected :
          [root@localhost:/tmp] esxcli software acceptance get
          CommunitySupported
          [root@localhost:/tmp] uname -a
          VMkernel localhost 6.0.0 #1 SMP Release build-5050593 Feb 9 2017 23:27:25 x86_64 x86_64 x86_64 ESXi
          [root@localhost:/tmp] ./upsmon-install.sh
          Installation Result
          Message: Operation finished successfully.
          Reboot Required: false
          VIBs Installed: Margar_bootbank_upsmon_2.7.4-2.0.0
          VIBs Removed:
          VIBs Skipped:
          [root@localhost:/tmp]

          VN:F [1.9.22_1171]
          Evaluation: 0 (sur 0 votes)
  • avatar R dit :

    Hey, I have the UPS client installed on two ESXi 6.0 servers, but the config settings are nowhere to be found in Advanced Settings under UserVars. Have they been moved to a different place?

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      If you have just installed the package and you don’t want to reboot you may try to restart the hostd service from ESXi shell and then reconnect to GUI. Be sure that no other job is running like taking a snapshot or moving a VM. Type : /etc/init.d/hostd restart

      VN:F [1.9.22_1171]
      Evaluation: +1 (sur 1 vote)
      • avatar R dit :

        I’ll give that a try, though I injected the .vib file into the ISO when first installing rather than running the installer so both hosts have since rebooted.

        VA:F [1.9.22_1171]
        Evaluation: 0 (sur 0 votes)
        • avatar René dit :

          Oh, I see. I think that this kind of installation is not supported (yet) by the VIB. You will need to execute manually :
          /etc/init.d/install-upsmon start install
          And then, if UserVars are still not visible, try the hostd restart

          VN:F [1.9.22_1171]
          Evaluation: 0 (sur 0 votes)
  • avatar Guillaume dit :

    bonjour,

    j’ai une question sur l’utilisation de se client nut,

    comment régler l’extinction du serveur ESXI lorsqu’il reste par exemple 30% de batterie ?? car actuellement il me l’arrête vers 10% et le temps d’extinction est limite, l’onduleur coupe avant l’arrêt total de celui-ci..

    merci

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      Les seuils se règlent au niveau du serveur NUT et sur l’onduleur. Voir la doc officielle de NUT

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
      • avatar Guillaume dit :

        merci de ta réponse, connais tu la valeur à modifier dans le serveur nut ? j’ai un onduleur APC Backup 650 (connecté en USB)

        VA:F [1.9.22_1171]
        Evaluation: 0 (sur 0 votes)
        • avatar René dit :

          Je ne connais pas tous les onduleurs. Tu peux connaitre si le driver utilise un seuil en % de batterie en ligne de commande avec upsc nom_onduleur@serveur
          Tu verras une valeur battery.charge.low qui est le seuil pour envoyer les évènements LOWBATT et SHUTDOWN.
          Pour modifier cette valeur sur le serveur tu peux taper la commande :
          upsrw -s battery.charge.low -u adm_account -p adm_password nom_onduleur
          Il te demandera de saisir la nouvelle valeur, tu peux vérifier avec upsc qu’elle a bien été modifiée. Cette valeur est enregistrée dans l’onduleur et est indépendante de NUT.
          Il y a aussi des onduleurs qui utilisent une estimation du temps restant qu’ils calculent en fonction de la charge, c’est bien souvent la valeur battery.runtime.low chez APC qui est une durée exprimée en secondes. On peut aussi la modifier avec upsrw.
          Ensuite il y a aussi des onduleurs qui utilisent les deux seuils, le premier des deux atteint déclenche l’évènement.

          VN:F [1.9.22_1171]
          Evaluation: +2 (sur 2 votes)
  • avatar Havoc dit :

    I just upgraded from 1.4 to 2.0 on my esxi 6.0 box. I am unable to get « upsc ups@x.x.x.x » to work. I wanted to make sure every thing is working correctly but when running that command it says upsc not found

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
  • avatar Alpi dit :

    Hi,

    will upsmon shutdown also active VM’s gracefully?

    BR

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      Active? Upsmon shutdowns only the hypervisor. Then you can gracefully shutdown VMs with VMware tools installed and selecting the action to apply on hypervisor power off.

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
      • avatar Alpi dit :

        in upsmon.conf only poweroff is set as SHUTDOWNCMD. As far as i know « poweroff » doesn’t shutsdown autostart VM’s gracefully. But maybe i’m wrong. I have to test it tonight.

        Maybe SHUTDOWNCMD « shutdown.sh && poweroff » would be better, i will try it tonight..

        VA:F [1.9.22_1171]
        Evaluation: 0 (sur 0 votes)
        • avatar René dit :

          Poweroff does shutdown auto start VM

          VN:F [1.9.22_1171]
          Evaluation: 0 (sur 0 votes)
          • avatar Alpi dit :

            hmmm, i tried both now. With poweroff i didnt find nothing in logs (of VM) that could proving a orderly shutdown process, its just like a power loss and in ESXI syslog also nothing, last entry here is from upsmon itself, thats it.

            With shutdown.sh && poweroff i can prove graceful shutdown on linux VM and also ESXI syslog is chatty after the initial upsmon log-entries, like stopping services terminating watchdog processes and so on.

            So its really doesnt look like that poweroff shutdown both autostart VM’s and ESXI itself.

            Regards

            VA:F [1.9.22_1171]
            Evaluation: 0 (sur 0 votes)
          • avatar René dit :

            It’s under gnu licence. You’re free to change to code to match your needs. Me and many users are using the current ViB and VM can be suspended or powered off (if vmware tools installed) on UPS low batt event as configured in the auto startup settings.

            VN:F [1.9.22_1171]
            Evaluation: 0 (sur 0 votes)
  • avatar Alpi dit :

    Sure, just wanna commute. Anyway, thanks for the work..

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      Thank you. I’m just sharing a configuration I’ve made for my needs. I’m not paid for it and I’m out of spare time to add functions for all users. I want to keep it as simple as possible to prevent disturbing the hypervisor.

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 2 votes)
    • avatar René dit :

      I found some time to make a test and poweroff is doing th job as expected even on latest ESXi 6.5 version. The VM are suspended or gracefully shutdown (needs vmware-tools installed in it) if autopower is configured.
      Note that autopower default behaviour is never applied on VMs that have never been explicitely configured (and then unconfigured). This is a strange behaviour (bug?) since the ESXi 4. In that case VM will be terminated abruptly.

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
  • avatar Holger dit :

    Salut Rene,

    I just installed you package on a VMWare 5.5 ESXi …
    and did some troubleshooting as I coudln’t get the notification emails to work.
    It seems like the mailserver doesn’t like the « (ESXi at HOSTNAME) » that you add to the sender name in brackets. I removed that part and the emails got through … maybe something you could remove in a future version ?!?

    Cheers
    Holger

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      You removed it and it works for you ? You’ve done the job! It was tested with postfix and sendmail MTA, so if it does not work it must be a mail server configuration issue or restriction. I won’t change it.

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
  • avatar Konstantin dit :

    Hi René,

    I has server with two power supply and its connected to different ups. I want shutdown server if both ups become in « On Battary » and « Low battary » state. How make configuration in ESXi’s NUT client?

    Regards,
    Konstantin

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      Only « Low Battery » state is used by this client to shutdown. Why would you want to shutdown on « On Battery » state ? UPS is made for that, to prevent shutdown on every power loss. You need to configure Low Battery level on servers or UPS to allow the clients to have enough time to shutdown properly.
      You can provide several UPS to client : just use a space to separate them in the UserVars.NutUpsName (eg: ups1@server1 usp2@server2). Client will user the same user/password for both, so you need to configure the same account on both servers.

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
  • avatar Chris dit :

    Hey,
    thanks for this vib package.
    For my understanding:
    – Do the VMs perform a gracefully shutdown as well when the hypervisor begins its shutdown process?
    – I need the shutdown to be started as soon as the battery goes online. Waiting for battery-on-low is too late for us!

    Right now, the « Master » of the battery is a different server. ESXi is just the client connecting via upsname@master-server to master-server. The master-server is configured to start its shutdown process after 300 seconds of waiting after battery takes over.

    When do I have to expect that the shutdown-signal gets send from master-server to ESXi-server? Will this signal be sent after 300 seconds of waiting as well, because at this point master-server starts its shutdown process?

    ESXi servers needs to shutdown first.
    Thereafter all other servers.
    (due to iSCSI things…)

    Thanks!
    Chris

    VA:F [1.9.22_1171]
    Evaluation: 0 (sur 0 votes)
    • avatar René dit :

      VMs can be gracefully shutdown or suspended if you configure the auto start in the vcenter or esxi to do so. For VM shutdown you must install the VMware tools in the VM. Shutdown will be initiated if nut server sends a FSD or SHUTDOWN event. To match you needs you must configure the nut server to send this event after 300 seconds on battery. You must read NUT upsmon and upssched manuals to write your configuration. Maybe you can ask the NUT team for support.

      VN:F [1.9.22_1171]
      Evaluation: 0 (sur 0 votes)
      • avatar Chris dit :

        Dear René,
        thanks for your quick reply. I installed vmware tools on all virtual machines and they now shutdown gracefully when the hypervisors executes poweroff – cool, merci beaucoup! 🙂

        However, I have one question regarding the shutdown proccess initiated by power failure / battery:
        – My FreeNAS server is the NUT-master server and it is connected to ups-battery.
        – My FreeNAS server is configured to initiate the shutdown command after 300 seconds power-failure. If the power happens to come back before the time of 300 seconds is up the shutdown is cancelled. After 300 seconds, shutdown is initiated! (Battery has a capacity of 10-20 mins, depending on load)
        – My ESXi-host should be the NUT-slave. I have installed your .vib package and configured the UserVars accordingly.

        My question is:
        How exactly handles your .vib package the shutdown command received from my FreeNAS server? Let’s say, battery is still on level 80% when your .vib package receives the shutdown command. => will the ESXi host then perform shutdown as well? Or is a critical battery level necessary, that your .vib package performs the shutdown?
        By the way: How exactly does a shutdown command look like which is sent from a NUT-master?

        Thanks so much for your help!
        Au Revoir et merci beaucoup pour l’aide
        Chris

        VA:F [1.9.22_1171]
        Evaluation: 0 (sur 0 votes)
        • avatar René dit :

          As soon as the NUT client installed in the ESXi receives the SHUTDOWN event from the NUT server it will start a VM shutdown and then the hypervisor shutdown. You can’t stop it, once it’s started it will go on until the final power off. ESXi is not a slave (in the NUT meaning), it’s a client.

          VN:F [1.9.22_1171]
          Evaluation: 0 (sur 0 votes)
 

Laisser un commentaire

XHTML: Vous pouvez utiliser ces balises : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>