Pregunta Apagado de VMware ESXi activado por el UPS APC conectado a través de USB


Estoy enviando un grupo de servidores ESXi 5.1 a las oficinas remotas, donde recibirán alimentación a través de UPS de APC.

Me gustaría que el UPS activara el apagado del servidor conectado. Luego, me basaría en la configuración de ESXi para encargarse del apagado / suspensión de las máquinas virtuales alojadas en él.

Puedo ver que APC tiene una solución. documentado utilizando su PowerChute Network Shutdown, pero esto implica configurar un servidor adicional por oficina y requiere tarjetas de red en cada UPS. Generalmente usamos UPS sin una tarjeta de red (por ejemplo, Back-UPS Pro); vienen con un conector USB y están disponibles en las ubicaciones donde se encuentran nuestras oficinas.

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


17
2018-01-04 14:33


origen


¿Ha cronometrado el proceso de apagado de las máquinas virtuales a través del apagado del host? ¿Puede la batería mantener el tiempo suficiente para ese período? - ewwhite
Gracias por señalar esto. Aún no, en esta etapa solo estoy enviando los servidores ESXi para ejecutar un controlador de dominio, pero estoy seguro de que una vez que tengamos el recurso en su lugar, agregaremos algunos servidores más, momento en el cual la sincronización podría cambiar. - dunxd
La política de cierre es bastante larga por defecto. Pero para ser honesto, no ejecuto el apagado de UPS en mis hosts o clústeres ESXi. Parece contraintuitivo, pero nunca ha sido un problema. - ewwhite
¿Por qué molestarse entonces en tener UPS en sus hosts ESXi? Si se apaga debido a una interrupción del servicio o porque la batería se agota, obtienes el mismo resultado. - dunxd
Para capear breves apagones. Pero en mis sitios más grandes, tengo 2-4 horas de alimentación de UPS disponibles para el clúster, el almacenamiento y la red de VMWare. - ewwhite


Respuestas:


Según APC, esto no es posible y requiere el cierre de la red Powerchute. Lo intentamos varias veces con USB y no encontramos ninguna 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 los servidores son importantes, ese costo debería valer la pena. También le brinda más supervisión y alertas, lo que podría ser útil 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 se apague el host


5
2018-01-04 14:41



Esta parece ser la respuesta más sensata apoyada por ambos proveedores. Desafortunadamente, VMware no ha pensado en construir nada en ESX / ESXi que haga esto de forma nativa. La solución de red requiere que al menos un conmutador de red también se alimente a través de UPS. - dunxd
No tendría mucho sentido no los conmutadores de red de alimentación a través de UPS ... consumen muy poca corriente y son críticos para cualquier operación de red. - Massimo


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

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

Configuración del software: El maestro NUT (Network UPS Tools) se ejecuta en la máquina virtual, y el esclavo ESXi NUT nativo se ejecuta en el host ESXi.

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

En caso de fallo de alimentación, tiene lugar la siguiente secuencia:

  1. UPS vía usbhid-ups informa a upsd sobre fallas de energía.
  2. (opcional, útil si desea apagar en pocos minutos en lugar de batería baja) inicia la instalación de la VM subido Temporizador de 5 minutos. El temporizador se cancela si se restablece el poder.
  3. Cuando se dispara el temporizador o cuando el UPS informa de batería baja, el sobresalto eleva el indicador FSD (apagado forzado) a upsd.
  4. En una configuración NUT autónoma, el indicador FSD apagaría la máquina. Pero aquí el comando de apagado se reemplaza por un simple registro como "Debería apagar ahora, pero estoy esperando al host". Y no hace nada.
  5. El indicador FSD también es leído por ESXi upsmon, que inicia el apagado del host ESXi.
  6. El servidor ESXi apaga todas las máquinas virtuales una por una. Lo importante es que la máquina virtual que ejecuta 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 herramientas vmware. Cuando recibe el comando guest shutdown del host, se inicia el script vmware-tools shutdown. Este script comprueba la / etc / killpower bandera. Si no hay un indicador, no hace nada (esto significa que el usuario activó el apagado de Linux, no el evento de UPS). Pero si el indicador existe (FSD activo), esta secuencia de comandos envía a UPS el comando de apagado retrasado (por ejemplo, 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 VM y se apaga solo (toma alrededor de 1 minuto porque no hay otras máquinas en ejecución ahora).
  10. En 2 minutos restantes el UPS corta la alimentación.
  11. Cuando se restaura la alimentación, el 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 podría instalarse desde el paquete.

El cliente NUT nativo para el servidor ESXi se puede descargar usando 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 modificadas): http://pastebin.com/KkEeanK1

Notas:

Por supuesto, hay más detalles, y me llevó algo de tiempo hacer que esto funcionara como debería. Pero ahora funciona muy bien. Este sistema da cuenta de los casos en los que acaba de apagar la VM de monitoreo desde adentro (no se ejecuta el script vmware-tools), o si se trata de una VM apagada iniciada por el host ESXi (sin el indicador / etc / killpower, por lo que no se apaga el UPS), o si es un cierre ESXi (el mismo). Lo único importante es hacer que esta VM funcione lo antes posible después del arranque del host y apagarla por última vez (por lo que el tiempo de inactividad del host es predecible, como he dicho anteriormente, es de alrededor de 1 minuto para mí y 2 minutos más de reserva, por si acaso).

Mi UPS de monitoreo de Linux VM también es un servidor compartido Samba / NFS para almacenamiento de respaldo, el servidor NAT / DHCP para VM y algunos otros servicios ligeros. Toma alrededor de 22MHz de recursos compartidos de CPU ESXi y alrededor de 10MB de RAM activa cuando está inactivo. Debido al uso de la TUERCA, puede alimentar más dispositivos desde el mismo UPS si es necesario, y todos ellos pueden apagarse con gracia. No se requiere PowerChute y / o tarjeta de monitor de red costosa.


19
2018-01-30 01:43





Súper pregunta. En realidad, es posible hacerlo bastante 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 máquina virtual de Linux - Yo uso Ubuntu. Solo necesitas 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 máquina virtual coincida con el controlador físico físico actual al que está conectado el dispositivo APC, es decir, solo agregue un controlador XHCI si el dispositivo físico es un dispositivo USB3. Los desajustes parecen causar problemas extraños en el controlador de dispositivo USB de Linux.
    • Si las cosas no están funcionando 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, bueno, entonces es un problema. Tengo una configuración con este tipo de problema y no tengo una solución real.
  4. Instalar apcupsd en la VM de Linux - en Ubuntu, puedes hacerlo sudo apt-get install apcupsd para instalar la última versión. El proyecto NUT también es bueno, pero soy un tradicionalista.
  5. Instala la utilidad plink haciendo sudo apt-get install putty-tools
  6. Conéctate a tu host ESXI haciendo plink root@<your ESXi host IP>. Puede cerrar la conexión inmediatamente. El objetivo es obtener la clave del host guardada para que plink no la vuelva a solicitar cuando la ejecutemos a través de un script
  7. Editar /etc/apcupsd/apcupsd.conf y cambia 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úrate 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 root@< your ESXi host IP > -pw < your root pw > "/sbin/shutdown.sh && /sbin/poweroff" ;;
  9. Reinicie apcupsd utilizando sudo service apcupsd restart Y ver si las cosas funcionan invocando. apcaccess. Si no, revisa los registros y dmesg
  10. Asegúrese de que todas las máquinas virtuales que necesitan apagarse bien en caso de un fallo de alimentación tengan instaladas las herramientas de VMWare. También asegúrese de que sean parte de la lista de inicio / apagado de VM (en vSphere Web Client, vaya a: vCenter -> <your host> -> Manage -> Settings -> VM Startup/Shutdown). Asegúrese de que la acción de apagado es cerrar el sistema operativo invitado.

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

Si desea monitorear cosas de sus máquinas virtuales, puede configurar instancias apcupsd esclavas en ellas que se conecten a la máquina virtual maestra de control de UPS de Linux. Sus archivos apcupsd.conf esclavos deben 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.


14
2017-09-09 08:42



Esa es una maldita respuesta sólida. ¡Muchas gracias! - dunxd
+1 funcionó a la perfección. ¡Primera vez! - Morten Kristensen
Esta respuesta funcionó perfectamente, aunque en la oficina de mi cliente tuvimos que modificar el doshutdown secuencia un poco Agregamos ${APCUPSD} --killpower justo antes de la /usr/bin/plink Parte para que el UPS se apague al cabo de un rato y se reinicie automáticamente cuando vuelva la energía. Además, vale la pena señalar que el paso 6 se debe hacer como root adquirido a través de su o sudo su, pero no  sudo -s. - Andrea Lazzarotto


Podría considerar usar el Funcionalidad de transferencia de dispositivos USB a un invitado que ejecuta PowerChute u otro software capaz de monitorear el estado del UPS y capaz de activar un apagado en el host ESXi (por ejemplo, apcupsd). ESXi oficialmente solo admite un número muy limitado de dispositivos USB para la transferencia, pero la gente ha estado conectando y pasando a través de diferentes clases de dispositivos por un tiempo ya con un é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 CentOS Linux VM.


4
2018-01-04 14:42





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.


2
2018-01-04 16:21



Agregue más detalles, ya que se trata de una configuración no documentada en lo que respecta a APC o vmware. - dunxd


Si bien es posible (probablemente / en general), no creo que el apagado automático de una computadora con la batería sea una buena idea. Si va a hacer eso, entonces para propósitos y propósitos más prácticos, probablemente debería ahorrar el dinero de un UPS con respaldo de batería y dejar que la pérdida de energía apague su máquina. (Por supuesto, un apagado limpio siempre es preferible a una pérdida de energía, pero parece que se está perdiendo el tiempo de tener una batería de más de un par de minutos si apaga automáticamente todo cuando pierde la alimentación. )

La forma en que lo he manejado siempre es tener una alerta de monitoreo de las SA cuando se corta la alimentación, para que las SA puedan usar su materia gris para decidir cuándo (o incluso si) apagar los servidores. Si se trata de una interrupción breve, puede que no sea una buena idea apagar los servidores, o puede dejar algunos servidores funcionando el mayor tiempo posible y apagarlos solo antes de que la batería esté a punto de agotarse. Realmente me parece una tarea de toma de decisiones más adecuada para un humano que una simple regla.


1
2018-01-04 15:33



No tiene que configurar su UPS para que active un apagado de inmediato, pero sí quiere que se apague antes de que las baterías se agoten por completo; de lo contrario, tendrá que comprar más baterías, especialmente en algunos de los lugares donde trabajo y con la alimentación diario. Por supuesto, es genial involucrar a los humanos, pero no siempre tienes un administrador del sistema en una oficina remota. - dunxd
@dunxd Buen punto: estoy más acostumbrado a los entornos de alta disponibilidad, donde al menos algunos de los servidores tienen que quedarse despiertos, en el infierno o en lo alto, por lo que el nombre del juego es descubrir la mejor manera de racionar la energía (cierre selectivo dispositivos) para crear el menor impacto posible en el servicio, que no será el enfoque de todos o el caso de uso. - HopelessN00b


En los viejos tiempos de instalaciones baremetalesAPC PowerChute Plus fue una parte esencial de mi proceso de instalación. Usando el simple cable de señalización en serie y sus Red Hat solo binario, fue fácil configurar reglas para gobernar un servidor conectado localmente. Las notificaciones de correo electrónico básicas para eventos de batería UPC, eventos de potencia de línea y acciones de apagado estaban disponibles:

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

UPS on battery: Blackout 000.0 V. 

y

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Normal power restored: UPS on line.  

o

POWERCHUTE MAIL MESSAGE
Message from PowerChute@Bonanza:

Shutdown started.  

Más una interfaz razonable para ver lo que estaba pasando ...

enter image description here

Ese software finalmente se hizo comercial (o fue enterrado en el sitio web de APC). Hubo algunos enfoques de código abierto para proporcionar algo similar. Pero todo esto se complica con solo hosts VMWare ESXi.

Parece que esto es algo que VMWare debería haber incorporado en el hipervisor base. Es básico y podría ofrecer un nivel decente de protección para los usuarios. Los remedios más comunes que veo ahora son el paso de USB a una VM dedicada, un enfoque de daemon de red o hacer lo que hago; no configurando ningún apagado automático o batería ...

Por supuesto, normalmente utilizo un UPS que puede soportar la carga del sistema durante una hora o más, pero ocurren interrupciones prolongadas. Tal vez una alternativa sea recolectar algunas tarjetas de interfaz de red renovadas o de bajo costo y planear comprar dispositivos SmartUPS como mínimo ...


1
2018-01-04 16:06





Echa un vistazo al siguiente enlace. No es la solución más elegante, sino una solución muy práctica y muy directa. Existen posibles inconvenientes en términos de seguridad (según el diseño de su red particular, los invitados cargados en los hosts y el acceso que los usuarios tienen a esos invitados, pero puede hacer esa llamada).


0
2018-01-31 19:57





Utilicé la solución MrMajestyk y solo cambié el acceso ssh a través de plink con acceso ssh sin contraseña usando la clave pública rsa. La clave rsa generada en la máquina virtual apcupsd debe incluirse en / etc / ssh / keys-root / authorized_keys del host vmware.


0
2018-05-08 15:49