Saltar al contenido

Apagado de VMware ESXi provocado por APC UPS conectado a través de USB

Investigamos en el mundo on line y de este modo darte la solución a tu dilema, si continúas con dificultades déjanos la duda y te responderemos porque estamos para servirte.

Solución:

Solución 1:

Si es posible. Aquí hay detalles de mi configuración similar.

Configuración de hardware:
APC Smart-UPS 1500 conectado al host ESXi 5.1 mediante USB. Una máquina virtual Linux que se ejecuta en este host ESXi. El UPS está conectado a esta máquina virtual mediante la opción de paso a través de USB ESXi.

Configuración de software:
El maestro NUT (Network UPS Tools) se ejecuta en la VM y el esclavo nativo ESXi NUT se ejecuta en el host ESXi.

Lógica de apagado:
VM está ejecutando el controlador de UPS usbhid-ups que se encarga de la comunicación con UPS a través de USB. los upsd El proceso se conecta al UPS a través del controlador usbhid-ups y monitorea el estado del UPS. los upsmon El proceso maestro que se ejecuta en la misma máquina se conecta al upsd e inicia el apagado. El host ESXi está ejecutando la segunda instancia de upsmon que también se conecta a la misma máquina virtual upsd a través de la red interna.

En caso de corte de energía, tiene lugar la siguiente secuencia:

  1. UPS a través de usbhid-ups informa a upsd sobre fallas de energía.
  2. (opcional, útil si desea apagar en unos minutos en lugar de batería baja) se inicia upsmon en la VM levantado Temporizador de 5 minutos. El temporizador se cancela si se restablece la energía.
  3. Cuando el temporizador se dispara o cuando el UPS informa de batería baja, el upsmon eleva el indicador FSD (apagado forzado) a upsd.
  4. En una configuración NUT independiente, el indicador FSD apagaría la máquina. Pero aquí, el comando de apagado se reemplaza por un registro simple como “Debería apagar ahora, pero estoy esperando el host”. Y no hace nada.
  5. ESXi upsmon también lee el indicador FSD, que inicia el apagado del host ESXi.
  6. El host ESXi apaga todas las máquinas virtuales una por una. Lo importante es que la máquina virtual que ejecuta el upsd debe apagarse en último lugar (utilizando la configuración de secuencia de inicio / apagado de ESXi).
  7. Importante: esta máquina virtual debe tener instaladas las herramientas vmware. Cuando recibe el comando de apagado de invitado del host, se inicia el script de apagado de vmware-tools. Este script busca el / etc / killpower bandera. Si no hay ningún indicador, no hace nada (esto significa que el usuario ha desactivado Linux, no el evento del UPS). Pero si la bandera existe (FSD activo), entonces este script envía al UPS el comando de apagado retardado (digamos, en 3 minutos).
  8. Después de ejecutar el script vmware-tools, la máquina virtual invitada se apaga.
  9. ESXi ve el último estado de apagado de la máquina virtual y se apaga solo (tarda alrededor de 1 minuto porque no hay otras máquinas ejecutándose ahora).
  10. En los 2 minutos restantes, el UPS corta la energía.
  11. Cuando se restablece la energía, ESXi se inicia y enciende todas las máquinas virtuales. La máquina de monitoreo de UPS debe iniciarse primero (la misma configuración que para la orden de apagado).

Descargas:

La NUT para Linux se puede instalar desde el paquete.

El cliente NUT nativo para el servidor ESXi se puede descargar utilizando el último enlace de esta página: http://www.networkupstools.org/download.html

Algunos de mis scripts y archivos conf están aquí (solo se muestran las líneas cambiadas): http://pastebin.com/KkEeanK1

Notas:

Por supuesto, hay más detalles, y me tomó un tiempo hacer que esto funcionara como debería. Pero ahora funciona muy bien. Este sistema tiene en cuenta los casos en los que simplemente apaga la VM de monitoreo desde adentro (el script vmware-tools no se ejecuta), o si es un apagado de VM iniciado por el host ESXi (sin indicador / etc / killpower, por lo que no hay carga del UPS apagado), o si es un apagado de ESXi (lo mismo). Lo único importante es tener esta máquina virtual ejecutándose lo antes posible después del inicio del host y apagarla al final (por lo que el tiempo de inactividad del host es predecible; como se dijo anteriormente, es alrededor de 1 minuto para mí y 2 minutos más los reservo por si acaso).

Mi UPS que monitorea Linux VM también es un servidor compartido Samba / NFS para almacenamiento de respaldo, el servidor NAT / DHCP para VM y algunos otros servicios livianos. Se necesitan alrededor de 22 MHz de recursos compartidos de CPU ESXi y alrededor de 10 MB de RAM activa cuando está inactivo. Debido al uso de la NUT, puede alimentar más dispositivos desde el mismo UPS si es necesario, y todos se pueden apagar sin problemas. No se requiere PowerChute y / o una costosa tarjeta de monitor de red.

Solucion 2:

Súper pregunta. De hecho, es posible hacer esto bastante bien, al menos en algunas configuraciones. Probé la siguiente receta en varios hosts ESXi 5.5. Básicamente, la solución es la siguiente:

  1. Habilite el acceso SSH en su host ESXi
  2. Cree una máquina virtual Linux: yo uso Ubuntu. Solo necesita una configuración mínima, sin GUI ni nada.
  3. Conecte su dispositivo APC a través de USB al host ESXi y páselo a la VM de Linux.
    • Asegúrese de que el controlador USB que agregue a la VM coincida con el controlador USB físico real al que está conectado el dispositivo APC, es decir, solo agregue un controlador XHCI si el dispositivo físico es un dispositivo USB3. Las discrepancias parecen causar problemas extraños en el controlador del dispositivo USB de Linux.
    • Si las cosas no funcionan y ves errores como ctrl urb status -62 en dmesg, es probable que el controlador físico no coincida con el de su máquina virtual. Si coinciden, entonces es un problema. Tengo una configuración con este tipo de problema y no tengo una solución real.
  4. Instalar en pc apcupsd en la máquina virtual de Linux: en Ubuntu, puede hacer sudo apt-get install apcupsd para instalar la última versión. El proyecto NUT también es agradable, pero yo soy tradicionalista.
  5. Instale la utilidad plink haciendo sudo apt-get install putty-tools
  6. Conéctese a su host ESXI haciendo plink [email protected]. Puede cerrar la conexión inmediatamente. El objetivo es guardar la clave de host para que Plink no vuelva a solicitarla cuando la ejecutemos a través de un script.
  7. Editar /etc/apcupsd/apcupsd.conf y cambie los elementos a continuación para que coincidan:

    UPSNAME < the name you'd like your UPS to have >
    UPSCABLE usb
    UPSTYPE usb
    # DEVICE DIRECTIVE should be blank for USB
    DEVICE

    También asegúrese de que /etc/default/apcupsd tiene ISCONFIGURED=yes
  8. Editar /etc/apcupsd/apccontrol y desplácese hasta el doshutdown caso. Haz que se vea así:

    doshutdown)
    echo "UPS $2 initiated Shutdown Sequence" | $WALL
    # Shut down indirectly by triggering the ESXi host to do the
    # shutdown via VMWare tools
    /usr/bin/plink [email protected]< your ESXi host IP > -pw < your root pw > "/sbin/shutdown.sh && /sbin/poweroff"
    ;;
  9. Reinicie apcupsd usando sudo service apcupsd restart y ver si las cosas funcionan invocando apcaccess. Si no es así, verifique los registros y dmesg
  10. Asegúrese de que todas las máquinas virtuales que necesitan apagarse correctamente en caso de un corte de energía tengan VMWare Tools instaladas. También asegúrese de que formen parte de la lista de inicio / apagado de VM (en vSphere Web Client, vaya a: vCenter -> -> Manage -> Settings -> VM Startup/Shutdown). Asegúrese de que la acción de apagado sea apagar el sistema operativo invitado.

Una vez que tenga estas cosas funcionando, doshutdown scriptlet del paso 8 se invoca en un corte de energía. A su vez, se invoca el script shutdown.sh en el host ESXi, que indica al paquete VMWare Tools en cada VM de su host que realice un apagado limpio a través del sistema operativo invitado. En mi experiencia, funciona mejor que el software PowerChute de APC.

Si desea monitorear cosas desde sus máquinas virtuales, puede configurar instancias de apcupsd esclavas en ellas que se conectan a la máquina virtual Linux de control de UPS maestro. Sus archivos esclavos apcupsd.conf deberían tener una entrada como esta:
UPSTYPE net < your UPS control VM IP >:3551

Entradas como UPSCABLE y eso no importa en este caso. Esto funciona con la versión de Windows de apcupsd (disponible aquí) también. Puedes usar el incluido apctray.exe para comprobar el estado actual de las cosas.

Eso lo cubre bastante, creo.


Solución 3:

Según APC, esto no es posible y es necesario que se apague la red Powerchute. Intentamos esto varias veces con USB y no encontramos una solución.

VMWare tiene información aquí sobre el uso de la solución aprobada por APC.

También pensaría que SmartUPS sería una mejor opción y que puede encajar con la tarjeta de red. Naturalmente, más dinero, pero si sus servidores son importantes, ese costo debería valer la pena. También le brinda más monitoreo y alertas que pueden ser útiles en un sitio remoto. También debe garantizar un tiempo de ejecución suficiente para que todas las máquinas virtuales se apaguen limpiamente y luego apaguen el host.


Solución 4:

Puede considerar usar la función de transferencia del dispositivo USB a un invitado que ejecute PowerChute u otro software capaz de monitorear el estado del UPS y capaz de desencadenar un apagado en el host ESXi (por ejemplo, apcupsd). ESXi oficialmente solo admite una cantidad muy limitada de dispositivos USB para el paso a través, pero la gente ha estado conectando y pasando a través de diferentes clases de dispositivos durante un tiempo con éxito variable, pero el APC UPS USB parece funcionar de acuerdo con este tutorial para una máquina virtual de Windows. o este para una VM CentOS Linux.


Solución 5:

Eche un vistazo a vSphere Management Assistant (vMA) desde aquí. Lo usamos en mi oficina para hacer lo que está intentando, sin embargo, con Smart-UPS conectado a través de USB en lugar de Back-UPS.

Si te ha resultado de ayuda nuestro post, sería de mucha ayuda si lo compartieras con más entusiastas de la programación y nos ayudes a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *