無停電電源装置(UPS)
経緯
無停電電源装置(UPS)は購入してほっらかしにしていた。
今年、夏に停電が起こった。
SSDがセクターエラーになり使えなくなった。
Wordpressが開かなくなった。
復旧に3日を要した。
もうこりごり、やはり停電対策は必修のようだ。
WordPress Server for ubuntu 16.04にAPCのUPSを導入
私が購入していたものは APC RS 550電源バックアップ(500VA) BR550G-JP
設定の解説
apcupsd(名前はAPC UPS Daemonの略)は、Linux上で動作するデーモンであり、コンピュータがAmerican Power Conversion Corp(APC) 無停電電源装置(UPS)と対話できるようにします 。停電時にapcupsdは、ユーザに商用電源の損失を通知し、商用電源が復旧しない場合は、バッテリが使い果たされたか、指定されたタイムアウト時間が経過したか、指定されたバッテリ充電率に達したか、または残りのバッテリ稼働時間に達したか(内部UPS計算に基づいて電力消費率によって決定) 。これらのシャットダウン条件のいずれかが満たされた場合にシャットダウンを実行します。
設定値 | 初期値 | 解説 |
BATTERYLEVEL | 5 | バッテリ残量が5%以下になればシャットダウン |
MINUTES | 3 | バッテリ残量が3分以内になればシャットダウン |
TIMEOUT | 0 | 停電後何秒でシャットダウンを開始するか |
KILLDELAY | 0 | UPSを切る命令、秒数、0は切らない |
KILLDELAYはubuntu 16.04では設定してもUPSを切ることはできなかった
安全で有効な設定
バッテリー残容量に基づいた設定は正確姓に欠けるので採用しない
停電が始まった後何秒でシャットダウンを開始するかを設定したほうが安全である
日本では瞬電がほとんどであるので60秒後にシャットダウンを開始することにした
停電が復旧すれば自動でサーバーが動き始める設定にしておけばこの設定が正解
ソフトをインストールする
# apt-get install apcupsd # vi /etc/apcupsd/apcupsd.conf
# /etc/apcupsd/apcupsd.conf ... # Or a specific cable model number may be used: # 940-0119A, 940-0127A, 940-0128A, 940-0020B, # 940-0020C, 940-0023A, 940-0024B, 940-0024C, # 940-1524C, 940-0024G, 940-0095A, 940-0095B, # 940-0095C, 940-0625A, M-04-02-2000 # # 変更 # UPSCABLE smart UPSCABLE usb ... # modbus /dev/tty** Serial device for use with newest SmartUPS models # supporting the MODBUS protocol. # # 変更 # UPSTYPE apcsmart USPTYPE usb ... # 変更 # DEVICE /dev/ttyS0 DEVICE ... # or the remaining battery runtime drops to or below MINUTES. Of course, # if you are testing, setting this to 60 causes a quick system shutdown # if you pull the power plug. # If you have an older dumb UPS, you will want to set this to less than # the time you know you can run on batteries. # 変更 # TIMEOUT 0 TIMEOUT 60 ...
変更点の解説
サーバーとUPSは付属のUSBケーブルで信号のやり取りを行うのでUSBCABELとUSPTYPEはusbに変更する。
DEVICEはシリアルケーブルで信号のやり取りを行わないのでブランクにする。
TIMEOUT 60は停電開始から60秒後にサーバーのシャットダウンを実行する。
TIMEOUT 0 は停電が起こってもシャットダウンを行わない
瞬電が多いのでこの設定が正解
# vi /etc/default/apcupsd
# /etc/default/apcupsd # Defaults for apcupsd initscript # Apcupsd-devel internal configuration APCACCESS=/sbin/apcaccess # 変更 # ISCONFIGURED=no ISCONFIGURED=yes
変更点の解説
apcupsd.confを変更したことを知らせるためにISCONFIGURED=yesにする。
apcupsdの再起動
# service apcupsd restart
apcupsdの状態確認
# /sbin/apcaccess status
UPSの動作確認
UPSの電源コンセントを抜いて60秒後にサーバーがシャットダウンを実施されればOK
商用電源が復帰した場合にサーバーを自動で起動したい
普通は自動起動しない
apcupsdのインストールと設定だけでは自動シャットダウンを行ってくれるだけである
電源が復旧した場合にサーバーのスイッチを入れる必要がある
うまく動かない
BIOSの設定を変更してサーバーのスイッチを入れなくてもコンセントをつなげればサーバーが起動できるようしたがダメ
サーバーのスイッチを入れなくてもサーバーを起動できるようにする
わたしのマザーボードはASUSでアドバンス→詳細→APMで設定した→電源復帰後ONを有効にした
APCに問い合わせてみた
UPSの電源が切れないとダメであると返事してくれた
2度目の問い合わせではBACK-UPSはlinuxに対応していないのでダメでsmart-upsであればlinuxに対応していると返事してくれた。
UPSの電源が切れないのが問題
# apctest
これでUPSの切るテストが行えて、切ることができた
UPSの電源を切れるようにするにはどうすればよいか
シャットダウンが終わる前に切る命令をUPSに送る必要がある
シャットダウン処理の最後に切る命令を送れば良いようである
シャットダウン処理の最後に任意の処理を実行させる
/lib/systemd/system-shutdown/ 内に任意のスクリプトを作ればOKのようだ
UPSを切るを実現させる
# vi /lib/systemd/system-shutdown/apcupsd.service
#!/bin/sh if [ "$1" = "poweroff" -a -f /etc/apcupsd/powerfail ]; then /etc/apcupsd/apccontrol killpower fi
# chmod +x /lib/systemd/system-shutdown/apcupsd.service
商用電源が復帰した時にサーバーが自動起動するかの確認
UPSのACコンセントを抜く
60秒後にシャットダウンが自動で実施される
その後、60秒程度でUPSの液晶が切れればOK
切れない場合はサーバーの自動再起動はできない
Apache経由のapcupsd-cgi
install
# apt-get install apcupsd-cgi
アクセス
http://サーバーip/cgi-bin/apcupsd/multimon.cgi
停電時にメールを送信する
設定
# vi /etc/apcupsd/onbattery
#!/bin/sh # # This shell script if placed in /etc/apcupsd # will be called by /etc/apcupsd/apccontrol when the UPS # goes on batteries. # We send an email message to root to notify him. # SYSADMIN="自分のgmailアドレス" ...
これで表題が ubuntu UPS ubuntu Power Failure !!! のメールが送られてくればOK
コメント