Date: 2016.05.15
Home / Raspberry Pi. / CentOSなRaspberry Pi 3にapcupsd導入。
続いてRaspberry Pi 3もUPS連動させます。
これを連動させる目的はESXiが有償版であればvSphere Management Assistant(vMA)にapcupsdをインストールして直接連動させれますが、無償版の為にできません。
ですので、Raspberry Pi 3側にapcupsdを入れて、シャットダウン判断となった場合にESXiにリモート接続して落とすというのを考えています。(NASでやってもいいんですが。)


実施はCentOS 7.2.1511環境で行っています。

apcupsd導入

Raspbianであれば特に何も考えず他のパッケージ同様にapt-getで導入できます。
CentOSの場合はrpmforgeのリポジトリを導入して、そこからyumで導入できます。
が、ARM版のCentOSの場合、rpmforgeが見つかりませんでした。

あれこれ試してみた結果、armv7 Fedora用パッケージファイルを落として使用する事でうまくいきました。
パッケージはRpmfindというところから入手。

1.適当なディレクトリでwgetでパッケージをダウンロードします。
# wget ftp://rpmfind.net/linux/fedora/linux/updates/23/armhfp/a/apcupsd-3.14.13-4.fc23.armv7hl.rpm

2.ダウンロードできたらrpmコマンドでインストールを行います。
# rpm -ivh apcupsd-3.14.13-4.fc23.armv7hl.rpm

3.これらがないと依存関係でエラーになりました。
mailコマンド
libusb-0.1.so.4
libnetsnmp.so.30
※先にあれこれやってる時にgccを入れてしまっていたので出てこなかったけど、多分libgccもいると思います。

4.mailコマンドはmailxパッケージをインストールで入ります。
# yum install mailx

5.libusb-0.1.so.4はlibusbパッケージをインストールで入ります。
# yum install libusb

6.libnetsnmp.so.30はnet-snmp-libsパッケージをインストールで入ります。
  が、yumで入れると新しいlibnetsnmp.so.31が入ってしまい、エラーの解消はできませんでした。
  なので、こちらもRpmfindから対応したものが含まれるのを落として入れました。
# wget ftp://rpmfind.net/linux/fedora/linux/updates/23/armhfp/a/apcupsd-3.14.13-4.fc23.armv7hl.rpm
# rpm -ivh net-snmp-libs-5.7.3-7.fc23.armv7hl.rpm
警告: net-snmp-libs-5.7.3-7.fc23.armv7hl.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 34ec9cba: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:net-snmp-libs-1:5.7.3-7.fc23     ################################# [100%]

7.apcupsdのインストールを再実行します。
# rpm -ivh apcupsd-3.14.13-4.fc23.armv7hl.rpm
警告: apcupsd-3.14.13-4.fc23.armv7hl.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 34ec9cba: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:apcupsd-3.14.13-4.fc23           ################################# [100%]
もし他に依存関係エラーが出た場合は探して下さい。

apcupsdコンフィグ(テスト)

コンフィグ編集。
# vi /etc/apcupsd/apcupsd.conf

テストの為にコンフィグは以下のように。
基本的にSlaveとして動かしたFreeNASと一緒です。
UPSNAME RS400
UPSCABLE ether
UPSTYPE net
DEVICE マスターのIP:3551
ONBATTERYDELAY 10
BATTERYLEVEL 0
MINUTES 0
TIMEOUT 60
KILLDELAY 0

パラメータ名説明
UPSNAMEステータス画面等に表示する名前。なくてもいい。
UPSCABLEUPSとの接続ケーブル指定。ネットワークなのでether。
UPSTYPEUPSとの接続タイプ。ネットワークなのでnet。
DEVICE接続先デバイス指定。スレーブ稼働時はマスターのIPとポートを指定。
ONBATTERYDELAY値秒経過しても電源が復旧していない場合にONBATTERY稼働と判断する。この間に復旧したら一切何もしない。瞬断対策。
BATTERYLEVELバッテリーレベルが値%以下になったらシャットダウンと判断。
MINUTESバッテリー稼働時間が値分以下になったらシャットダウンと判断。
TIMEOUTONBATTERY稼働になってから値秒経過したらシャットダウンと判断。
KILLDELAYONBATTERY稼働になってから値秒後にUPSの電源をOFFにする。Slaveでは設定しない。
※BATTERYLEVEL、MINUTES、TIMEOUTどれかの条件にマッチした時点でシャットダウンと判断される。

apcupsd自動起動設定

デフォルトでは自動起動するようになっていないので変更しておきます。
# systemctl enable apcupsd.service

確認
# systemctl is-enabled apcupsd.service
enabled

apcupsd状態確認

ここまでできたら自動起動の確認の為にも再起動しておきます。
起動完了後、確認コマンドで状態を見ます。
自動で正常に起動されていれば設定内容やUPSのステータス等が表示されます。
# apcaccess

自動起動までしているのにステータスが取れていない場合、特にマスターがWindowsの場合はWindowsファイアウォール等でブロックされている可能性が高いです。
その場合は開けてあげて下さい。

apcupsdテスト

念の為に事前にマスター側のTIMEOUT、KILLDELAY値は延ばしておきました。
状態を見るのに以下のログを「tail」で流しておくと分かりやすいです。
# tail -f /var/log/apcupsd.events

ケース1.UPSの電源をコンセントから抜線し、すぐにコンセント接続。何も起きない。[OK]
ケース2.抜線し、10秒経過後に「Running on UPS batteries.」ログ出力。その後すぐにコンセント接続。「Power is back.」ログ出力され、シャットダウンは起こらない。[OK]
ケース3.抜線し、60秒経過後シャットダウン。[OK]

こちらも想定通りの結果となりました。
やっぱり「POLLTIME」が60秒だとタイムラグが大きいので見直しは必須です。
短くすればその分負荷が上がるみたいですが。

ESXiへのリモートシャットダウンはまた別途設定します。

【関連記事】
UPSを買ってみた。
スティックPCにapcupsdを導入。
おうちで自作NAS - FreeNAS UPS連動編
おうちでVMware - ESXi UPS連動編


Secret

TrackBackURL
→http://000dandelion000.blog.fc2.com/tb.php/84-d3c593ab