APC Back-UPS 2200VA con Ubuntu 22.04
Recientemente el centro se ha dotado de 2 SAIs APC Back-UPS 2200VA para proteger un servidor y equipos de red.
Este SAI cuenta con una batería de plomo y ácido que puede alimentar una carga con una potencia máxima de 1200W. El SAI está disponible en versión con conectores IEC C14 o —como hemos escogido nosotros— Schuko.
Para nosotros los más relevante es que el SAI se puede monitorizar Network UPS Tools (NUT).
Instalación de NUT
En Ubuntu 22.04 encontramos el metapaquete nut
en los repositorios oficiales con todo lo necesario:
apt install nut
NUT utiliza los siguientes procesos:
- Un driver adecuado para el SAI. El driver habitual en los equipos APC conectados al puerto USB es
usbhid-ups
. Pero si se utiliza otro equipo se debe buscar el driver adecuado en la página del proyecto: https://networkupstools.org/stable-hcl.html upsd
que se comunica con el SAI utilizando el driver y admite la conexión de procesos monitor (upsmon
) a través de la red.upsmon
que se comunica con upsd para monitorizar el SAI y tomar la decisión de iniciar el apagado del sistema operativo.
Esta arquitectura permite una gran flexibilidad. Desde escenarios sencillos en los que un ordenador ejecuta los tres servicios para monitorizar un SAI hasta despliegues en los que un SAI grande alimenta equipos diferentes o un equipo con fuentes redundantes tiene varios SAIs.
Cuando el ordenador tiene su propio SAI y todo está configurado se pueden ver los tres procesos en ejecución:
1 137 1580 1 20 0 3604 372 do_sel Ss ? 0:00 /lib/nut/usbhid-ups -a ups 1 137 1588 1 20 0 7200 2440 do_pol Ss ? 0:00 /lib/nut/upsd 1 0 1591 1 20 0 5020 240 pipe_r Ss ? 0:00 /lib/nut/upsmon 5 137 1592 1591 20 0 8728 4248 hrtime S ? 0:00 \_ /lib/nut/upsmon
Una vez instalado tendremos disponibles dos unidades de systemd
para controlar los componentes:
nut-server.service
que lanza el driver yupsd
.nut-monitor.service
que lanzaupsmon
.
Configuración de NUT
Fichero: /etc/nut/nut.conf
En este fichero se indica el modo de funcionamiento de NUT. Tal y como indican los comentarios del fichero para un servidor que tiene su propio SAI el modo debe ser standalone
.
# Network UPS Tools: example nut.conf # ############################################################################## # General section ############################################################################## # The MODE determines which part of the NUT is to be started, and which # configuration files must be modified. # # This file try to standardize the various files being found in the field, like # /etc/default/nut on Debian based systems, /etc/sysconfig/ups on RedHat based # systems, ... Distribution's init script should source this file to see which # component(s) has to be started. # # The values of MODE can be: # - none: NUT is not configured, or use the Integrated Power Management, or use # some external system to startup NUT components. So nothing is to be started. # - standalone: This mode address a local only configuration, with 1 UPS # protecting the local system. This implies to start the 3 NUT layers (driver, # upsd and upsmon) and the matching configuration files. This mode can also # address UPS redundancy. # - netserver: same as for the standalone configuration, but also need # some more network access controls (firewall, tcp-wrappers) and possibly a # specific LISTEN directive in upsd.conf. # Since this MODE is opened to the network, a special care should be applied # to security concerns. # - netclient: this mode only requires upsmon. # # IMPORTANT NOTE: # This file is intended to be sourced by shell scripts. # You MUST NOT use spaces around the equal sign! MODE=standalone
Fichero: /etc/nut/ups.conf
En este fichero se configuran los parámetros de la conexión con el SAI indicando el driver a utiliar.
Si se utiliza una conexión USB el puerto se dejará en auto
.
El proyecto NUT mantiene una base de datos de equipos que se pueden consultar en https://networkupstools.org/stable-hcl.html
En nuestro caso:
[ups] driver = usbhid-ups port = auto desc = "APC Back-UPS 2200VA"
Fichero: /etc/nut/upsd.conf
Es el fichero de configuración de upsd
y no es necesario cambiar nada pues los valores por defecto ya resultan razonables al permitir únicamente conexiones locales a través de 127.0.0.1
.
Pero si se desea que procesos upsmon
se conecten a través de la red se podrá permitir el acceso con la sentencia LISTEN
# LISTEN <address> [<port>]
# LISTEN 127.0.0.1 3493
# LISTEN ::1 3493
#
# This defaults to the localhost listening addresses and port 3493.
# In case of IP v4 or v6 disabled kernel, only the available one will be used.
#
# You may specify each interface you want upsd to listen on for connections,
# optionally with a port number
Fichero: /etc/nut/upsd.users
En este fichero se especifican las credenciales de dos usuarios:
- El usuario
admin
con capacidad para actuar sobre el SAI. - El usuario
monuser
con capacidad para monitorizar el SAI.
Naturalmente las contraseñas utilizas son un ejemplo :-)
[admin] password = supersecreto actions = SET instcmds = ALL [monuser] password = secreto upsmon master
Fichero: /etc/nut/upsmon.conf
En este fichero se debe indicar el SAI a monitorizar.
En nuestro caso utilizaremos el usuario monuser
definido anteriormente.
MONITOR ups@localhost 1 monuser secreto master
Monitorización con upsc
Cuando todo está configurado y se han reiniciado los demonios es posible utilizar el cliente upsc para obtener información sobre nuestro SAI.
root@dpt-inf-27:/etc/nut# upsc ups Init SSL without certificate database battery.charge: 100 battery.charge.low: 10 battery.mfr.date: 2001/01/01 battery.runtime: 3816 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 27.3 battery.voltage.nominal: 24.0 device.mfr: American Power Conversion device.model: Back-UPS BX2200MI device.serial: 9B2143A30547 device.type: ups driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.parameter.synchronous: no driver.version: 2.7.4 driver.version.data: APC HID 0.96 driver.version.internal: 0.41 input.sensitivity: medium input.transfer.high: 295 input.transfer.low: 145 input.voltage: 228.0 input.voltage.nominal: 230 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: 378700G -302202G ups.load: 0 ups.mfr: American Power Conversion ups.mfr.date: 2021/10/25 ups.model: Back-UPS BX2200MI ups.productid: 0002 ups.realpower.nominal: 1200 ups.serial: 9B2143A30547 ups.status: OL ups.test.result: Done and passed ups.timer.reboot: 0 ups.timer.shutdown: -1 ups.vendorid: 051d
Sobre el apagado de la máquina
El SAI se puede encontrar en diferentes estados que upsc
nos muestra con diferentes valores en la propiedad ups.status
:
- OL— online. Hay suministro eléctrico.
- OB — on battery. No hay suministro eléctrico y el SAI está alimentando a la carga con sus baterías.
- OL CHRG — online charging. Hay suministro eléctrico y el SAI está cargando sus baterías.
- OB DISCHRG — on battery discharging. No hay suministro eléctrico y el SAI está descargando sus baterías para alimentar a la carga.
- OB DISCHRG LB — on battery discharging . No hay suministro eléctrico y las baterías del SAI se han descargado hasta el umbral indicado en
battery.charge.low
.
El servicio uspmon
no inicia el apagado del equipo hasta que las baterías del SAI no se descargan hasta el nivel indicado por battery.charge.low
(por defecto el 10% de la capacidad). Cuando la carga de las baterías desciende hasta este nivel el SAI entra en el estado LB (low battery) y el ordenador inicia la secuencia de apagado.
Una vez que el ordenador se ha apagado el SAI esperará el tiempo indicado en ups.delay.shutdown
y después se apagará.
Cuando se reanude el suministro eléctrico el SAI volverá a encenderse, cargar sus baterías y alimentar a la carga.
Cambio de los parámetros del SAI
La herramienta upsrw
permite modificar los parámetros configurables del SAI.
Por ejemplo, para fijar el valor battery.charge.low
al 50% se podrá utilizar el usuario admin de la siguiente manera:
root@dpt-inf-27:~# upsrw -s battery.charge.low=50 -u admin -p supersecreto ups OK root@dpt-inf-27:~#
Más información: