Nie wystarczy podłączyć upsa do naszych urządzeń. Gdy brak prądy będzie trwał dłużej to po wyczerpaniu akumulatorów wszystkie nasze urządzenia się wyłączą, narażając nas na utratę danych.
Podłączymy nasz ups z komputerem z zainstalowanym Debianem i programem do monitorowania zasilania NUT.
Instalacja:
# apt install nut
Konfiguracja Serwera NUT
Lista obsługiwanych UPS’ów dostępna https://networkupstools.org/stable-hcl.html
# nano /etc/nut/ups.conf
w pliku na końcu dodajemy konfigurację upsa ręcznie
#Konfiguracja dla APC BACK-UPS PRO 650
[ups]
driver = apcsmart # odpowiedni sterownik z listy obsługiwanych UPS
port = /dev/ttyS0 # port do którego podłączony jest UPS
desc = "Server UPS Back-Ups PRO 650"
ignorelb # Nie będzie brał pod uwagę flagi upsa o rozładowaniu 'ups.status'
default.battery.charge.low = 30 # Ten ups nie podaje dolnej granicy rozładowania. Definiuje ją ręcznie
battery.charge < battery.charge.low # Rozpocznie wyłączanie gdy będzie rozładowany poniżej limitu
battery.runtime < battery.runtime.low # Jeżeli pozostały czas spadnie poniżej zadanej wartości
lub wyszukujemy automatycznie, np. dla ups na USB uruchamiamy i wynik polecenia wstawiamy do /etc/nut/ups.conf (https://networkupstools.org/docs/man/nut-scanner.html)
# nut-scanner -U
Scanning USB bus.
[nutdev1]
driver = "blazer_usb"
port = "auto"
vendorid = "FFFF"
productid = "0000"
product = "SMV1000CAI"
serial = ""
vendor = "APC by S.E."
bus = "001"
Gdy ups podaje jakąś wartość a chcemy ją zmienić to wpisujemy np:
override.battery.charge.low = 30
override.battery.runtime.low =240
W przypadku UPSA podłączonego przez port szeregowy na Debianie trzeba zmienić dodać jeszcze użytkownika nut do grupy dialout:
# usermod -aG dialout nut
W pliku nut.conf ustawiamy MODE
# nano /etc/nut/nut.conf
MODE=standalone # Ten tryb jest przeznaczony do konfiguracji tylko lokalnej, z 1 zasilaczem UPS.
MODE=netserver # Tryb podobny do powyższego ale umożliwia dostęp do serwera nut z ze sieci
Dla MODE=netserver ustawiamy dodatkowo adres i port na którym ma nasłuchiwać
# nano /etc/nut/upsd.conf
LISTEN 127.0.0.1 3493
LISTEN x.x.x.x 3493 # Adres ip karty sieciowej na której będzie nasłuchiwał NUT
Konfiguracja hasła dla użytkowników (klientów serwera)
# nano /etc/nut/upsd.users
[monitor-master]
password = haslo
upsmon master # dla klienta (monitora) który ma być masterem. Master to ten który wyłącza się ostatni po wyłączeniu wszystkich klientów slave
[monitor-slave]
password = HasloDlaKlientowSlave
upsmon slave # dla klientów (monitorów) slave
Teraz możemy uruchomić serwer nut
# systemctl enable nut-server
# systemctl start nut-server
p.s. Po zmianach w konfiguracji upsa w pliku /etc/ups.conf najlepiej uruchomić
# systemctl stop nut-server
# systemctl start nut-server
// zamiast
# systemctl restart nut-server
Aby odczytać dane z upsa uruchamiamy upsc podając jako parametr nazwe upsa wpisaną w pliku ups.conf
# upsc ups
battery.alarm.threshold: 0
battery.charge: 100.0
battery.charge.restart: 00
battery.date: 04/19/00
battery.runtime: 1020
battery.runtime.low: 120
battery.voltage: 13.85
battery.voltage.nominal: 012
device.mfr: APC
device.model: Back-UPS Pro 650
device.serial: NB0017242493
device.type: ups
driver.name: apcsmart
driver.parameter.cable: 940-0095B
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.parameter.sdtype: 2
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.internal: 3.1
input.frequency: 50.00
input.quality: FF
input.sensitivity: H
input.transfer.high: 253
input.transfer.low: 208
input.transfer.reason: line voltage notch or spike
input.voltage: 233.2
input.voltage.maximum: 233.2
input.voltage.minimum: 233.2
output.voltage: 233.2
output.voltage.nominal: 230
ups.delay.shutdown: 020
ups.delay.start: 000
ups.firmware: 12.5.I
ups.id: UPS_IDEN
ups.load: 047.4
ups.mfr: APC
ups.mfr.date: 04/19/00
ups.model: Back-UPS Pro 650
ups.serial: NB0017242493
ups.status: OL
ups.test.interval: 1209600
ups.test.result: NO
Konfiguracja klienta (monitora) nut
Na każdym urządzeniu które ma być podtrzymywane przez UPS musi być zainstalowany klient nut (monitor). Na komputerze do którego jest fizycznie podpięty ups oprócz serwera Nut musi być zainstalowany klient w trybie MASTER. Na pozostałych urządzeniach tylko klient w wersji SLAVE. Klient skonfigurowany jako MASTER zostanie wyłączony jako ostatni.
Na serwerze wraz z instalacją Nut zainstalował się również klient. Na pozostałych urządzeniach musimy go doinstalować.
# apt install nut-client
Konfiguracja klienta (monitora)
# nano /etc/nut/upsmon.conf
Dodajemy autentykacje do serwera nut
# MONITOR nazwa_ups_z_ups.conf@server_ip 1 uzytkownik_z_upsd.users PASSWORD [master|slave]
MONITOR ups@localhost 1 monitor-master haslo master # Wpis dla urządzenia master
MONITOR ups@x.x.x.x 1 monitor-slave HasloDlaKlientowSlave slave # Wpis dla urządzenia slave
Dodatkowo na urządzeniach SLAVE ustawiamy MODE
# nano /etc/nut/nut.conf
MODE=netclient
Teraz możemy uruchomić klienta Nut
# systemctl enable nut-client
# systemctl start nut-client
Testowanie
Aby wstępnie przetestować czy wszystko nam się wyłączy bez odłączania upsa od zasilania, na komputerze z podłączonym upsem uruchamiamy:
# usbmon -c fsd
System zostanie automatycznie zamknięty.
Jeżeli chcemy mieć pewność jak się zachowa po odłączeniu zasilania, nie czekając na rozładowanie upsa to w pliku /etc/nut/ups.conf zmieniamy
# nano /etc/nut/nut.conf
override.battery.charge.low = 90
i uruchamiamy ponownie nut serwer
# systemctl stop nut-server
# systemctl start nut-server
Teraz możemy już odłączyć zasilanie od upsa i czekać na wyłączenie komputera lub komputerów, jeżeli mamy podłączonych więcej klientów (monitorów).