Un servidor, dos UPS APC en fuentes de alimentación redundantes: ¿Cómo activar el apagado?

10

Tengo un servidor en rack y sus fuentes de alimentación redundantes conectadas en dos APC Smart-UPS 3000 XLM. Cada UPS está conectado a dos fuentes de alimentación de red diferentes.

Se están ejecutando dos instancias de apcupsd, cada una conectada a su propio UPS. Ambos pueden detectar cuando un UPS está en la batería, y cada UPS puede activar un apagado en el servidor.

La pregunta es: ¿Cómo NO apagar si SOLO UN UPS se queda sin batería?

Nota: Smart-UPS 3000 XLM tiene una función "Power Sync" que puede conectarse a su par y detectar su estado. Pero cuando desconecté uno de ellos, la orden de apagado se envió de todos modos. Estoy pensando en modificar los scripts de apagado para verificar con "apcaccess" si los otros ups están inactivos. Cualquier experiencia en esto sería apreciada!

Falken
fuente

Respuestas:

13

Actualmente, cuando uno de los dos UPS muere, se activa el evento doshutdown y ejecuta el script predeterminado a través de apccontrol . El script de doshutdown ignora el segundo UPS, ya que no están conectados a un evento, y continúa normalmente con el apagado.

Para tener los eventos de doshutdown algo conectados, las dos instancias de apcupsd necesitan un archivo de configuración específicamente personalizado. La diferencia residirá en el directorio desde el que se deben ejecutar los scripts de eventos.

Principales propiedades de las primeras empresas, en /etc/apcupsd/apcupsd.ups0.conf

SCRIPTDIR /etc/apcupsd/ups0
UPSNAME ups0
DEVICE /dev/ups0
PWRFAILDIR /etc/apcupsd/ups0
NOLOGINDIR /etc/apcupsd/ups0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.0.events

Y para los ups1, en /etc/apcupsd/apcupsd.ups1.conf

SCRIPTDIR /etc/apcupsd/ups1
UPSNAME ups1
DEVICE /dev/ups1
PWRFAILDIR /etc/apcupsd/ups1
NOLOGINDIR /etc/apcupsd/ups1
NISPORT 3552
EVENTSFILE /var/log/apcupsd.1.events

Cada scriptdir debe obtener una copia de los scripts predeterminados.
Queremos personalizar el script de doshutdown , que no apagará directamente la máquina, pero debe verificar si el otro UPS todavía está encendido o si está en modo apagado.

En la parte superior del script de doshutdown , podríamos agregar algo como

para ups0

if [ ! -f /tmp/ups1.is.down ]
then
  touch /tmp/ups0.is.down
  exit 99
fi

para ups1

if [ ! -f /tmp/ups0.is.down ]
then
  touch /tmp/ups1.is.down
  exit 99
fi

el estado 99 tiene un significado especial, que le dice a apccontrol que detenga la acción en progreso. Las cinco líneas verifican si se ha creado el otro archivo UPS-down-file; si no , el archivo de bajada se crea para las bajadas y se cierra. En caso afirmativo , lo que significa que el otro UPS está apagado, este también se está apagando, por lo que el script debe continuar y apagar la máquina.

Los archivos /tmp/usp[01].is.downindican si el ups [01] está actualmente abajo.

Importante: el script de inicio init.d de apcupsd debería eliminar estos archivos, si se crearon en una sesión anterior:

rm -f /tmp/usp[01].is.down

Finalmente, los directorios creados anteriormente, / etc / apcupsd / ups [01] deberían tener acceso al usuario apcupsd (o al usuario relevante que ejecute las instancias).

chown -R apcupsd /etc/apcupsd/ups[01]

Por favor, eche un vistazo a la documentación detallada .

edit corrigió los /tmp/ups[01].is.downnombres, .isfaltaba el.

Ø de anillo
fuente
1
y los usuarios habituales pueden detener su servidor con touch /tmp/ups1.is.down; toque /tmp/ups0.is.down: D Por lo tanto, sería mejor usar / var / run, por ejemplo. Por cierto. si alguien corta y pega la solución, el rm -f /tmp/usp[01font>.is.down es un error tipográfico. Y, por cierto, debe eliminar el /tmp/ups[01font>.is.down del caso fuera de batería del apccontrol, cuando vuelva la energía.
Harka Gyozo
1
Sugeriría tocar su propio archivo is.down ANTES de verificar el otro; tal como está ahora, creo que hay una pequeña ventana de condición de carrera si ambos ups salen exactamente al mismo tiempo.
Michael Kohne
4

Mira NUT. Maneja esto bien. Defina la cantidad de fuentes de alimentación de cada UPS y la cantidad de fuentes de alimentación requeridas. El apagado no se activará mientras haya suficientes fuentes de alimentación que no estén en el UPS.

BillThor
fuente