Pourquoi centraliser la gestion des onduleurs ?
Dans beaucoup d’infrastructures, les onduleurs sont configurés individuellement. Résultat :
- arrêt brutal des machines
- aucune priorisation
- perte de données possible
- autonomie batterie mal exploitée
Avec Network UPS Tools (NUT) installé sur un Raspberry Pi, on peut centraliser la logique et piloter intelligemment toute l’infrastructure.
Architecture typique
- 1 Raspberry Pi (maître NUT)
- 2+ onduleurs connectés en USB
- Plusieurs serveurs (prod, backup, stockage, etc.)
- Shutdown distant via SSH
Le Raspberry devient le cerveau décisionnel.
Le problème classique
Lors d’une coupure :
- tout reste allumé → batterie vidée rapidement
- ou tout s’éteint en même temps → gaspillage d’autonomie
Dans les deux cas, c’est inefficace.
La solution : arrêt progressif
Le principe est simple :
adapter l’arrêt des machines au niveau de batterie.
Exemple de stratégie
| Batterie restante | Action |
|---|---|
| 90% | arrêt des serveurs non critiques |
| 50% | arrêt du stockage |
| 20% | arrêt de la production |
| <10% | extinction complète |
Pourquoi c’est efficace
1. Maximiser l’autonomie
On libère progressivement de la consommation. moins de charge → batterie dure plus longtemps
2. Prioriser les services
- backup d’abord
- stockage ensuite
- production en dernier
3. Arrêt propre
- pas de corruption disque
- services stoppés correctement
- bases de données propres
Multi-onduleurs : un vrai plus
Dans un setup avec plusieurs UPS :
- on prend la batterie la plus faible comme référence
- on évite qu’un seul onduleur mette tout en danger
Ou bien mieux, si vos serveurs sont tous redondés sur plusieurs onduleurs, on shutdown uniquement quand les deux onduleurs sont sur batterie / se vident
Pourquoi un Raspberry Pi ?
- consommation quasi nulle
- toujours allumé
- indépendant des serveurs
- coût très faible
- idéal comme point de contrôle
Script typique utilisé par Dyb :
#!/bin/bash
LOGFILE="/var/log/nut/upssched.log"
mkdir -p /var/log/nut
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOGFILE"
}
shutdown_host() {
local host=$1
local name=$2
local user=${3:-root}
log "Shutdown $name ($host) via user $user"
ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no \
-i /etc/nut/id_nut ${user}@${host} \
"sudo shutdown -h +1 'NUT: power outage'" 2>> "$LOGFILE"
}
already_shutdown() {
local flag="/run/nut/shutdown_${1}.done"
[ -f "$flag" ] && return 0
touch "$flag"
return 1
}
check_battery_and_shutdown() {
CHARGE_UPS1=$(upsc ups1@localhost battery.charge 2>/dev/null)
CHARGE_UPS2=$(upsc ups2@localhost battery.charge 2>/dev/null)
if [ "$CHARGE_UPS1" -lt "$CHARGE_UPS2" ]; then
CHARGE=$CHARGE_UPS1
else
CHARGE=$CHARGE_UPS2
fi
log "On battery - charge: ${CHARGE}% (UPS1: ${CHARGE_UPS1}%, UPS2: ${CHARGE_UPS2}%)"
# 90% → backup server
if [ "$CHARGE" -le 90 ]; then
already_shutdown "backup" || shutdown_host "10.0.0.10" "backup-server" "root"
fi
# 50% → storage
if [ "$CHARGE" -le 50 ]; then
already_shutdown "storage" || shutdown_host "10.0.0.20" "storage-server" "admin"
fi
# 20% → production servers
if [ "$CHARGE" -le 20 ]; then
already_shutdown "prod1" || shutdown_host "10.0.0.30" "prod-server-1" "root"
already_shutdown "prod2" || shutdown_host "10.0.0.40" "prod-server-2" "root"
fi
}
case "$1" in
onbatt_handler)
log "=== Switching to battery - start monitoring ==="
rm -f /run/nut/shutdown_*.done
while true; do
check_battery_and_shutdown
sleep 30
done &
echo $! > /run/nut/battery_monitor.pid
;;
online_handler)
log "=== Power restored ==="
if [ -f /run/nut/battery_monitor.pid ]; then
kill $(cat /run/nut/battery_monitor.pid) 2>/dev/null
rm -f /run/nut/battery_monitor.pid
fi
rm -f /run/nut/shutdown_*.done
;;
esac
Bénéfices concrets
- meilleure résilience infra
- zéro arrêt brutal
- autonomie optimisée
- comportement prévisible
- facile à adapter (seuils, machines)
Conclusion
Un Raspberry Pi avec NUT permet de transformer une simple protection électrique en système de gestion intelligent de crise.
On ne subit plus la coupure :
→ on l’anticipe, on l’organise, on la contrôle.
C’est une amélioration simple, peu coûteuse, mais avec un impact immédiat sur la stabilité de l’infrastructure.
Et puis, votre facture EDF ainsi que l'écologie mondiale vous remercieront 😉





0 commentaire