apcupsdとは
apcupsdは、UnixとWindowsマシン上でAPCのUPSのほとんどのモデルのパワーマネージメントと制御に使用することができる。電源障害時に、電源障害とシャットダウンが発生する可能性があることをユーザーに通知する。また、電源が回復しない場合は、バッテリが消耗、時間の経過、電力消費率によって決定される計算に基づいてシステムのシャットダウンを行う。
UPSとの接続は、シリアルケーブルまたはUSBケーブルが基本。UPSと直接接続しているサーバーで上記の電源管理を行うことができるのはもちろんだが、このサーバーをネットワークから監視する他のサーバーでも同じような電源管理ができる。つまり、ネットワークを通じてほかのコンピュータがUPSの状態を知ることができる。これは、1台のUPSに複数のコンピュータを接続している場合に便利だ。もちろん、どちらにもapcupsdがインストールされている必要があるが、apcupsdは、GPLバージョン2の下でライセンスされているフリーソフトなので余計なコストはかからない。
ぼくのUPSはAPC ES 550というUSB接続のものだが、これに幾つかのマシンをつなげている。
この文書は久しぶりにWindows Server 2008 R2 にapcupsdをインストールしたら、いろいろつまずいたので、メモとして残しておく。
インストール
インストールは、
http://www.apcupsd.com/ からバイナリを拾ってくる。現在の最新のバイナリは、winapcupsd-3.14.14.exe だった。USB接続の場合、これを実行し、ダイアローグに従い、NEXTボタンをクリックしていけば、インストールできる。
ちょっとバイナリのバージョンは古いが、 http://www.hyperdyne.co.jp/contents/ShutDownEx/winapcupsd.pdf を参考に。ただし、レジストリの変更は、僕のような安いUPSでは不要だ。これは電源復帰時にサーバーを自動的に立ち上げさせるKillpower機能というものを実装するために必要なようで、幾分インテリジェントなちょっと高価なUPSでないと機能しないもののようだ。
USBドライバ
デバイスマネージャで、「ヒューマン インタフェース デバイス」の下に「American Power Conversion USB UPS」となっている場合は、正しく認識されていない。そこで、これを右クリック、「ドライバーソフトウェアの更新」を選んで、「コンピュータを参照してドライバーソフトウェアを検索します」を選択し、「次の場所でドライバーソフトウェアを検索します」でC:\apcupsd\driverを入れてやれば正しく、「バッテリ」の下に「American Power Conversion USB UPS (Apcupsd)」と表示されるはずだ。
apcupsd.conf
インストールの途中でapcupsd.confファイルを修正できる。後からやっても良いが、サービスを再起動する必要があるので面倒だ。とりあえず3点だけ修正する。USB接続でないと、いろいろ変更する必要がある(後述)。
BATTERYLEVEL 5
↓
BATTERYLEVEL 50
バッテリー残量が指定%以下になると、サーバーをシャットダウン。
MINUTES 3
↓
MINUTES 10
バッテリー駆動中にUPSの残り稼動時間が0分か、もしくはここで指定した時間(分)を下回った場合にシャットダウンを開始。
タイムアウト
TIMEOUT 0
↓
TIMEOUT 10
バッテリー駆動になってから何秒後にシャットダウンを開始するか。デフォルトの0だとこの機能が無効。基本的に0推奨だが、テストのために最初は小さな数字を入れておいた方がいいだろう。
ファイアウォール
直接UPSと接続しているサーバー(ネットの他のサーバーから参照されるサーバー)では、c:\apcupsd\bin\acpupsd.exe の通信を許可してやらないと、ネットのサーバーはUPSの状態を見ることができない。
ネットのサーバーの設定
ネットのサーバー(直接UPSを接続しないサーバー)も同様にwinapcupsd-3.14.14.exeをインストールしてやる。インストールの途中でapcupsd.confファイルを修正できるが、ここで前述の修正の他に、
UPSCABLE usb
↓
UPSCABLE ether
UPSTYPE usb
↓
UPSTYPE net
DEVICE
↓
DEVICE 192.168.1.40:3551
という修正を加える。DEVICEにはUPSと直接接続しているサーバーのIPアドレスとポート番号(3551)を記入する。
APC ES 550 BE550G-JP