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:
- Configuration of an APC UPS under Proxmox
- Podłączanie serwerów do UPS przez sieć (kartę NMC)
- Has anyone figured out how to shutdown Synology when UPS goes to battery power?
~xf0r3m