20 votos

Apagado de VMware ESXi provocado por un SAI de APC conectado por USB

Estoy enviando un grupo de servidores ESXi 5.1 a oficinas remotas donde serán alimentados a través de APC UPS.

Me gustaría que el SAI desencadenara un apagado del servidor conectado - entonces confiaría en la configuración de ESXi para encargarse del apagado/suspensión de las VMs alojadas en él.

Veo que APC tiene una solución documentado utilizando su PowerChute Network Shutdown Pero esto implica la instalación de un servidor adicional por oficina, y requiere tarjetas de red en cada SAI. Por lo general, utilizamos SAIs sin tarjeta de red (por ejemplo, Back-UPS Pro), que vienen con un conector USB y son fáciles de conseguir en los lugares donde están nuestras oficinas.

¿Cómo puedo conectar un SAI a un host ESXi a través de USB, para que ESXi detecte un corte de energía y actúe en consecuencia? ¿Alguien ha conseguido hacer esto?

1 votos

¿Has cronometrado el proceso de apagado de las VM's a través del apagado del host? ¿Puede la batería aguantar lo suficiente durante ese periodo?

0 votos

Gracias por señalarlo. Todavía no - en esta etapa sólo estoy enviando los servidores ESXi para ejecutar un controlador de dominio, pero estoy seguro de que una vez que tenemos el recurso en su lugar vamos a añadir algunos servidores más, en cuyo momento el calendario podría cambiar.

0 votos

La política de cierre es bastante larga por defecto. Pero para ser honesto, no ejecuto el apagado de UPS en mis hosts o clusters ESXi. Parece contrario a la intuición, pero nunca ha sido un problema.

25voto

flokra Puntos 5804

Sí, es posible. Aquí están los detalles de mi configuración similar.

Configuración del 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 SAI está conectado a esta VM utilizando la opción de paso de USB de ESXi.

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

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

En caso de fallo de alimentación, se produce la siguiente secuencia:

  1. El SAI a través de usbhid-ups informa a upsd sobre el fallo de alimentación.
  2. (opcional, útil si desea apagar en pocos minutos en lugar de Batería baja) upsmon en la VM inicia upssched Temporizador de 5 minutos. El temporizador se cancela si se restablece la alimentación.
  3. Cuando el temporizador se dispara o cuando el SAI informa de que la batería está baja, el upsmon eleva la flag FSD (apagado forzado) a upsd.
  4. En una configuración de NUT independiente, la flag FSD apagaría la máquina. Pero aquí el comando de apagado es reemplazado por un simple registro como "Debería apagar ahora pero estoy esperando al host en su lugar". Y no hace nada.
  5. La flag FSD también es leída por ESXi upsmon, 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 VM que ejecuta el upsd debe ser la última en apagarse (utilizando la configuración de la secuencia de inicio/apagado de ESXi).
  7. Es importante: esta VM debe tener instaladas las herramientas de vmware. Cuando recibe el comando de apagado del huésped desde el host, el vmware-tools shutdown script está siendo iniciado. Este script comprueba la /etc/killpower flag. Si no hay flag, no hace nada (esto significa que el usuario activó el apagado de linux, no el evento del SAI). Pero si la flag existe (FSD activo), entonces este script envía al SAI el comando de apagado retardado (digamos, en 3 minutos).
  8. Después de ejecutar vmware-tools script la VM huésped se apaga.
  9. ESXi ve el último estado de apagado de la VM y se apaga por sí mismo (tarda alrededor de 1 minuto porque no hay otras máquinas funcionando ahora).
  10. En 2 minutos restantes el SAI corta la corriente.
  11. Cuando se restablece la alimentación, el ESXi se inicia y enciende todas las máquinas virtuales. La máquina de monitorización del SAI debe iniciarse primero (la misma configuración que para el orden de apagado).

Descargas:

El NUT para Linux puede ser instalado desde el paquete.

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

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

Notas:

Por supuesto, hay más detalles, y me llevó algún tiempo hacer que esto funcionara como debería. Pero ahora funciona muy bien. Este sistema tiene en cuenta los casos en los que simplemente se apaga la VM de monitorización desde dentro (vmware-tools scriptno se ejecuta), o si es un apagado de la VM iniciado por el host ESXi (no hay flag /etc/killpower, por lo que no se apaga la carga del SAI), o si es un apagado de ESXi (lo mismo). Lo único importante es que esta VM se ejecute lo antes posible tras el arranque del host, y que se apague en último lugar (para que el tiempo de inactividad del host sea predecible - como se ha dicho anteriormente, es de alrededor de 1 minuto para mí y 2 minutos más que reservo por si acaso).

Mi VM Linux de monitorización del SAI es también el servidor de compartición Samba/NFS para el almacenamiento de las copias de seguridad, el servidor NAT/DHCP para las VMs, y algunos otros servicios ligeros. Toma alrededor de 22MHz de recursos compartidos de la CPU de ESXi y alrededor de 10MB de RAM activa cuando está inactivo. Gracias al uso del NUT se pueden alimentar más dispositivos desde el mismo SAI si es necesario, y todos ellos se pueden apagar con gracia. No se requiere PowerChute y/o una costosa tarjeta de monitorización de red.

17voto

MrMajestyk Puntos 515

Una gran pregunta. En realidad es posible hacer esto muy bien - al menos en algunas configuraciones. He probado 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. Crear una VM de Linux - Yo uso Ubuntu. Sólo necesitas una configuración mínima - sin GUI ni nada.
  3. Conecte su dispositivo APC vía USB al host ESXi y páselo a la VM Linux.
    • Asegúrese de que el controlador USB que añada a la VM coincida con el controlador USB real y físico al que está conectado el dispositivo APC, es decir, añada sólo un controlador XHCI si el dispositivo físico es un dispositivo USB3. Los desajustes parecen causar problemas extraños en el controlador de dispositivos USB de Linux.
    • Si las cosas no están funcionando y ves errores como ctrl urb status -62 en dmesg lo más probable es que el controlador físico no coincida con el de tu VM. Si coinciden, entonces es un problema. Tengo una configuración con este tipo de problema y ninguna solución real para ello.
  4. Instalar apcupsd en la VM de Linux - en Ubuntu, puede hacer sudo apt-get install apcupsd para instalar la última versión. El proyecto NUT también está bien, pero yo soy un tradicionalista.
  5. Instale la utilidad plink haciendo sudo apt-get install putty-tools
  6. Conéctese a su host ESXI haciendo plink root@<your ESXi host IP> . Puedes cerrar la conexión inmediatamente. El objetivo es conseguir guardar la clave del host para que plink no nos la pida de nuevo cuando lo ejecutemos mediante un script.
  7. Editar /etc/apcupsd/apcupsd.conf y cambiar los elementos de abajo 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 Asegúrese también de que /etc/default/apcupsd tiene ISCONFIGURED=yes
  8. Editar /etc/apcupsd/apccontrol y desplácese hasta el doshutdown caso. 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 root@< 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í, comprueba los registros y el dmesg
  10. Asegúrese de que todas las VMs que necesitan apagarse bien en caso de un fallo de alimentación tienen VMWare Tools instalado. Asegúrese también de que forman parte de la lista de inicio/apagado de la VM (en el cliente web de vSphere, vaya a: vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown ). Asegúrese de que la acción de apagado es para apagar el SO invitado.

Una vez que tenga estas cosas en funcionamiento, el doshutdown El scriptlet del paso 8 se invoca en caso de fallo de alimentación. Esto a su vez invoca el shutdown.sh script en el host ESXi, que señala el paquete de VMWare Tools en cada VM en su host para hacer un cierre limpio a través del sistema operativo invitado. En mi experiencia, funciona mejor que el software PowerChute de APC.

Si le gusta monitorear cosas desde sus VMs, puede configurar instancias esclavas de apcupsd en ellas que se conecten a la VM Linux de control de la UPS maestra. Sus archivos apcupsd.conf esclavos deben tener una entrada como esta:
UPSTYPE net < your UPS control VM IP >:3551
Entradas como UPSCABLE y tales no importan en este caso. Esto funciona con la versión de Windows de apcupsd (disponible aquí ) también. Puede utilizar el apctray.exe para comprobar el estado actual de las cosas.

Creo que eso lo cubre todo.

0 votos

+1 ha funcionado a las mil maravillas. La primera vez.

0 votos

Esta respuesta funcionó perfectamente, aunque en la oficina de mi cliente tuvimos que retocar el doshutdown secuencia un poco. Hemos añadido ${APCUPSD} --killpower justo antes de la /usr/bin/plink para que el SAI se apague después de un rato y se reinicie automáticamente cuando vuelva la energía. Además, vale la pena señalar que el paso 6 debe hacerse como root adquirido a través de su o sudo su pero no sudo -s .

5voto

Dave M Puntos 4117

Según APC, esto no es posible y se requiere el apagado de la red Powerchute. Lo hemos intentado varias veces con USB y no hemos encontrado ninguna solución.

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

También pensaría que el SmartUPS sería una mejor opción y que se puede equipar con una tarjeta de red. Naturalmente, es más dinero, pero si sus servidores son importantes, ese coste debería valer la pena. También te da más supervisión y alertas que podrían ser útiles en un sitio remoto. También necesitas asegurar suficiente tiempo de ejecución para que todas las VMs se apaguen limpiamente y luego apagar el host

1 votos

Esta parece ser la respuesta más sensata que apoyan ambos proveedores. Es una lástima que VMware no haya pensado en crear algo en ESX/ESXi que haga esto de forma nativa. La solución de red requiere que al menos un conmutador de red se alimente también a través de un SAI.

2 votos

No tendría mucho sentido no alimentar los conmutadores de red mediante un SAI... consumen muy poco corriente y son fundamentales para el funcionamiento de cualquier red.

4voto

the-wabbit Puntos 28168

Puede considerar la posibilidad de utilizar el Función de paso de dispositivos USB a un huésped que ejecute PowerChute u otro software capaz de monitorizar el estado del SAI y capaz de activar un apagado en el host ESXi (por ejemplo apcupsd ). ESXi oficialmente sólo admite un número muy limitado de dispositivos USB para el passthrough Pero la gente ha estado conectando y pasando a través de diferentes clases de dispositivos por un tiempo ya con éxito variable, pero el APC UPS USB parece funcionar de acuerdo a esta guía para una máquina virtual de Windows o este para una VM de CentOS Linux .

2voto

Genia S. Puntos 12190

Eche un vistazo a vSphere Management Assistant (vMA) de aquí En mi oficina lo utilizamos para hacer lo que usted intenta, sin embargo con Smart-UPS conectado por USB en lugar de Back-UPS.

0 votos

Por favor, añada más detalles ya que esta es una configuración no documentada en lo que respecta a APC o vmware.

0 votos

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: