UPS - pripojenie v Linuxe
V tomto prípade konkrétne pripojenie UPS APC Power-Saving Back-UPS ES 550VA - green CyberFort k Linuxu
Obsah
Prvé zapnutie
Pred prvým zapnutím je potrebné otvoriť spodný kryt a pripojiť jeden z pólov batérie, ktorý je z dôvodu bezpečnosti a ochrany batérie počas prepravy, odpojený. Pred prvým použitím nechajte UPS-ku nabíjať aspoň 16 hodín, aby batéria dosiahla stav 100%-ného nabitia a aby v prípade výpadku elektriny záložný zdroj splnil svoju funkciu.
Pripojenie k serveru
UPS APC Back-UPS ES 550 G som pripojil k linuxovému serveru so systémom Ubuntu 9.04 Jaunty. K UPS-ke je dodávaný komunikačný kábel, na jednom konci s konektorom typu RJ, na druhom s USB konektorom.
Na zadnej stene záložného zdroja sa nachádzajú 3 konektory typu RJ.
Do horného konektora, označeného Data Port, pripojíme komunikačný kábel, a druhý koniec kábla pripojíme do USB linuxového servera.
K UPS-ke zatiaľ nepripájajte žiadny spotrebič.
Pripojené USB zariadenia v liunuxe zistíme príkazom lsusb
Ak výstup príkazu lsusb vyzerá podobne ako nasledovný príklad:
Bus 002 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
a vo výpise nájdeme našu UPS-ku, tak si môžeme byť istí, že systém zariadenie správne rozoznal, a že UPS-ka bude schopná komunikovať s linuxom.
Softvér a konfigurácia
Pri inštalácií som mal na výber z dvoch možností. Buď som mohol použiť Network UPS Tools (NUT) alebo APC UPS daemon (apcupsd).
Nakoľko som NUT mal už nainštalovaný, ako dedičstvo po predchádzajúcej UPS-ke (MGE Ellipse 800), tak som sa rozhodol, že použijem tento balík.
Pre tých, ktorí nemajú tento balík vo svojom systéme nainštalovaný, len pripomeniem postup inštalácie.
apt-get install nut nut-usb
Ak inštalácia prebehla úspešne, začneme s konfiguráciou:
v súbore /etc/default/nut povolíme spustenie ups daemona a monitora:
START_UPSD=yes START_UPSMON=yes
v súbore /etc/nut/nut.conf nastavíme:
MODE=standalone
v súbore /etc/nut/ups.conf nadefinujeme meno UPS, driver a port:
[APC550ES] driver = usbhid-ups port = auto
V nasledovnej tabuľke si pozrite zoznam podporovaných zariadení a driverov
Pre USB použijeme port nastavený na auto, ale ak máme UPS-ku so sériovým RS232 portom, potom parameter port nastavte na /dev/ttyS0.
(Pre MGE Ellipse 800 som mal nastavené: driver = mge-shut, port = /dev/ttyS0)
do súboru /etc/nut/upsd.conf povolíme prístup iba z lokálneho servera:
ACL all 0.0.0.0/0 ACL localhost 127.0.0.1/32 ACCEPT localhost REJECT all
v súbore /etc/nut/upsd.users nadefinujeme používateľa upsd daemona, heslo, prístup iba z localhosta a UPS Monitor do režimu master:
[MonUPS] password = xxyyzz allowfrom = localhost upsmon master
do /etc/nut/upsmon.conf doplníme:
MONITOR APC550ES@localhost 1 MonUPS xxyyzz master POWERDOWNFLAG /etc/killpower SHUTDOWNCMD "/sbin/shutdown -h now"
Týmto máme ukončenú najzákladnejšiu konfiguráciu UPS-ky.
Spustíme nut:
/etc/init.d/nut start
Ak štart prebehne bez chybových hlásení, overme, či nut skutočne beží:
/etc/init.d/nut status
Ak sa objaví výpis:
Checking status of Network UPS Tools * upsd is running * upsmon is running
potom by malo byť všetko nastavené správne a môžeme si zobraziť stav UPS-ky príkazom:
upsc APC550ES@localhost
Mal by sa objaviť výpis, podobný nasledovnému:
battery.charge: 100 battery.charge.low: 10 battery.charge.warning: 50 battery.date: not set battery.mfr.date: 2009/09/23 battery.runtime: 840 battery.runtime.low: 120 battery.type: PbAc battery.voltage: 13.5 battery.voltage.nominal: 12.0 driver.name: usbhid-ups driver.parameter.pollfreq: 30 driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.4.1 driver.version.data: APC HID 0.93 driver.version.internal: 0.34 input.transfer.high: 266 input.transfer.low: 180 input.voltage: 232.0 input.voltage.nominal: 230 ups.beeper.status: enabled ups.delay.shutdown: 20 ups.firmware: 870.O1 .I ups.firmware.aux: O1 ups.load: 42 ups.mfr: APC ups.mfr.date: 2009/09/23 ups.model: Back-UPS ES 550G ups.productid: 0002 ups.serial: 3Q0846Z16736 ups.status: OL ups.timer.reboot: 0 ups.timer.shutdown: -1 ups.vendorid: 051d
Význam jednotlivých premenných a viac informácií nájdete na stránkach, s ktorých som čerpal pri zapájaní tejto UPS-ky.
Vypneme linux (halt, shutdown -h now), a napájací kábel servera pripojíme do UPS-ky.
POZOR! Zariadenia, ktoré majú byť zálohované z batérie, musia byť pripojené do tých správnych zásuviek.
Pozorne si skontrolujte kam pripájate server.
Označenie nájdete na hornom kryte UPS-ky
Teraz normálne rozbehnite server, všetko by sa malo samé rozbehnúť bez zásahu človeka, prípadne sledujete výpis pri štarte.
Ak systém nabehne, znova skontrolujte či nut beží, poprípade výpis premenných UPS-ky.
Ak je všetko v poriadku, a nut sa rozbehol, ešte trocha testujme.
Test UPS
Aby sme sa presvedčili, že UPS-ka a nut spolupracujú, tak na krátku dobu odpojme napájací kábej UPS-ky od 220V, tak aby zostal server bežať na batériu. Ak sa UPS-ka prepla na batériu, a linuxový server beží ďalej, je zatiaľ všetko správne.
Po odpojení UPS-ky od 220V, by sa mal ozvať 3 násobný zvukový signál a zároveň na termináli linuxu sa objaví upozornenie:
Broadcast message from nut@server.domena.sk (somwhere) at 9:17 ...
UPS APC550ES@localhost on battery
Nechajte server chvíľu bežať na batériu a otestujte, ako sa postupne vybíja batéria príkazom:
upsc APC550ES@localhost
Všimnite si pokles v položke battery.charge, a zmenu v položke ups.status OB DISCHRG.
Teraz znova pripojte UPS-ku k napätiu 220V, čo bude signalizované 3 pípnutiami a výpisom na terminál:
Broadcast message from nut@server.domena.sk (somwhere) at 9:18 ...
UPS APC550ES@localhost on line power
Týmto testom sa batéria mierne vybila, preto nechajme všetko bežať niekoľko hodín, do úplného nabitia batérie.
Nakoniec môže nasledovať test korektného vypnutia servera a výdrže batérie.
Tento test je jednoduchý, pripravte si stopky (stačia aj hodinky), odpojte UPS od 220V a zároveň spustite stopky.
Počkajte, či bude server korektne vypnutý, ak áno, sledujte čas, aby ste mali predstavu, aké dlhé výpadky siete je UPS-ka schopná zálohovať.
Výsledky testov
V nasledovnej tabuľke uvádzam výsledky mojich testov a meraní. Ako som testoval ? Postupne som pripájal k UPS-ke stále viac spotrebičov. Po každom pripojení som nechal bežať UPS na batériu, a zisťoval som cez upsc hodnoty. Po každom jednom meraní som nechal batériu dobiť a ďalšie meranie som urobil až vtedy, ak batéria dosiahla stav nabitia 100%.
Číslo | Spotrebiče | Záťaž UPS [%] | Výkon záťaže [W] | Výdrž batérie [sek.] | Výdrž batérie [min.] |
1 | router | 1 | 3,3 | 2655 | 44,25 |
2 | router + switch + linux server | 25 | 82,5 | 1252 | 20,87 |
3 | router + switch + linux server + PC WinXP | 42 | 138,6 | 840 | 14,0 |
Na záver tohoto testu len dodám, že namerané hodnoty približne zodpovedajú údajom výrobcu a namerané časy, vzhľadom na 4 pripojené spotrebiče, sú pre naše použitie dostačujúce.
Monitorovanie UPS cez web
Jednoduchý výpis cez php
Aby sme mali prehľad o tom, ako sa správa UPS-ka, v akom stave je batéria, potrebujeme nástroj na sledovanie jej stavu.
Samozrejme, že stav UPS je možné zistiť kedykoľvek, keď ste prihlásení na terminál a zadáte príkaz upsc APC550ES@localhost
Aby ste sa ale nemuseli zakaždým prihlasovať, a beží na Vašom serveri aj webový server s podporou php, potom môžete použiť tento php skript a pomocou neho zistiť stav UPS kedykoľvek a kdekoľvek, cez web. Stačí rozbaliť a nakopírovať tento skript niekam do webového adresára servera napr. do /var/www/. Potom ešte treba v skripte v premennej $UPS nastaviť presné pomenovanie Vašej UPS-ky, teda to meno, ktoré ste zadali v súbore /etc/nut/ups.conf.
V našom príklade bude premenná
$UPS = 'APC550ES@localhost';
Potom už len nasmerujte webový prehliadač na tento súbor a máte výpis stavu UPS-ky.
Tento php skript využíva rovnaké systémové príkazy ako upsc, takže výstup na webovej stránke vyzerá prakticky rovnako, ako na termináli.
Môžete ho ľubovoľne modifikovať a potom mi ho vylepšený poslať :-)
Grafické zobrazenie stavu UPS cez nut-cgi
Ak potrebujete zobraziť stav UPS-ky graficky, použite balík nut-cgi
Príklad výstupu nut-cgi je na nasledovných obrázkoch:
Nainštalujte cez apt-get balík nut-cgi:
apt-get install nut-cgi
V adresári /etc/nut pribudli 4 súbory s príponou sample:
hosts.conf.sample upsset.conf.sample upssats-single.html.sample upsstats.html.sample
Premenujte všetky tieto súbory tak, aby nemali príponu "sample", teda na:
hosts.conf upsset.conf upssats-single.html upsstats.html
Potom v súbore /etc/nut/hosts.conf nastavíme meno našej UPS-ky, doplňte riadok:
MONITOR APC550ES@localhost "APC Back-UPS ES 550"
Len pripomeniem, že v nastavení webového servera Apache, musíte mať povolené spúšťanie cgi skriptov.
Teraz nasmerujte Váš webový prehliadač na URL:
http://www.vasadomena.sk/cgi-bin/nut/upsstats.cgi
Viac počítačov na jednej UPS
Nasledovný postup som použil na linuxový server a počítač s OS WindowsXP Pro, obidva napájané z jednej UPS-ky.
Naša UPS-ka má 4 zálohované výstupy. Preto potrebujeme, aby všetky počítače pripojené do zálohovaných výstupov boli korektne vypnuté. Záložný zdroj má ale iba jeden USB komunikačný kábel. Aby sme mohli z jednej UPS-ky korektne vypnúť viac počítačov, využijeme, že daemon upsd bežiaci na linuxe, môže cez Ethernet komunikovť s NUT klientami na porte TCP/UDP 3493.
Najprv povolíme lokálne použitie tohoto portu na firewalle.
Popíšem postup pre Bastille-firewall:
V súbore /etc/Bastille/bastille-firewall.cfg nájdite riadky:
TCP_INTERNAL_SERVICES=" tu je zoznam povolených služieb a dopíšte na koniec sem iba nut" UDP_INTERNAL_SERVICES=" tu je zoznam povolených služieb a dopíšte na koniec sem iba nut"
Potom reštartujeme firewall:
/etc/init.d/bastille-firewall restart
Teraz musíme povoliť prístup k daemonovi upsd z ostatných počítačov. Ako príklad uvediem, IP adresu Windows počítača 192.168.0.3
Súboru /etc/nut/upsd.conf upravíme nasledovne, povolíme prístup z IP adresy windowsového počítača:
LISTEN 192.168.0.3 3493 LISTEN localhost 3493 ACL all 0.0.0.0/0 ACL localhost 127.0.0.1/32 ACL windows 192.168.0.3/32 ACCEPT localhost ACCEPT windows REJECT all
Do súboru /etc/nut/upsd.users povolíme prístup s počítača windows, dpoíšeme len windows do riadku allowfrom:
allowfrom = localhost windows
Teraz reštartujme nut:
/etc/init.d/nut restart
Týmto máme na strane servera nastavené všetko, môžeme nastaviť NUT klienta vo windows
Najprv stiahneme winnut15.zip Windows NUT Client
Súbor winnut15.zip rozbaľte do C:\Program Files\ do adresára winnut15. Zatiaľ program nespúšťajte. Ešte je potrebné pridať výnimku pre tento program vo Windows Firewalle. Teraz môžeme C:\Program Files\winnut15\upsclient.exe spustiť.
Po spustení prejdite na Settings a na záložke Connection nastavte IP adresu Vášho linuxového servera, na ktorom beží nut daemon upsd, port 3493 a meno vašej UPS-ky, teda APC550ES.
Na záložke Calibration som ešte upravil hodnotu Battery Voltage na Max 15 voltov.
Na poslednej záložke Misc zaškrtnite Minimize to tray a nastavte vypínanie UPS napr pri 70% nabitia batérie (Shutdown if battery lower then 70%), aby sa Windows počítač vypol skôr, ako linuxový server a tým ušetril energiu pre server a aby sa predĺžil čas behu servera na batériu.
Nakoniec dajte Apply a OK. Potom ešte z hlavnej ponuky vyberte Coneection/Reconnect.
V priebehu niekoľkých sekúnd by sa mal objaviť rovnaký výsledok, ako na nasledovnom obrázku:
Ak program WinNutClient ukazuje, že je pripojený k UPS-ke, zobrazuje hodnoty a dole v stavovom riadku vypisuje Connection Established, potom je všetko nastavené správne. Ešte dodám, že s UPS APC Back-UPS ES 550G program WinNutClient nezobrazuje vstupnú frekvenciu a výstupné napätie.
Ostatné hodnoty zobrazuje správne.
Ešte otestujeme, či nám WinNutClient korektne ukončí prácu systému WindowsXP pri výpadku elektriny. Pri teste som postupoval nasledovne:
V nastaveniach WinNutClient som nastavil Shutdown if battery lower then 99%.
Odpojil som UPS-ku od 220V a o niekoľko sekúnd sa WindowsXP korektne vypol, pričom linuxový server bežal na batériu ďalej.
Ak test dopadol pozitívne, vráťime hodnotu vypnutia na 70% a môžeme si program upsclient.exe pridať do ponuky Štart/Pri spustení.
Teraz sa nám bude pri výpadku elektriny korektne vypínať najprv počítač s OS WindowsXP a potom sa korektne ukončí aj beh linuxového servera.
Záver
Spomínaná UPS-ka patrí k tým najjednoduchším a lacnejším modelom, ale základnú úlohu, teda korektné ukončenie linuxového servera pri výpadku napájania, spĺňa za prijateľné náklady. Rovnako aj ceny náhradných batérií sa pohybujú na prijateľnej úrovni, a výmenu batérie zvládnete bez náradia a špeciálnych znalostí. Tento postup mám overený aj pre UPS MGE Ellipse 800, rozdiely v konfigurácií sú uvedené v zátvorkách.
Odkazy
- Monitorování UPS pomocí nástroje NUT v češtine
- Článok vznikol na základe stránke http://gljs.sk/linux/ups.html