_____ _   _ _    _    ___      _
 / ____| \ | | |  | |  / / |    (_)
| |  __|  \| | |  | | / /| |     _ _ __  _   ___  __
| | |_ | . ` | |  | |/ / | |    | | '_ \| | | \ \/ /
| |__| | |\  | |__| / /  | |____| | | | | |_| |>  <
 \_____|_| \_|\____/_/   |______|_|_| |_|\__,_/_/\_\

Konfiguracja zasilaczy UPS firmy APC na dystrybucjach Linuksa

Na tej stronie omawialiśmy taki sprzęt jakim są serwery dedykowane, tutaj występowały one w postaci serwerów RACK. Te urządzenia są projektowane w taki sposób, aby zapewnić ich nieprzerwane działanie - co za tym idzie stały dostęp do świadczonych przez nie usług. Co raz więcej komponentów tych komputerów możemy wymieć na tzw. gorąco (ang. hot-swap). Często serwery posiadają po dwa zasilacze w celu zapewnienia maszynie odpowiedniej mocy zasilania, jednak co jeśli brak zasilania maszyny, nie zależy od jego zasilaczy ale od środowiska, w którym działa? Generalnie zasada jest taka, że jeśli działanie systemu jest istotne dla funkcjonowania danego podmiotu - to należy go wyposażyć w zasilacz awaryjny (ang. UPS) lub podłączyć do instalacji zasilania komputerowego w budynku, zazwyczaj są to czerwone gniazdka na ścianie - wymagające specjalnego adaptera do tego, aby włożyć do nich wtyczkę. Takie rozwiązanie jak dedykowana instalacja w budynku obsługiwane są przez duże przemysłowe UPS-y lub agregaty prądotwórcze.

Schemat działania zasilaczy UPS jest bardzo prosty. Jeśli na wejściu zasilania sieciowego jest napięcie to jest ono, w zależności od stanu akumulatora w UPS, albo przekazywane bezpośrednio na wyjścia urządzenia. Jeśli stan baterii UPS, znajduje się poniżej pewnego poziomu to bateria również jest ładowana z tego samego źródła. Jeśli natomiast napięcie spadnie na wejściu wówczas to zasilacz w przeciągu od 2 do 10 ms przełączy wyjście urządzenia do przetwórnicy, która zamieni 12V z akumulatora na 230V wymagane do zasilania urządzeń. Jak długo komputer czy serwer może działać na UPS-ie? To już zależy od jego wydajności. Tutaj też warto rozdzielić systemy zasilania awaryjnego od konsumenckich zasilaczy, nawet tych bardziej zaawansowanych. Systemy zasilania UPS, projektowane są z myślą o jak najdłuższym podtrzymaniu zasilania. Oczywiście jeśli stan akumulatorów będzie krytycznie niski zostaną wysłane sygnały do wyłaczenia systemów operacyjnych lub zostanie uruchomiony agregat. Natomiast z racji tego, że przy obciążonym serwerze taki zwykły zasilacz za długo nie podziała stosuje się zasadę zapewnienia stabilnego zasilania do czasu poprawnego zamknięcia systemu operacyjnego oraz wyłączenia serwera. Do realizacji tego zadania stan zasilania UPS musi być stale monitorowany. Jest to realizowane za pomocą specjalnego opgramowania zainstalowanego na serwerze przy połączeniu USB z zasilaczem lub przy pomocy specjalnego modułu sieciowego montowanego w UPS.

W tym artykule opiszemy sobie konfigurację takiego oprogramowania wykorzystując do tego, swojego czasu jedyne oprogramowanie pozwalające na komunikację z dedykowanymi urządzeniami UPS firmy APC (ang. American Power Convervions, obecnie Schnider Electric) w dystrybucjach Linuksa. W trzech przypadkach: samodzielny host z UPS, UPS udostępniany hostom podrzędnym oraz UPS sieciowy. Konfiguracja oprogramowania UPS będzie polegać na tym, aby uzyskać status urządzenia od niego oraz ustawić parametry w taki sposób aby komputer mógł zamknąć swobodnie swój system operacyjny.

Samodzielny host z UPS

Do większości nowych urządzeń UPS APC dołączany jest specjalny kabel zakończony jednej strony wtykiem USB a z drugiej wytykiem RJ-50, kabel ma oznaczenie: APC 940-0127. Jeśli kupilismy zasilacz z drugiej ręki to może on takiego kabla nie mieć i trzeba się w niego zaopatrzyć. Po podłączeniu UPS do serwera, instalujemy pakiet apcupsd.

$ sudo apt install apcupsd -y

Następnie musimy wyedytować plik /etc/apcupsd/apcupsd.conf. Poniżej zapiszę najważniejsze opcje konfiguracyjne oraz ich wartości.

UPSNAME BE850G2-FR
UPSCABLE usb
UPSTYPE usb
DEVICE

ONBATTERYDELAY 6
BATTERYLEVEL 80
MINUTES 5 
TIMEOUT 0

Opcja UPSNAME jest opcjonalna, ale warto w niej zapisać model UPS podłączonego do tego serwera. Opcja UPSCABLE definuje kabel jaki został użyty do komunikacji z UPS. Tych przewodów jest kilka rodzajów, następna opcja UPSTYPE rodzaj komunikacji jaki został użyty w naszym modelu. Z tą opcją związana jest kolejna opcja jaką jest DEVICE, który najczęściej oznacza port pod który podłączony jest UPS, w przypadku podłączenia USB opcje tę pozostawia się pustą co oznacza automatyczną detekcję. Te trzy opcje definiują nam połączenie z UPS-em. Natomiast opcje poniżej konfigurują już samo zachowanie UPS. Opcja ONBATTERYDELAY określa opóźnienie ogłoszenia stanu ONBATTERY o określoną przez nas ilość sekund. Ta opcja dobrze skonfigurowana pozwala uniknąć takiej sytuacji, gdy system operacyjny na serwerze jest w trakcie zamykania, a zasilanie z sieci zostanie przywrócone, wówczas system pozostanie zamknięty, nie uruchomi się po powrocie zasilania. Ostatnie trzy opcje dziają w koniunkcji definiują one stan urządzenia UPS, kiedy zostaje wysłany do komputera sygnał zamknięcia systemu. BATTERYLEVEL określa pozostały poziom naładowania baterii, MINUTES pozostała liczba minut podtrzymania zasilania, natomiast TIMEOUT opóźnienie wysłania sygnału zamkniecia systemu od rozpoczęcia pracy na baterii.

Skonfigurowanie oprogramowania musimy odnotować w pliku /etc/default/apcupsd, zmieniając wartość opcji ISCONFIGURED z no na yes.

root@pve-test:~# cat /etc/default/apcupsd 
# Defaults for apcupsd initscript (unused with systemd as init).
# Set to "yes" to enable startup of apcupsd.
ISCONFIGURED=yes

Następnie restartujemy demon apcupsd i możemy sprawdzić za pomocą polecenia apcaccess czy mamy możliwość skomunikowania się z naszym zasilaczem.

root@pve-test:~# apcaccess 
APC      : 001,038,0986
DATE     : 2026-05-05 14:19:50 +0200  
HOSTNAME : pve-test
VERSION  : 3.14.14 (31 May 2016) debian
UPSNAME  : BE850G2-FR
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2025-11-25 08:44:16 +0100  
MODEL    : Back-UPS ES 850G2 
STATUS   : ONLINE 
LINEV    : 231.0 Volts
LOADPCT  : 2.0 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 57.7 Minutes
MBATTCHG : 80 Percent
MINTIMEL : 5 Minutes
MAXTIME  : 0 Seconds
SENSE    : Medium
LOTRANS  : 180.0 Volts
HITRANS  : 266.0 Volts
ALARMDEL : 30 Seconds
BATTV    : 13.5 Volts
LASTXFER : Automatic or explicit self test
NUMXFERS : 11
XONBATT  : 2026-05-05 12:25:28 +0200  
TONBATT  : 0 Seconds
CUMONBATT: 83 Seconds
XOFFBATT : 2026-05-05 12:25:32 +0200  
LASTSTEST: 2026-05-05 12:25:28 +0200  
SELFTEST : NO
STATFLAG : 0x05000008
SERIALNO : 5B2415T94571  
BATTDATE : 2024-04-13
NOMINV   : 230 Volts
NOMBATTV : 12.0 Volts
NOMPOWER : 520 Watts
FIRMWARE : 938.a2 .I USB FW:a2
END APC  : 2026-05-05 14:19:50 +0200  

Tak skonfigurowane oprogramowanie pozwoli na wykorzystanie zasilacza UPS do bezpiecznego zamknięcia systemu operacyjnego w przypadku zaniku zasilania z sieci elektrycznej.

Monitoring stanu zasilacza UPS w czasie rzeczywistym

Obok pakietu apcupsd istnieje pakiet ze skryptem CGI, który umożliwi nam podgląd status zasilacza z poziomu przeglądarki internetowej. Mowa tutaj o pakiecie apcupsd-cgi, poza Debianem jest on dostępny na Ubuntu oraz dystrybucjach bazujących na RHEL.

Skrypt ten nie wymaga żadnej konfiguracji poza pobraniem serwera WWW, w moim przypadku jest to Apache i dodanie modułu odpowiedzialnego za skrypty CGI.

$ sudo apt install apcupsd-cgi apache2 -y
$ sudo a2enmod cgi
$ sudo systemctl restart apache2.service

Po takiej konfiguracji, możemy przejść pod adres:

http://ADRES.serwera/cgi-bin/apcupsd/multimon.cgi

Jeśli potrzebujemy ukryć tę stronę za ekranem logowania, możemy wykorzystać mechanizm HTACCESS od serwera Apache. Jeśli nie korzystamy z tego serwera, możemy znaleźć analogiczny mechanizm dla naszego rozwiązania. Poniżej znajduje się plik .htaccess dla jednego z moich serwerów. Plik umieszczamy w katalogu głównym danego hostingu, w moim przypadku jest /var/www/html.

root@pve-test:/var/www/html# cat .htaccess 
AuthType Basic
AuthName "Nieautoryzowany dostep jest zabroniony!"
AuthUserFile /sciezka/do/pliku/z/uzytkownikami/i/haslami/.htpasswd
Require valid-user

Jeśli jest to pierwszy i jedyny użytkownik to dodajemy go za pomocą poniższego polecenia:

$ sudo htpasswd -c /sciezka/do/pliku/z/uzytkownikami/i/haslami xf0r3m

Po jego wydaniu użytkownik zostanie zapytany o hasło dla uwierzytelnienia htaccess.

W ten sposób mamy zabezpieczony dostęp do monitora UPS warto pamiętać tutaj o wdrożeniu SSL.

UPS udostępniany hostom podrzędnym

Często bywa tak, że jeśli już decydujemy się na zakup zasilacza UPS, wybieramy sprzęt zazwyczaj zapewniający zapotrzebowanie prądowe z dużą nawiązką. Z czasem liczba urządzeń podłączonych do tego UPS-a może się zwiększać, natomiast on posiada tylko jeden port przeznaczony do komunikacji. W jaki sposób zatem możemy sprawić, aby pozostałe hosty do niego podłączone mogły sprawdzić stan zasilania z sieci. Oprogramowanie apcupsd daje nam możliwość komunikacji z zasilaczem UPS poprzez sieci z wykorzystaniem serwera do którego UPS jest podłączony po USB. Tego rodzaju host możemy nazwać nadrzędnym, a hosty łaczące się z nim podrzędnymi.

Ten rodzaj komunikacji wymaga podłączenia UPS do hosta nadrzędnego oraz skonfigurowanie go w sposób pokazany w rozdziale Samodzielny host z UPS. Jeśli host nadrzędny jest wstanie skomunikować się z UPS, to możemy przjeść do ustawień sieciowych konfiguracji oprogramowania apcupsd komputera zarządzającego zasilaczem. Interesować nas będzie głownie zmiana adresu IP, z 127.0.0.1 na 0.0.0.0. W ten sposób oprogramowanie zacznie nasłuchwiwać na wszystkich interfejsa hosta. Edytujemy opcję NISIP.

NISIP 0.0.0.0

Domyślnie protokół NIS (ang. Network Information Server) jest właczony dzięki niemu wcześniej wspominiany skrypt CGI, może odcztać dane z UPS. Ze względu na to, że skrypt działa na tym samym hoście nie było potrzeby niczego zmieniać. Resztę opcji pozostawiamy bez zmian, nieoznacza to końca konfiguracji. Zapisujemy zmiany w pliku i przechodzimy do pliku /etc/apcupsd/hosts.conf, gdzie zgodnie z przykładem zawarty w samym pliku, dodajemy hosty podrzędne, które będą odbierać dane z UPS za pośrednictwem hosta nadrzędnego, tak jak na poniższym przykładzie.

root@pve-test:~# cat /etc/apcupsd/hosts.conf 
# Network UPS Tools - hosts.conf
#
# This file does double duty - it lists the systems that multimon will
# monitor, and also specifies the systems that upsstats is allowed to 
# watch.  It keeps people from feeding random addresses to upsstats,
# among other things.  upsimage also uses this file to know who it 
# may speak to. upsfstats too.
#
# Usage: list systems running upsd that you want to monitor
#
# MONITOR <address> "<host description>"
#
# Please note, MONITOR must start in column 1 (no spaces permitted)
#
# Example: 
# MONITOR 10.64.1.1 "Finance department"
# MONITOR 10.78.1.1 "Sierra High School data room #1"
#
MONITOR 127.0.0.1 "Local Host"
MONITOR 10.0.16.11 "pve-test node2"
MONITOR 10.0.16.12 "pbs-test"

Po zapisaniu zmian w pliku, możemy przjeść do konfiguracji hosta podrzędnego. Wymagane jest, aby pakiet apcupsd był zainstalowany. Po zainstalowaniu pakietu, otwieramy plik konfiguracyjny i zmieniamy następujące opcje zgodnie z poniższym przykładem.

UPSCABLE ether
UPSTYPE net
DEVICE 10.0.16.9:3551

Tutaj, zamiast wybierać kabel wskazujemy, że będzie to połączenie ethernetowe (ether), następnie ustawiamy typ połączenia na połączenie sieciowe (net), jako port urządzenia podajemy adres IP hosta nadrzędnego wraz z portem 3551.

Jesli planujemy zmieniać zachowanie oprogramowania podczas działania w trybie ONBATTERY na hostach podrzędnych to czas działania na baterii nie może być dłuższy od tego na hoście nadrzędnym.

Tak skonfigurowany przez nas host podrzędny możemy przetestować wydając polecenie apcaccess.

root@pve-test-node2~# apcaccess 
APC      : 001,039,1029
DATE     : 2026-05-07 13:44:40 +0200  
HOSTNAME : pve-test-node2
VERSION  : 3.14.14 (31 May 2016) debian
UPSNAME  : pve-test-node1
CABLE    : Ethernet Link
DRIVER   : NETWORK UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2025-12-10 09:51:56 +0100  
MASTERUPD: 2026-05-07 13:44:40 +0200  
MASTER   : 172.16.1.4:3551
MODEL    : Back-UPS RS 1500G 
STATUS   : ONLINE SLAVE 
LINEV    : 229.0 Volts
LOADPCT  : 2.0 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 97.8 Minutes
MBATTCHG : 80 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
SENSE    : Medium
LOTRANS  : 176.0 Volts
HITRANS  : 294.0 Volts
BATTV    : 27.3 Volts
LASTXFER : Automatic or explicit self test
NUMXFERS : 1
XONBATT  : 2026-04-27 23:19:58 +0200  
TONBATT  : 0 Seconds
CUMONBATT: 8 Seconds
XOFFBATT : 2026-04-27 23:20:06 +0200  
LASTSTEST: 2026-04-27 23:19:58 +0200  
SELFTEST : NO
STATFLAG : 0x05000408
SERIALNO : 4B1905P26971
BATTDATE : 2019-01-31
NOMINV   : 230 Volts
NOMBATTV : 24.0 Volts
NOMPOWER : 865 Watts
FIRMWARE : 878.L5 .I USB FW:L5
END APC  : 2026-05-07 13:45:29 +0200  

Przywykorzystaniu wyżej opisanych działań możemy podłączyć więcej serwerów z dystrybucjami Linuksa do jednego UPS-a. Przy użyciu kilku wierszy zaoszczędziliśmy na zakupie kolejnych urządzeń UPS. Dodając hosty podrzędne do pliku /etc/apcupsd/hosts.conf zdefiniowaliśmy tak zwane monitory. Zadaniem ich opgrogramowania jest odpytywać hosta nadrzędnego o stan zasilacza. Nie mogą one jednak wchodzić z nim w żadną interakcję. Za pomocą polecenia apctest, możemy kontrolować nasz zasialacz z poziomu serwera. Czasami przydaje się możliwość wzbudzenia alarmu dźwiekowego, dzięki czemu możemy dowiedzieć się, który zasilacz jest podłączony do naszego serwera spośród takich samych urządzeń obok.

root@pve-test-node1:~# apctest 


2026-05-07 14:08:59 apctest 3.14.14 (31 May 2016) debian
Checking configuration ...
sharenet.type = Network & ShareUPS Disabled
cable.type = USB Cable
mode.type = USB UPS Driver
Setting up the port ...
Doing prep_device() ...

You are using a USB cable type, so I'm entering USB test mode
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing USB UPSes.

Getting UPS capabilities...SUCCESS

Please select the function you want to perform.

1)  Test kill UPS power
2)  Perform self-test
3)  Read last self-test result
4)  View/Change battery date
5)  View manufacturing date
6)  View/Change alarm behavior
7)  View/Change sensitivity
8)  View/Change low transfer voltage
9)  View/Change high transfer voltage
10) Perform battery calibration
11) Test alarm
12) View/Change self-test interval
 Q) Quit

Select function number: 11

Testing alarm...COMPLETE

1)  Test kill UPS power
2)  Perform self-test
3)  Read last self-test result
4)  View/Change battery date
5)  View manufacturing date
6)  View/Change alarm behavior
7)  View/Change sensitivity
8)  View/Change low transfer voltage
9)  View/Change high transfer voltage
10) Perform battery calibration
11) Test alarm
12) View/Change self-test interval
 Q) Quit

Select function number: Q

Tego polecenia, nie możemy wydać kiedy działa daemon apcupsd. To znaczy, możemy wydać polecenie, ale program nie zostanie uruchomiony. Wyświetli się monit o tym, że apcupsd działa i przed uruchomieniem apctest, należy go wyłączyć. Możemy to zrobić z poziomu polecenia systemctl. Natomiast jeśli spróbujemy uruchomić to polecenie na monitorze, otrzymamy taki o to komunikat.

root@pve-test-node2:~# apctest 


2026-05-07 13:55:15 apctest 3.14.14 (31 May 2016) debian
Checking configuration ...
sharenet.type = Network & ShareUPS Disabled
cable.type = Ethernet Link
mode.type = NETWORK UPS Driver
Setting up the port ...
Doing prep_device() ...
Testing not yet implemented for this UPSTYPE.

UPS sieciowy

Mocniejsze UPS o mocy pozornej ok. 3kVA mogą być wyposażane w kartę zarządzania sieciowego NMC (ang. Network Management Card). Ta karta pozwala nam na podłączenie zasilacza UPS już nie do jednego z hostów, ale do przełącznika za pomocą kabla RJ-45. Takie zasilacze najczęsciej zapewniają nieprzerwane źródło zasilania więcej niż jednemu urządzeniu. Karta NMC poza samą możliwością monitorowania udostępnia protokół, dzięki któremu oprogramowanie może połączyć się z UPS i odpytywać go jego status. Zasada działania jest podobna do monitorów z poprzedniego rozdziału, tutaj jednak nie ma czegoś takiego host nadrzędny to karta NMC UPS-a daje nam takie możliwości. Dostęp do NMC uzyskuje się przez przeglądarkę internetową, więc zakładając, że nasz UPS jest dostępny w sieci lokalnej i jest osiągalny przez serwery docelowe (co jak się poźniej dowiemy, nie bywa takie oczywiste). Logujemy sie do panelu NMC.

Protokół zapewniający dostęp do UPS naszym serwerom nazywa się PowerChute Network Shutdown (PCNS) i domyślnie jest on wyłączony do momentu, kiedy nie zostanie zdefiniowany parametr taki jak Authentication Phrase. Aby uruchomić ten protokól, przechodzimy do zakładki Configuration następnie Shutdown. Na dole nad przyciskiem Apply znajduje się właśnie to pole. Wpisujemy w nim frazę uwierzytelniania przy czym warto zaznaczyć, że istotna jest złożoność tej frazy musi zawierać znaki każdego rodzaju oraz oraz minimalna długość powyżej 15 znaków - co najmniej 16, 17 lub 20. Jeśli nie są załączone to załączamy również protokoły komunikacyjne PCNS takie jak HTTP oraz HTTPS. Na koniec klikamy Apply, zapisując konfigurację - jeśli oprogramowania nie zwróci błedów, to znaczy, że fraza uwierzytelniania została poprawnie zapisana. Następnym krokiem jest dodanie klientów, w zakładce Configuration/PowerChute Clients. Tam dodajemy poszczególne serwery. Przy czym, mocniejsze zasilacze UPS mają podzielone wyjścia (gniazda, do który podłączone są serwery) na grupy. W tym przypadku grupy noszą nazwę Outlet-u. Możemy sterować, każdym outlet-em indywidualnie, dla przykładu możemy mieć włączoną tylko jedna grupę a reszta wyłączona. Przy deklarowaniu klienta musimy podać, grupę do której jest on podłaczony. Po dodaniu klientów, konfiguracja po stronie UPS-a jest zakończona. Teraz możemy prześć do konfiguracji poszczególnych serwerów.

Konfiguracja oprogramowania apcupsd w tym trybie działania z UPS będzie koncentrować się na konfiguracji podobnej dla samodzielnego hosta z podłączonym UPS po USB. Metoda konfiguracji będzie taka sama, zmienią się tylko wartości poszczególnych opcji. Poniżej znajduje się zrzut konfiguracji:

UPSNAME TESTUPS
UPSCABLE ether
UPSTYPE pcnet
DEVICE 10.0.16.2:apc:123Sup3rT4jn3H4sl0!@#

Konfiguracja odnośnie stanu UPS do wywołania zamknięcia systemu pozostawię do waszej dyspozycji. Po wywołaniu polecenia apcaccess, powinniśmy otrzymać taki o to wynik:

xf0r3m@hp-z240-1:~$ sudo apcaccess 
APC      : 001,046,1119
DATE     : 2026-05-07 03:40:13 +0200  
HOSTNAME : hp-z240-1
VERSION  : 3.14.14 (31 May 2016) debian
UPSNAME  : TESTUPS
CABLE    : Ethernet Link
DRIVER   : PCNET UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2026-04-23 07:14:14 +0200  
MODEL    : Smart-UPS X3000
STATUS   : ONLINE 
LINEV    : 227.4 Volts
LOADPCT  : 21.2 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 40.0 Minutes
MBATTCHG : 80 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
MAXLINEV : 227.4 Volts
MINLINEV : 227.4 Volts
OUTPUTV  : 227.4 Volts
DWAKE    : 0 Seconds
DSHUTD   : 0 Seconds
DLOWBATT : 2 Minutes
ITEMP    : 22.4 C
ALARMDEL : Always
BATTV    : 136.5 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Line voltage notch or spike
NUMXFERS : 57
XONBATT  : 2026-05-07 04:34:23 +0200  
TONBATT  : 0 Seconds
CUMONBATT: 100 Seconds
XOFFBATT : 2026-05-07 04:34:25 +0200  
LASTSTEST: 2026-04-27 11:48:35 +0200  
SELFTEST : OK
STESTI   : 336
STATFLAG : 0x05000008
REG1     : 0x00
REG2     : 0x00
REG3     : 0x00
MANDATE  : 11/11/2019
SERIALNO : AS1946250053
BATTDATE : 12/15/2025
NOMOUTV  : 230 Volts
FIRMWARE : UPS 06.6 (ID23)
END APC  : 2026-05-07 15:46:35 +0200  

Jeśli mimo poprawnego skonfigurowania, nie możemy otrzymać statusu zasilacza, a za jakiś czas na konsoli serwera zostanie wyświetlony monit o tym, że utracono połączenie z UPS, to oznacza, że mamy tylko pozorne połączenie z NMC UPS-a, a przynajmniej nie takie jakiego wymaga protokół PCNS. Najczęściej oznacza to, że UPS oraz serwer znajdują się w innych domenach rozgłoszeniowych (sieciach lokalnych), więc jeśli kształtujemy ruch sieciowy za pomocą takich urządzeń jak zapora to warto pamiętać o tym, że korzystając z protokołu PCNS istnieje potrzeba skomunikowania się UPS-a (nawiązania połączenia, rozpoczęcia transmisji) z serwerem docelowym. Zatem odpowiednia reguła powinna trafić do tablicy zapory.

Czy można użyć polecenia apctest, przy połączeniu tego typu? Otóż, nie. Wyświetla się ten sam komunikat co w przypadku monitorów.

Podsumowanie

Podłaczenie zasilacza awaryjnego dowolnej firmy do systemów Microsoftu nie przysparza zbyt wielu problemów. Czasmi do zasilacza dołączona jest płyta lub sterownik do komunikacji z nim możemy pobrać ze strony producenta. A co w przypadku dystrybucji Linuksa czy innych systemów operacyjnych? Jeszcze 10 lat temu, dostępny był jedynie pakiet apcupsd, dlatego też po prostu wydawało się wiecej pieniędzy na lepszy UPS firmy APC. Obecnie ulega to zmianie, co raz więcej producentów publikuje na swoich stronach sterownik dla dystrybucji Linuksa. Czy trend wyboru wyłącznie APC ulegnie w przysłości zmianie? Prawdopodobnie tak, o ile firmy dadzą podobną jakość i takie same rozwiązania instalacji jak są w przypadku APC. Ostatnio wymieniłem UPS APC po 17 latach (!) działania. Gdzieś tam przewija się firma EATON, i możliwość konfiguracji tanich UPS-ów przez sterownik usbhid-ups, pakietu NUT (Network UPS Tools) Być może materiał o tym się pojawi o ile uda mi się znaleźć odpowiedni UPS. Ten materiał pokazał, nam w jaki sposób możemy skonfigurować oprogramowania apcupsd do pracy zasilaczami UPS w różnych konfiguracjach połączenia z nimi.

Dodatkowy przypadek: Zamknięcie systemu serwera NAS Synology po zaniku zasilania

Ten przypadek nieco odbiega od tematu tego artykułu, nie mniej jednak dotyczy konfiguracji oprogramowania UPS, tym razem na serwerze NAS od Synology. Problem z domyślnymi ustawieniami jest taki, że system po określonej liczbie czasu, po jakiej powinien zamknąć system operacyjny faktycznie dokonuje on jakiś czynności. Praca dysków ustaje a sam system operacyjny zostaje zatrzymany. Kiedy w zasilaczu wyczerpie się bateria. Zasilacza nie wyłącza się znaczym spadku poboru energi z jego wyjścia - jak powinien, ponieważ tego spadku faktycznie tam nie ma. Natomiast dochodzi do rozładowania baterii i po powrocie zasilania system ogłasza, że został niepoprawnie wyłączony.

Myszkując trochę po Internecie, znalazłem artykuł na serwisie reddit. Postujacy ma ten sam problem i zaproponował takie rozwiązanie jak zamiana poleceń w funkcji uruchamianej w momencie przekroczenia czasu pracy na baterii (rozpoczęcie procesu wyłączania systemu operacyjnego). W pliku /usr/syno/bin/synoups w 186 linii, zastępujemy polecenie:

/usr/syno/sbin/synopoweroff -s &

Poleceniem:

shutdown -P now &

Teraz serwery wyłączają się zaraz po zaniku zasilania. Zmiana w tym pliku jest w stanie przetwać restart, ale nie aktualizację systemu dlatego ten dodatek w ogóle został zapisany, aby pamiętać gdzie szukać informacji by poraz kolejny to skonfigurować. Kolejną wadą tego rozwiązania jest to, że po powrocie zasilania serwer NAS nie uruchomi się sam ponownie, Dlatego trzeba się zaopatrzyć w obsługę takie technologii jak WOL (ang. Wake On Lan), aby móc zdalnie uruchmić taki serwer.

Ostatnią rzeczą, na którą należało by zwrócić uwagę, podczas konfiguracji UPS na serwerach Synology, to jeśli jeden serwer jest podłączony do instalacji UPS w budynku i nie ma swojego UPS, a monitroruje stan UPS-a podłączonego prze inny serwer Synology, to należało by wyłączyć zatrzymanie systemu na serwerze podrzędnym, kiedy utracji on połączenie z UPS, przez np. restart serwera nadrzędnego. Możemy tego dokonać poprzez komentarz linii 260 w pliku /usr/syno/bin/synoups. Powinno to wyglądać mniej więcej tak:

nocomm)
SynoUpsStateLog "synoups nocomm"
#UPSSafeMode $1
;;

To wszystkie zawiłości jeśli chodzi konfigurację UPS na serwerach NAS od Synology.

Źródła:

  1. Configuration of an APC UPS under Proxmox
  2. Podłączanie serwerów do UPS przez sieć (kartę NMC)
  3. Has anyone figured out how to shutdown Synology when UPS goes to battery power?

~xf0r3m