先日の停電で懲りて、勢いあまってUPS(無停電電源装置)を2台も買い込みました。
前回のエントリ⇒ゲリラ雨・雷と停電対策に無停電電源装置(UPS)を注文・購入
今回はAPC ES 725をLinux(Fedora Core)で利用する設定方法についてまとめます。
APC ES725にはDELLのサーバー1台を接続します。サーバーはLinux(Fedora Core)が動作しており、フリーのUPS制御daemon(デーモン) apcupsdを使い、USB接続でUPSを制御します。
【スペック】
無停電電源装置(UPS)、APC ES 725 725VA(450W)
本番サーバー DELL PowerEdge 500 (定格420W)
【本番サーバー】
・linuxシャットダウン
・本体分解、掃除(ほこりを取る)
・UPS接続、USBケーブル接続
・(ネットワークケーブル接続)
・UPS ON
・(サーバーの電源ケーブルをUPSへ挿入)
・サーバーON
・sshを確認
・apacheの起動確認
(以降、私の環境のみ。詳細後述)
・(ログチェック(tail -fする))
・(ルーターのアドレス変換を元に戻す)
・(ログ確認、本番サーバーへのアクセスを確認)
【USBデバイスの確認】
USBなので自動認識するはずですが、念のため確認。
# dmesg | grep usb
usbcore: registered new driver usbfs
usbcore: registered new driver hub
usbcore: registered new driver hiddev
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.01:USB HID core driver
usb 4-1: new low speed USB device using uhci_hcd and address 2
hiddev96: USB HID v1.10 Device [APC APC ES 725 FW:821.y2 .A USB FW:y2 ] on usb-0000:00:1d.2-1
# /sbin/lsusb
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 002: ID 051d:0002 American Power Conversion Back-UPS Pro 500/1000/1500
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
USBを認識し、APCが見えていることを確認。
【APCUPSDの設定】
apcupsdとはAPC社のUPSを操作するdaemonです。
【参考URL】
・WAVE ログ: UPS(無停電電源装置) カテゴリー
・apcupsd(停電対策)/Fedora Core4
・ITmedia エンタープライズ:How-To:特別企画:UPSを利用した電源対策
私が利用しているlinux(Fedora Core)が古いため、すでに最新版でのビルドはありません。ソースからビルドしようとしたところ、ビルドはできるもののインストール(make install)で失敗。
仕方ないのでFedora Coreのバージョンに合致し、USBサポートをしているrpmを検索。
例)apcupsd-usb-3.12.2-1.fcX.i386.rpm
これをftpでダウンロードし、インストール
# rpm -ivh apcupsd-usb-3.12.2-1.fcX.i386.rpm
/etc/apcupsd/以下の設定ファイルが展開されるので、少々手直し。
UPSCABLE usb
UPSTYPE usb
DEVICE /dev/hiddev0 (指定しない場合は自動認識)
LOCKFILE /var/lock
ONBATTERYDELAY 6
BATTERYLEVEL 5
MINUTES 3 (バッテリーのruntimeが残り3分以下になったらシャットダウン動作)
TIMEOUT 300 (バッテリー駆動後300秒でシャットダウン動作)
ANNOY 300 (シャットダウンする300秒前にユーザーにサインオフを促す)
ANNOYDELAY 60 (電源障害後、ユーザーにログアウト警告するまでの時間)
NOLOGON disable (電源障害時でも、ユーザーのログオンを許可する)
KILLDELAY 0
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
結果的には参考リンク先とまったく同じに(苦笑)。
DEVICEは記述しなくても認識していました。
【cgiによるモニタリング】
cgi-binディレクトリに、/etc/apcupsd/cgi/*をコピー。
ローカルネットワークからのみのアクセスに変更。
- http.conf
ScriptAlias /cgi-bin/ "/usr/local/apache13/cgi-bin/"
AllowOverride None
Options None
#Order allow,deny
Order deny,allow
#Allow from all
Deny from all
Allow from 127.0.0.1
Allow from 192.168
http://192.168.xx.xx/cgi-bin/multimon.cgi
でアクセス。
(詳細画面)
バッテリ残量は100%、使用消費電力は22%で、バッテリー駆動で(推定)29分使用できる状態。
他にもバッテリー電圧と電源入力電圧を見ることができます。ただし出力電圧は未対応のため見られません。
【コンソールによる詳細情報表示】
コンソールからも情報を取得可能。
$ /sbin/apcaccess
[tnoma@nomano apcupsd]$ /sbin/apcaccess
APC : 001,034,0861
DATE : Wed Sep 03 02:27:58 JST 2008
HOSTNAME : nomano.shiwaza.com
RELEASE : 3.12.2
VERSION : 3.12.2 (18 January 2006) redhat
UPSNAME : nomano.shiwaza.com
CABLE : USB Cable
MODEL : APC ES 725
UPSMODE : Stand Alone
STARTTIME: Tue Sep 02 01:49:57 JST 2008
STATUS : ONLINE
LINEV : 098.0 Volts
LOADPCT : 22.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 29.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 300 Seconds
LOTRANS : 090.0 Volts
HITRANS : 110.0 Volts
ALARMDEL : Always
BATTV : 13.6 Volts
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
STATFLAG : 0x07000008 Status Flag
MANDATE : 2007-12-02
SERIALNO : 5B0748T48258
BATTDATE : 2000-00-00
NOMBATTV : 12.0
FIRMWARE : 21.y2 .A USB FW:y2
APCMODEL : APC ES 725
END APC : Wed Sep 03 02:28:00 JST 2008
web管理画面もこの情報から表示しているため、基本内容は同じです。
【トラブル】
ここで問題発生。負荷(ロード)が0%のままで正常に表示されないことがありました。
ケーブルの接続、機器の故障を疑ったのですが、単純に一旦APC UPSをシャットダウン。APCを再起動後、サーバーを再接続して表示されるようになりました。
【感想】
サーバーの電源定格は420Wでも、実際の消費電力は22%とかなり低いので意外と余裕がありました。停電してもネットワークは使えることが多い(光ファイバやADSLは基本的に別系統)ので、ルーターや無線LAN親機もつないでおくとネットワークも使えるため良いようです。
APC ES 725 BE725JP | |
エーピーシー・ジャパン 2004-07-02 売り上げランキング : 580 おすすめ平均 大容量・長寿命・低価格 Linuxでも使えます UPSも安くなりましたね Amazonで詳しく見る |
【番外編:サーバーシャットダウンの前準備】
自分用メモ。以降は私の環境特有のものです。
うちの環境の場合、バックアップサーバーが用意してあるので本番サーバーをダウンしている間はバックアップサーバーで運用することにします。
【本番サーバー側設定】
本番サーバー、MovableType用DBのバックアップ
# /usr/bin/mysqldump -u mtuser -p mtdb > /var/mysqldump/mtdb.`date +\%Y\%m\%d`.0
バックアップサーバー側作業
# rsync -avz nomano:/var/mysqldump/ /usr/local/apache/mysqldump >> /var/log/rsync_mysql.log
# rsync -avz nomano:/var/www/html/ /var/www/html >> /var/log/rsync_archives.log
通常cronで動作させているrsyncを手動で実施。コンテンツを同期させ最新ファイルにする。
# cd /var/www/html/mt
# chmod -x mt-xmlrpc.cgi mt-comment.cgi mt-tb.cgi mt-atom.cgi
後でDBを戻すのが面倒なので、コメント、トラックバック、XMLRPC/Atomなどリビルドがかかるcgiはオフ(受け付けない)ことにするため、実行ビットを落とす。
【ルーターのアドレス変換を切り替え】
ルーターの設定で、外からの80ポートへのアクセスを本番サーバーのIPアドレスからバックアップサーバーへのIPアドレスに変更。
【切り替えを確認】
# tail -f /usr/local/apache/logs/access_log
でバックアップサーバーにアクセスが来たことを確認。