Tengo un servidor doméstico (HP Proliant ML310 G4) que compré a mi empleador hace aproximadamente un mes. El servidor ejecuta Debian Linux y lo uso para casi todo. Puedo salir adelante haciendo esto porque mis necesidades no son tan exigentes, por lo que el servidor rara vez está bajo cargas pesadas en un momento dado. Este servidor tiene una matriz RAID1 de 2 TB (con un repuesto dinámico) administrado por mdadm que uso para compartir archivos en mi red a través de Samba. Estoy ejecutando el sistema operativo desde un disco duro más pequeño que no es parte de la matriz.
Tengo el servidor alimentado a través de un pequeño UPS de 255 vatios porque lo necesito para soportar pequeñas fluctuaciones de energía sin caer. Esto es muy importante porque un apagado repentino y sucio (causado por un corte de energía o un apagón) puede arruinar la matriz RAID, lo que ya sucedió en una ocasión.
En caso de una falla de energía, estoy estimando que el UPS tiene solo 10-15 minutos de energía. Puede haber más, pero no quiero suponer automáticamente que la hay. Esto es suficiente para superar los apagones que duran unos minutos o menos. Sin embargo, si la alimentación se apaga durante varias horas, necesito que el servidor se apague automáticamente antes de que falle la alimentación del UPS. Con suerte, esto evitará que la integridad de RAID se mangue en esas situaciones.
Este tipo de cosas es fácil en una computadora portátil b / c, tiene sensores incorporados para determinar cuándo funciona con batería, pero este servidor no (por lo que sé). Tengo una configuración de red inusual donde mi módem DSL está separado de mi enrutador. El enrutador también está en el UPS, lo que me permite ingresar SSH a través de mi computadora portátil y apagar el servidor en caso de una falla de energía. Desafortunadamente, esto solo funciona si estoy allí en el momento de hacerlo. Necesito una solución que siempre funcione si estoy allí para intervenir o no.
Como mi módem DSL no está en el UPS, se apagaría con todo lo demás si falla la alimentación. Lo configuré así deliberadamente porque tengo una idea sobre cómo resolver este problema: estaba pensando en escribir un script que hiciera ping a google.com o algún otro sitio de alto tráfico / alta disponibilidad. Si el ping se completa con éxito, el servidor seguirá ejecutándose. Si el ping falla (porque el módem está apagado), la secuencia de comandos pensaría que está apagado y le indicará al servidor que se apague. Agregaría el script a Cron y lo ejecutaría cada 5 minutos. Con suerte, eso le daría al servidor suficiente tiempo para apagarse antes de que el UPS se quede sin energía.
Antes de tomar la molestia de escribir el guión, me gustaría saber si hay una mejor manera de hacer lo que necesito. Gracias de antemano por cualquier ayuda.
fuente
Respuestas:
Hay una forma antigua pero probada: utilice un módem analógico antiguo. Aquí es cómo
Ahora sondee el módem cada pocos segundos
ATZ[Enter]
y espere queOK[Enter]
si el módem no responde, puede suponer que no tiene energía, lo que significa que el UPS está con batería.Editar
El punto principal es que si su conexión a Internet se cae por alguna otra razón, el servidor no se apagará, como debería ser.
Editar 2
De los comentarios:
fuente
Un ups generalmente viene con un conector USB o COM1. Cuando conecta esto a su servidor, puede comenzar a monitorear el UPS.
En un entorno Windows, sin instalar el software, los mensajes ya están registrados y cerrará el servidor por usted. No sé cómo funciona esto en Linux, pero apuesto a que hay algunos paquetes de software disponibles para interactuar con su UPS.
fuente
Si está utilizando Debian, intente usar NUT (herramientas de UPS de red). Utilizo NUT para hacer exactamente lo que usted describe en mi Synology NAS (que ejecuta busybox) y en un servidor web hogareño que ejecuta Ubuntu 12.04 LTS. Tengo el NAS conectado a través de USB al UPS por la misma razón que usted, la pérdida potencial de todos mis archivos.
Creo que el demonio loco consulta el UPS cada segundo para determinar el estado. Cuando el UPS está en modo de batería, se puede configurar para que se apague correctamente o espere X minutos primero, etc. También puede tener múltiples clientes configurados para conectarse al demonio loco que ejecuta en su servidor. Por lo tanto, su servidor también puede indicarle a varias PC en su red que se apaguen correctamente. Para la ejecución del apagado, puede proporcionar su propio script para cerrar los servicios de una manera específica, o puede usar el script incorporado que solo llama a shutdown -h, si recuerdo correctamente.
Sitio web de NUT
Había mejores sitios para encontrar información, pero no puedo recordarlos en este momento. La configuración puede ser difícil, pero si estás hablando de perder potencialmente tu RAID, ¡échale un vistazo! Dependiendo de sus necesidades, es posible que no necesite el conjunto completo de NUT, es posible que pueda sobrevivir solo con la porción UPSMON. Creo que puede obtener esto en el paquete de Ubuntu "nut-client".
También hay un cliente NUT para Windows, pero en Windows podría ser mejor usar algo como PowerChute o algo similar.
fuente