何気なく、aptitudeを実行して、新規パッケージにリストされているモノの中に、"nut-powerman-pdu"というのを発見。ちょっと調べてみると、"Network UPS Tools(nut)"という汎用タイプのUPS管理ツールの一部だというのが判った。
UPSの管理は、以前のエントリーにあるとおり、
昨日の夕方、思い立ったように接続&セットアップして見ましたけど、思っていたよりも簡単に終わってしまって、ちょっと拍子抜け。
やっとセットアップしました>UPS - Soukaku's HENA-CHOKO Blog
折角、セットアップしたUPS、サーバ1台だけで使うのはもったいないし、
Soukaku's HENA-CHOKO Blog:やっとセットアップしました>UPS
とりあえず、サーバを一台繋いだだけの状態で、30分ぐらいはバッテリー保ちそうな感じだったから、ちょっとした停電ぐらいだったら、何とかなりそう。
という感じなので、ネットワーク経由で他のサーバの自動シャットダウンも出来るように、設定してみました~。
NetworkUPS化してみました - Soukaku's HENA-CHOKO Blog
APC ES500をapcupsdでモニタリングしているのだけど、新しく見つけたNetwork UPS Toolsでもモニタリング出来る上に、対応可能なUPSが固定されていないという点も魅力的なので、こちらに乗り換えることにする。
インストール
うちは、"sid"で運用中なので、その辺は注意のこと。Debianパッケージとしては、"etch"からのようだけど、版によってバージョンが違っていたり、パッケージ構成が違っていたりする。
ま、その点を除外すれば、例によって例のごとく"aptitude install nut
"を、ルート権限で実行すればよし。apcupsdがインストールされていると、そちらは依存関係の解決のために削除しようとするので、aptitudeの指示どおりに進めれば、基本的にはOK。
今回は、"aptitude install nut nut-cgi
"を実行して、Network UPS Tools本体とそのcgiモジュールをインストール。
設定:サーバ
インストールが完了しても、nut自体は動作していないので、ちまちまと設定する必要があります。
設定するのは、/etc/nut
ディレクトリ以下のups.conf
、upsd.conf
、upsd.users
、upsmon.conf
と/etc/default/nut
の5つ。
インストール直後の/etc/nut
は空なので、ひとつずつ設定ファイルを作っていきます。
まず、ES500とはUSB接続なので、その情報をups.conf
に設定します。
"driver"にしている値は、UPSの機種やサーバと接続するケーブルによって変わるので、公式サイトで確認すること。
#多分USB接続が出来るUPSだったら、"usbhid-ups"を指定すれば、どこのメーカでもいけそうな気がする・・・。
eswat2:/etc/nut# more ups.conf
[ES500]
driver = usbhid-ups
port = auto
正しくnutがUPSにアクセスできるか、upsdrvctl
コマンドを使ってチェック。
eswat2:/etc/nut# upsdrvctl start ES500
Network UPS Tools - UPS driver controller 2.4.1
Network UPS Tools - Generic HID driver 0.34 (2.4.1)
USB communication driver 0.31
Using subdriver: APC HID 0.93
eswat2:/etc/nut# upsdrvctl stop ES500
Network UPS Tools - UPS driver controller 2.4.1
NUTへのアクセスを許可するネットワークの設定を、upsd.conf
に書きます。ここでは、localhostと同一セグメントに存在するサーバからのアクセスのみを許可するようにします。(あわせてパーミッションも設定。)
eswat2:/etc/nut# more upsd.conf
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACL Network-LOCAL 172.16.0.0/24
ACL Network-GLOBAL 218.219.149.232/29
ACCEPT localhost Network-LOCAL Network-GLOBAL
REJECT all
eswat2:/etc/nut# chown root.nut upsd.conf
eswat2:/etc/nut# chmod 640 upsd.conf
UPSの動作状況をモニターする際に必要となるユーザ名とパスワード、アクセス可能なネットワーク情報(upsd.conf
でACCEPTに指定した)をupsd.users
に設定します。(もちろんパスワードは任意のモノで。)
平文のテキストファイルなので、パスワードが漏れないよう、こちらもパーミッションの設定を忘れずに。
eswat2:/etc/nut# more upsd.users
[monmaster]
password = hogehoge
allowfrom = localhost Network-LOCAL Network-GLOBAL
upsmon master
eswat2:/etc/nut# chown root.nut upsd.users
eswat2:/etc/nut# chmod 640 upsd.users
UPSが動作した時の挙動を指定するため、upsmon.conf
を設定します。これもパーミッション設定を行います。
eswat2:/etc/nut# more upsmon.conf
MONITOR ES500@localhost 1 monmaster hogehoge master
POWERDOWNFLAG /etc/killpower
SHUTDOWNCMD "/sbin/shutdown -h +0"
eswat2:/etc/nut# chown root.nut upsmon.conf
eswat2:/etc/nut# chmod 640 upsmon.conf
最後に、システム起動時にnutが自動起動するように、/etc/default/nut
を編集します。
とりあえず、変更が必要なのは"START_UPSD"と"START_UPSMON"の部分。
eswat2:/etc/default# diff -u nut~ nut
--- nut~ 2009-02-18 05:05:47.000000000 +0900
+++ nut 2009-02-23 22:04:56.000000000 +0900
@@ -1,11 +1,11 @@
# start upsd
-START_UPSD=no
+START_UPSD=yes
# set upsd specific options. use "man upsd" for more info
UPSD_OPTIONS=""
# start upsmon
-START_UPSMON=no
+START_UPSMON=yes
# set upsmon specific options. use "man upsmon" for more info
UPSMON_OPTIONS=""
変更したら、nutを起動します。あとは、nutのプロセスが起動していることを確認して、以下のものが動いていればOKです。
eswat2:/etc/default# /etc/init.d/nut start
Starting Network UPS Tools: upsdrvctl upsd upsmon.
eswat2:/etc/default# ps aux | grep nut
nut 15438 0.0 0.0 2100 708 ? Ss 22:07 0:00 /lib/nut/usbhid-ups -a ES500
nut 15440 0.0 0.0 2048 612 ? Ss 22:07 0:00 /sbin/upsd
nut 15443 0.0 0.0 2020 716 ? S 22:07 0:00 /sbin/upsmon
root 15459 0.0 0.0 3952 808 pts/1 S+ 22:08 0:00 grep nut
動作確認
ここまでの設定が終わると、停電時にUPSからの給電に切り替わると、設定した時間が経過すると、サーバのシャットダウンが自動的に行われるようになります。
ちなみに、ここまでの設定値のまま、UPSをコンセントから外したところ、1分後にシャットダウンが始まりました。(^^;
#たぶん/etc/nut/upsmon.conf
を弄れば調整できるはずだ・・・。)
ということで、設定値のチューニングが必要だし、パッケージに含まれるupsc
というコマンドで出力されるステータス値を使ったmuninでの監視とか、複数サーバの停電時の電源制御といったところは、追々別エントリーにて。
#nut-cgiのことも書いてないし・・・。
コメントする