Podstawowe informacje o NUT (Network UPS Tools)
Nut - Network UPS Tools to oprogramowanie umożliwiające nadzorowanie stanu zasilaczy UPS oraz pozwalające zaplanować odpowiednie reakcje programowe na zmiany stanu monitorowanych urządzeń zasilających. Nut umożliwia ponadto zaawansowane monitorowanie jednostek dystrybucji mocy, a także współpracuje z zaawansowanymi kontrolerami paneli słonecznych. Nut umożliwia ponadto kontrolowanie stanu zasilaczy UPS fizycznie podpiętych do odległych systemów poprzez sieć ethernet/internet, między innymi za pomocą protokołu tcp. Nut jest bardzo popularnym i lubianym pakietem programowym, w szczególności jeżeli chodzi o środowisku Linux. Kompatybilność z kilkoma tysiącami różnych urządzeń oraz prostota konfiguracji oprogramowania to podstawowe atuty Nut'a. Oprogramowanie dostępne jest w wersjach przeznaczonych dla różnych systemów operacyjnych, także dla Windows.
Nut a monitorowanie zasilacza UPS
W niniejszym artykule opiszę, przytaczając konkretne i przetestowane przeze mnie przykłady, w jaki sposób, krok po kroku, zainstalować i skonfigurować oprogramowanie Nut w celu monitorowania zasilacza UPS Eaton 5130 (USB), podłączonego do komputera systemem operacyjnym Linux, poprzez port USB, z możliwością nadzoru stanu zasilacza i wywoływania odpowiednich procedur związanych ze zmianą stanu UPS na komputerze głównym oraz na innych komputerach z systemami operacyjnymi Linux, znajdujących się w tej samej sieci.
Wymagania
Poniżej przedstawione wymagania są niezbędne do przeprowadzenia instalacji i konfiguracji oprogramowania według wskazówek opisanych w niniejszym artykule:
System operacyjny Linux;
Narzędzia oraz biblioteki niezbędne do kompilowania oprogramowania ze źródeł, przykładowo
glibc glibc-devel gcc;
Zasilacz UPS kompatybilny z oprogramowaniem Nut (w tym przykładzie Eaton 5130 USB) z możliwością połączenia z komputerem poprzez port USB.
Zasilacz UPS Eaton 5130 jest w 100% kompatybilny z oprogramowaniem Nut |
Założenia oraz czynności wstępne
Oprogramowanie Nut powinno zostać zainstalowane zarówno na komputerze do którego zostanie podpięty zasilacz UPS poprzez port USB, jak na pozostałych komputerach w sieci, na których stan zasilacza UPS ma być monitorowany.
Komputer/system, do którego zostanie podpięty zasilacz UPS poprzez port USB, będzie dalej nazywany netserver (master), a pozostałe komputery/systemy będą określane jako netclient (slave).
W sytuacji gdy występuje awaria zasilania, a komputery master / slave pozyskują napięcie z zasilacza UPS, w chwili gdy bateria zasilacza UPS słabnie wszystkie systemy powinny zostać prawidłowo zamknięte.
W przypadku awarii zasilania oraz niskiego poziomu naładowania bateri zasilacza UPS automatycznie rozpoczyna się procedura zamykania systemów. Komputer netserver (master) zamyka system jako ostatni, czekając na zamknięcie wszystkich systemów netclient (slave). Konfiguracja oprogramowania na systemach master / slave jest nieco odmienna. Systemy netclient (slave) generalnie wymagają bardzo prostej i podstawowej konfiguracji. Najbardziej pracochłonna jest konfiguracja systemów netserver (master).
Uwaga: Aby komunikacja sieciowa pomiędzy systemami netserver/netclient była możliwa w przypadku awarii zasilania, a procedura zamykania systemów mogła się odbywać prawidłowo, sprzęt potrzymujący sieć komputerową (switche, huby, routery itp) powinien być prawidłowo zasilany ze żródła UPS !
Wskazówki dotyczące czynności początkowych oraz instalacji odnoszą się zarówno do systemu netserver (master), jak i do systemów netclient (slave). Konfiguracja oprogramowania, po przeprowadzonej instalacji, jest jednak odmienna dla obu typów systemów.
Przed rozpoczęciem kompilacji oprogramowania należy podłączyć zasilacz UPS do portu USB komputera master i sprawdzić stan połączenia, jak przedstawiono poniżez. Uzyskane w poniżej przedstawiony sposób informacje o połączeniu z zasilaczem będą przydatne do prawidłowej konfiguracji oprogramowania Nut na systemie master.
[root@filemon1 nut]# lsusb
Bus 002 Device 002: ID 0463:ffff MGE UPS Systems UPS
Bus 002 Device 002: ID 0463:ffff MGE UPS Systems UPS
Należy również utworzyć użytkownika oraz grupę dla oprogramowania Nut, tak aby mogło ono pracować z uprawnieniami utworzonego użytkownika oraz grupy. Dla celów niniejszego artykułu wybrałem ups:ups, co zostanie odpowiednio zdefiniowane podczas konfiguracji kompilacji (--with-user=ups --with-group=ups)
Oprogramowanie, skompilowane z plików źródłowych, jest instalowane w /usr/local/ups/, co jest ustawieniem standardowym.
Do przechowywania ważnych informacji dotyczących statusu pracy oprogramowania, zostaną wykorzystane następujące ścieżki, które zostaną uwzględnione w chwili konfigurowania opcji kompilacji oprogramowania:
/usr/local/ups/var/run
/usr/local/ups/var/run
/usr/local/ups/var/run
/usr/local/ups/var/run
/usr/local/ups/var/run
Powyżej przedstawione ustawienia ścieżek można oczywiście dostosować do własnych potrzeb, tworząc odpowiednie katalogi oraz zwracając szczególną uwagę na prawidłowe ustawienie atrybutów uprawnień utworzonych katalogów. W przypadku zmiany katalogów na inne, należy pamiętać o odpowiednich zmianach w parametrach polecenia configure w chwili konfigurowania parametrów kompilacyjnych oprogramowania.
Należy zatem utworzyć niezbędne katalogi, a następnie ustawić odpowiednie atrybuty uprawnień, przykładowo:
[root@filemon /]# mkdir /usr/local/ups/var/run
[root@filemon /]# chown -R ups:ups /usr/local/ups/var
[root@filemon /]# chmod -R 770 /usr/local/ups/var
[root@filemon /]# chown -R ups:ups /usr/local/ups/var
[root@filemon /]# chmod -R 770 /usr/local/ups/var
Należy dodatkowo utworzyć katalog /usr/local/ups/upssched oraz ustawić odpowiednie atrybuty uprawnień:
[root@filemon /]# mkdir /usr/local/ups/upssched
[root@filemon /]# chown ups:ups /usr/local/ups/upssched
[root@filemon /]# chmod 775 /usr/local/ups/upssched
[root@filemon /]# chown ups:ups /usr/local/ups/upssched
[root@filemon /]# chmod 775 /usr/local/ups/upssched
Pozyskanie oraz instalacja Nut (Network UPS Tools)
Istnieje kilka różnych sposobów pozyskania oraz instalacji oprogramowania Nut. Najprostszym sposobem jest skorzystanie z odpowiednich narzędzi, np. yum lub apt-get, w zależności od dystrybucji systemu Linux. Można również pobrać pakiety binarne z oprogramowaniem Nut, korzystając z odnośników na stronie http://www.networkupstools.org/download.html
Postanowiłem jednak opisać tutaj najbardziej uniwersalny sposób instalacji oprogramowania Nut w wersji dla systemów Linux, a mianowicie metodę polegającą na skompilowaniu plików ze źródła. Przytoczone tutaj przykłady oparte są na wersji oprogramowania 2.7.2, działającj w środowisku Linux. Pliki źródłowe dostępne są w formacie archiwum .tar.gz na stronie http://www.networkupstools.org/download.html
Po ściągnięciu plików źródłowych, należy rozpakować zawartość archiwum do odpowiedniego katalogu. W tym przykładzie archiwum tar.gz zapisane jest w /usr/local/src/nut/, natomiast zawartość archiwum wyodrębniana jest automatycznie do /usr/local/src/nut/nut-2.7.2/
Po zapisaniu archiwum w /usr/local/src/nut, należy przejść do /usr/local/src/nut, a następnie rozpakować archiwum:
tar -xzf nut-2.7.2.tar.gz
Prawidłowe rozpakowanie pliku-archiwum spowoduje utworzenie odpowiedniego katalogu, zawierającego pliki źródłowe:
[root@filemon1 nut]# ls -al
total 2176
drwxr-xr-x 3 root root 45 Nov 26 08:47 .
drwxr-xr-x 4 root root 35 Nov 26 08:45 ..
drwxr-xr-x 15 root root 4096 Nov 26 22:10 nut-2.7.2
-rw-r--r-- 1 root root 2223307 Apr 17 2014 nut-2.7.2.tar.gz
total 2176
drwxr-xr-x 3 root root 45 Nov 26 08:47 .
drwxr-xr-x 4 root root 35 Nov 26 08:45 ..
drwxr-xr-x 15 root root 4096 Nov 26 22:10 nut-2.7.2
-rw-r--r-- 1 root root 2223307 Apr 17 2014 nut-2.7.2.tar.gz
W celu dokonaniu kompilacji oraz instalacji oprogramowania należy wykonać, sukcesywnie, następujęce czynności:
[root@filemon1 nut-2.7.2]# cd /usr/local/nut/
[root@filemon1 nut-2.7.2]# ./configure --with-user=ups --with-group=ups --with-statepath=/usr/local/ups/var/run --with-pidpath=/usr/local/ups/var/run --with-altpidpath=/usr/local/ups/var/run --with-usb
[root@filemon1 nut-2.7.2]# make
[root@filemon1 nut-2.7.2]# make install
[root@filemon1 nut-2.7.2]# ./configure --with-user=ups --with-group=ups --with-statepath=/usr/local/ups/var/run --with-pidpath=/usr/local/ups/var/run --with-altpidpath=/usr/local/ups/var/run --with-usb
[root@filemon1 nut-2.7.2]# make
[root@filemon1 nut-2.7.2]# make install
Na tym etapie oprogramowanie powinno być prawidłowo zainstalowane, co można wstępnie sprawdzić:
[root@filemon1 /]# ls -al /usr/local/ups
total 12
drwxr-xr-x 9 root ups 84 Nov 26 22:01 .
drwxr-xr-x 14 root root 143 Nov 26 08:57 ..
drwxr-xr-x 2 root ups 4096 Nov 26 22:04 bin
drwxr-xr-x 2 root ups 4096 Nov 26 22:04 etc
drwxr-xr-x 3 root ups 4096 Nov 26 22:04 lib
drwxr-xr-x 2 root ups 61 Nov 26 22:04 sbin
drwxr-xr-x 3 root ups 50 Nov 26 22:04 share
drwxrwxr-x 2 ups ups 6 Nov 26 21:34 upssched
drwxrwx--- 3 ups ups 16 Nov 26 22:01 var
total 12
drwxr-xr-x 9 root ups 84 Nov 26 22:01 .
drwxr-xr-x 14 root root 143 Nov 26 08:57 ..
drwxr-xr-x 2 root ups 4096 Nov 26 22:04 bin
drwxr-xr-x 2 root ups 4096 Nov 26 22:04 etc
drwxr-xr-x 3 root ups 4096 Nov 26 22:04 lib
drwxr-xr-x 2 root ups 61 Nov 26 22:04 sbin
drwxr-xr-x 3 root ups 50 Nov 26 22:04 share
drwxrwxr-x 2 ups ups 6 Nov 26 21:34 upssched
drwxrwx--- 3 ups ups 16 Nov 26 22:01 var
W katalogu /usr/local/ups/etc powinny znajdować się teraz szablony plików konfiguracyjnych, które następnie powinny zostać wykorzystane do utworzenia odpowiedniej konfiguracji oprogramowania:
[root@filemon1 /]# ls -al /usr/local/ups/etc
total 84
drwxr-xr-x 2 root ups 4096 Nov 26 22:04 .
drwxr-xr-x 9 root ups 84 Nov 26 22:01 ..
-rwxr----- 1 root root 1538 Nov 26 22:04 nut.conf.sample
-rwxr----- 1 root root 3668 Nov 26 22:04 ups.conf.sample
-rwxr----- 1 root root 4578 Nov 26 22:04 upsd.conf.sample
-rwxr----- 1 root root 2131 Nov 26 22:04 upsd.users.sample
-rwxr----- 1 root root 15208 Nov 26 22:04 upsmon.conf.sample
-rwxr----- 1 root root 3921 Nov 26 22:04 upssched.conf.sample
total 84
drwxr-xr-x 2 root ups 4096 Nov 26 22:04 .
drwxr-xr-x 9 root ups 84 Nov 26 22:01 ..
-rwxr----- 1 root root 1538 Nov 26 22:04 nut.conf.sample
-rwxr----- 1 root root 3668 Nov 26 22:04 ups.conf.sample
-rwxr----- 1 root root 4578 Nov 26 22:04 upsd.conf.sample
-rwxr----- 1 root root 2131 Nov 26 22:04 upsd.users.sample
-rwxr----- 1 root root 15208 Nov 26 22:04 upsmon.conf.sample
-rwxr----- 1 root root 3921 Nov 26 22:04 upssched.conf.sample
System netserver master - Pliki konfiguracyjne
Na tym etapie należy edytować zawartość szablonów plików konfiguracyjnych Nut, znajdujących się w katalogu /usr/local/ups/etc, wprowadzając do nich poniżej przedstawione zmiany oraz zapisując edytowane pliki szablonów jako pliki konfiguracyjne, tzn. bez rozszerzenia .sample. Wszelkie zakomentowane znakiem # wiersze plików są ignorowane przez pakiet Nut, co oznacza, że wiersze, które mają być przetwarzane przez oprogramowanie Nut muszą zostać odkomentowane. Po zapisie plików konfiguracyjnych należy zwrócić uwagę na prawidłowe ustawienie atrubutów uprawnień plików, tak aby program Nut mógł odczytać ich zawartość:
-rwxr----- 1 root ups 1543 Nov 26 09:30 nut.conf
-rwxr----- 1 root ups 3786 Nov 27 08:19 ups.conf
-rwxr----- 1 root ups 4587 Nov 27 08:22 upsd.conf
-rwxr----- 1 root ups 2174 Nov 26 09:26 upsd.users
-rwxr----- 1 root ups 15185 Nov 26 09:19 upsmon.conf
-rwxr----- 1 root ups 3887 Nov 26 21:34 upssched.conf
-rwxr----- 1 root ups 3786 Nov 27 08:19 ups.conf
-rwxr----- 1 root ups 4587 Nov 27 08:22 upsd.conf
-rwxr----- 1 root ups 2174 Nov 26 09:26 upsd.users
-rwxr----- 1 root ups 15185 Nov 26 09:19 upsmon.conf
-rwxr----- 1 root ups 3887 Nov 26 21:34 upssched.conf
1. Plik nut.conf
Plik nut.conf zawiera informacje o podstawowej konfiguracji oprogramowania Nut, określającej tryb pracy pakietu.
Oto co powinien zawierać plik dla celów niniejszego artykułu (pozostałe wiersze powinny być zakomentowane znakiem #):
MODE=netserver
2. Plik ups.conf
Plik ups.conf jest miejscem w którym określane są nadzorowane urządzenia UPS. Plik jest wykorzystywany przez narzędzie Nut upsdrvctl do uruchamiania i zatrzymywania określonych, w specjalnych sekcjach pliku, sterowników urządzeń. Demon upsd pozyskuje z pliku informacje o urządzeniach i sterownikach.
Oto co powinien zawierać plik dla celów niniejszego artykułu (pozostałe wiersze powinny być zakomentowane znakiem #):
[Eaton5130]
driver = usbhid-ups
port = /dev/bus/usb/002
#desc = "Eaton5130"
#vendor = "MGE UPS Systems"
driver = usbhid-ups
port = /dev/bus/usb/002
#desc = "Eaton5130"
#vendor = "MGE UPS Systems"
3. Plik upsd.conf
Plik upsd.conf zawiera informacje związane z kontrolą dostępu, informacje o ewentualnych alternatywnych katalogach, w których program ma zapisywać ważne informacje o swoim działaniu, informacje o ewentualnych certyfikatach, informacje o adresie IP opraz porcie, na których demon upsd ma nadsłuchiwać oraz inne informacje.
Oto co powinien zawierać plik dla celów niniejszego artykułu (pozostałe wiersze powinny być zakomentowane znakiem #):
LISTEN 192.168.0.42 3493
Powyższy adres IP powinien być zgodny z adresem IP maszyny, na której Nut działa w trybie netserver. Port 3493 powinien zostać uwzględniony w ewentualnych regułach iptables oraz/lub w ewentualnie stosowanym oprogramowaniu zapory ogniowej.
4. Plik upsmon.conf
Oto co powinien zawierać plik dla celów niniejszego artykułu (pozostałe wiersze powinny być zakomentowane znakiem #):
MONITOR Eaton5130@host1 1 mike cats master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /usr/local/ups/etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
Należy zwrócić szczególną uwagę na to, aby w wierszu MONITOR mike i cats odpowiadały wartością dotyczącym uzytkownika i hasła, określonym w pliku upsd.users. W wierszu MONITOR słowo master oznacza, iż w razie konieczności zamknięcia systemu z powodu awarii zasilania, niniejszy system zostanie zamknięty jako ostatni, po tym jak pozostałe komputery, typu slave, nadzorujące UPS, zostaną wyłączone. Konfigurację komputerów slave opiszę w dalszej części tego artykułu.
5. Plik upsd.users
W pliku upsd.users należy określić użytkowników oraz ich poziom uprawnień do demona upsd. Dla każdego użytkownika tworzona jest odpowiednia sekcja. Oto co powinien zawierać plik dla celów niniejszego artykułu (pozostałe wiersze powinny być zakomentowane znakiem #):
[mike]
password = cats
upsmon master
6. Plik upssched.conf
Oto co powinien zawierać plik dla celów niniejszego artykułu (pozostałe wiersze powinny być zakomentowane znakiem #):
CMDSCRIPT /usr/local/ups/bin/upssched-cmd
PIPEFN /usr/local/ups/upssched/pipe
LOCKFN /usr/local/ups/upssched/lock
PIPEFN /usr/local/ups/upssched/pipe
LOCKFN /usr/local/ups/upssched/lock
Sprawdzenie działania sterownika UPS na systemie master
Na tym etapie warto upewnić się, że sterownik urządzenia UPS jest prawidłowo uruchamiany i nawiązuje połączenie z zasilaczem UPS wedle ustawień z pliku ups.conf.
[root@filemon1 sbin]# ./upsdrvctl start
Network UPS Tools - UPS driver controller 2.7.2
Network UPS Tools - Generic HID driver 0.38 (2.7.2)
USB communication driver 0.32
Using subdriver: MGE HID 1.33
Network UPS Tools - UPS driver controller 2.7.2
Network UPS Tools - Generic HID driver 0.38 (2.7.2)
USB communication driver 0.32
Using subdriver: MGE HID 1.33
Powyższe komunikaty świadczą o tym, że sterownik zdefiniowany w pliku ups.conf może zostać prawidłowo uruchamiany i nawiązuje połączenie z urządzeniem UPS.
Usługi pakietu Nut
W celu umożliwienia sterowania stanem usług pakietu Nut, korzystając z narzędzi systemowych service lub systemctl, w zależności od wersji systemu, poniżej przedstawiony skrypt konfiguracyjny należy umieścić w pliku /etc/rc.d/init.d/ups, ustawiając prawidłowe atrybuty uprawnień do zapisanego pliku.
Atrybuty uprawnień:
-rwxr-xr-x 1 root root 2670 Nov 26 22:01 /etc/rc.d/init.d/ups
Skrypt usługi upsd:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/ups/bin:/usr/local/ups/sbin
export PATH
. /etc/rc.d/init.d/functions
DRIVERPATH=/usr/local/ups/sbin
if [ -f /usr/local/ups/etc/ ]; then
. /etc/ups
else
POWERDOWNFLAG=/etc/killpower
NUTUSER=ups
fi
UPSDCONF=/usr/local/ups/etc/upsd.conf
UPSCONF=/usr/local/ups/etc/ups.conf
[ -f $UPSDCONF ] && [ -f $UPSCONF ] || exit 0
runcmd() {
echo -n "$1 "
shift
if [ "$BOOTUP" = "color" ]; then
$* && echo_success || echo_failure
else
$*
fi
echo
}
case "$1" in
start)
# new style drivers uses 'upsdrvctl'
echo -n "NUT Starting UPS model drivers: "
# starting ase nut user
daemon --user $NUTUSER `which /usr/local/ups/sbin/upsdrvctl` start
echo
if [ $? -eq 0 ]; then
echo -n "NUT Starting UPS daemon: "
# starting ase nut user
daemon /usr/local/ups/sbin/upsd -u $NUTUSER
echo
touch /usr/local/ups/var/run/upsd.pid
fi
;;
stop)
# new style upsd stop
action "NUT Stopping UPS daemon" \
/usr/local/ups/sbin/upsd -c stop
# new style drivers uses 'upsdrvctl'
action "NUT Stopping UPS model drivers" \
/usr/local/ups/sbin/upsdrvctl stop
rm -f /usr/local/ups/var/run/upsd.pid
;;
powerdown)
# new style drivers
runcmd "NUT powerdown of attached UPS(es)" /usr/local/ups/sbin/upsdrvctl shutdown
;;
restart)
$0 stop
$0 start
;;
reload)
# reloading upsd config files
action "NUT Reloading config files" \
/usr/local/ups/sbin/upsd -c reload
;;
status)
# new style drivers
action "NUT: checking UPS model drivers" # /usr/local/ups/sbin/upsdrvctl
status usr/local/ups/sbin/upsd
;;
*)
echo "Usage: upsd {start|stop|powerdown|restart|reload|status}"
exit 1
esac
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/ups/bin:/usr/local/ups/sbin
export PATH
. /etc/rc.d/init.d/functions
DRIVERPATH=/usr/local/ups/sbin
if [ -f /usr/local/ups/etc/ ]; then
. /etc/ups
else
POWERDOWNFLAG=/etc/killpower
NUTUSER=ups
fi
UPSDCONF=/usr/local/ups/etc/upsd.conf
UPSCONF=/usr/local/ups/etc/ups.conf
[ -f $UPSDCONF ] && [ -f $UPSCONF ] || exit 0
runcmd() {
echo -n "$1 "
shift
if [ "$BOOTUP" = "color" ]; then
$* && echo_success || echo_failure
else
$*
fi
echo
}
case "$1" in
start)
# new style drivers uses 'upsdrvctl'
echo -n "NUT Starting UPS model drivers: "
# starting ase nut user
daemon --user $NUTUSER `which /usr/local/ups/sbin/upsdrvctl` start
echo
if [ $? -eq 0 ]; then
echo -n "NUT Starting UPS daemon: "
# starting ase nut user
daemon /usr/local/ups/sbin/upsd -u $NUTUSER
echo
touch /usr/local/ups/var/run/upsd.pid
fi
;;
stop)
# new style upsd stop
action "NUT Stopping UPS daemon" \
/usr/local/ups/sbin/upsd -c stop
# new style drivers uses 'upsdrvctl'
action "NUT Stopping UPS model drivers" \
/usr/local/ups/sbin/upsdrvctl stop
rm -f /usr/local/ups/var/run/upsd.pid
;;
powerdown)
# new style drivers
runcmd "NUT powerdown of attached UPS(es)" /usr/local/ups/sbin/upsdrvctl shutdown
;;
restart)
$0 stop
$0 start
;;
reload)
# reloading upsd config files
action "NUT Reloading config files" \
/usr/local/ups/sbin/upsd -c reload
;;
status)
# new style drivers
action "NUT: checking UPS model drivers" # /usr/local/ups/sbin/upsdrvctl
status usr/local/ups/sbin/upsd
;;
*)
echo "Usage: upsd {start|stop|powerdown|restart|reload|status}"
exit 1
esac
Usługa /usr/local/ups/sbin/upsd powina być automatycznie uruchamiana podczas startu systemu. W tym celu należy dodać usługę upsd do usług uruchamianych podczas startu systemu.
Dla SysV:
[root@filemon1 \]# chkconfig --add ups
[root@filemon1 \]# chkconfig --level 35 ups on
[root@filemon1 \]# chkconfig --level 35 ups on
Dla Systemd:
systemctl enable ups
Uruchamianie usług pakietu Nut na systemie master
Na tym etapie należy uruchomić usługi ups.
SysV:
[root@filemon1 /]# service ups start
Starting ups: [ OK ]
Starting ups: [ OK ]
Systemd:
[root@filemon1 /]# systemctl start ups
Sprawdzanie statusu usług na systemie master
Warto na tym etapie sprawdzić, czy wszystkie usługi Nut na systemie netserver (master) działają prawidłowo:
[root@filemon1 sbin]# ls -al /usr/local/ups/var/run
total 12
drwxrwx--- 2 ups ups 96 Dec 13 23:20 .
drwxrwx--- 3 ups ups 16 Nov 26 22:01 ..
-rw-r--r-- 1 ups ups 6 Dec 13 23:20 upsd.pid
-rw-r--r-- 1 root root 6 Dec 13 23:20 upsmon.pid
srw-rw---- 1 ups ups 0 Dec 13 23:20 usbhid-ups-Eaton5130
-rw-r--r-- 1 ups ups 6 Dec 13 23:20 usbhid-ups-Eaton5130.pid
total 12
drwxrwx--- 2 ups ups 96 Dec 13 23:20 .
drwxrwx--- 3 ups ups 16 Nov 26 22:01 ..
-rw-r--r-- 1 ups ups 6 Dec 13 23:20 upsd.pid
-rw-r--r-- 1 root root 6 Dec 13 23:20 upsmon.pid
srw-rw---- 1 ups ups 0 Dec 13 23:20 usbhid-ups-Eaton5130
-rw-r--r-- 1 ups ups 6 Dec 13 23:20 usbhid-ups-Eaton5130.pid
Odczyt informacji o zasilaczu UPS z systemu netserver (master)
Po prawidłowym uruchomieniu usług na systemie master można dokonać odczytu informacji o zasilaczu UPS za pomocą narzędzia upsc na systemie naster:
[root@filemon1 ~]# /usr/local/ups/bin/upsc Eaton5130@filemon1
battery.capacity: 9.00
battery.charge: 100
battery.charge.low: 20
battery.charge.restart: 0
battery.energysave: no
battery.protection: yes
battery.runtime: 1900
battery.type: PbAc
device.mfr: EATON
device.model: 5130 RT 3000
device.serial: ND437C4042
device.type: ups
[...]
battery.capacity: 9.00
battery.charge: 100
battery.charge.low: 20
battery.charge.restart: 0
battery.energysave: no
battery.protection: yes
battery.runtime: 1900
battery.type: PbAc
device.mfr: EATON
device.model: 5130 RT 3000
device.serial: ND437C4042
device.type: ups
[...]
Systemy netclient (slave) - Pliki konfiguracyjne
Na systemach slave procedura przygotowania plików konfiguracyjnych z szablonów jest analogiczna do tej, która ma zastosowanie na systemie master, natomiast w grę wchodzi mniejsza ilość plików konfiguracyjnych. Na systemach slave należy skonfigurować ustawienia wyłącznie w plikach nut.conf, upsmon.conf oraz upssched.conf. Pozostałe pliki nie są potrzebne.
1. Plik nut.conf
Tryb netclient
MODE = netclient
2. Plik upsmon.conf
MONITOR Eaton5130@192.168.0.42 1 mike cats master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /usr/local/ups/etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
3. Plik upssched.conf
CMDSCRIPT /usr/local/ups/bin/upssched-cmd
PIPEFN /usr/local/ups/upssched/pipe
LOCKFN /usr/local/ups/upssched/lock
PIPEFN /usr/local/ups/upssched/pipe
LOCKFN /usr/local/ups/upssched/lock
Usługa upsmon - systemy netclient (slave)
Konfiguracja i uruchamianie usług pakietu Nut na systemach netclient (slave) powinny zostać przeprowadzone analogicznie do wcześniej opisanej procedury przeznaczonej dla systemów netserver (master), z tym, że w przypadku systemów netclient (slave) ustawienia pliku nut.conf - mode=netclient - będą ograniczały usługi wyłącznie do upsmon, pomijając uruchamianie zbędnego tutaj demona upsd. Usługa upsmon odpowiedzialna jest za monitorowanie stanu zasilaczy UPS zdefiniowanych w pliku upsmon.conf
Odczyt informacji o zasilaczu UPS z systemu netclient (slave)
Po prawidłowym uruchomieniu usług na systemie master oraz na systemie slave można dokonać odczytu informacji o zasilaczu UPS za pomocą narzędzia upsc na systemie slave:
[root@filemon1 ~]# /usr/local/ups/bin/upsc Eaton5130@192.168.0.42
battery.capacity: 9.00
battery.charge: 100
battery.charge.low: 20
battery.charge.restart: 0
battery.energysave: no
battery.protection: yes
battery.runtime: 1900
battery.type: PbAc
device.mfr: EATON
device.model: 5130 RT 3000
device.serial: ND437C4042
device.type: ups
[...]
battery.capacity: 9.00
battery.charge: 100
battery.charge.low: 20
battery.charge.restart: 0
battery.energysave: no
battery.protection: yes
battery.runtime: 1900
battery.type: PbAc
device.mfr: EATON
device.model: 5130 RT 3000
device.serial: ND437C4042
device.type: ups
[...]
Symulacja awarii zasilania
Na tym etapie warto przeprowadzić symulację awarii zasilania, która spowoduje wymuszone zamknięcie systemów na komputerach master / slave. Nie jest w tym celu konieczne wyciąganie wtyczki zasilacza UPS z kontaktu! Wystarczy, na systemie netserver (master) wywołać ponownie usługę upsmon w poniżej przedstawiony sposób:
upsmon -c fsd
Brak komentarzy:
Prześlij komentarz
Dodaj komentarz