お次はWindows鯖編です。
前回はNUTを利用したNAS/ESXiの自動シャットダウンですが、
今度はWindows環境でのapcupsd利用です。
●おさらい
前回も出している図ですが、わが家の接続図です。
制御は2系統あり、NAS/ESXi(UNIX系)はNUT(Network UPS Tool)を用いた制御、
windows系はapcupsdでの制御としています。
ネットワーク機器はUNIX系のUPS(SMT750JE)に接続して保護しています。これは録画鯖のランタイムを伸ばすため。録画鯖は録画中である可能性も考慮し、30分のバックアップ設定としています。
Windows系の保護で使用するUPSはSmart-UPS 750VA(SUA750JB)。すでにわが家に来てから10年ほど経ちますが(バッテリは3-4回交換している)まだまだ動作に問題ありません。
こちらの本体は液晶がついておらず、負荷状況やバッテリ残量などはLEDで表示される形式となります。
●何故にapcupsd?
Windows環境でNUTのバイナリが微妙だったから、という身も蓋もない理由です。
当初はNUTを入れてこねくり回していたのですが、思うように動かず、
apcupsdに鞍替えしました。
●UPSの設定
UNIX系と同じように、SNMPv1の有効化/communityの設定、
およびPowerChute Clientの設定をしておきます。
●サーバ側
公式からWindowsバイナリの最新版をダウンロードしインストールします。
インストール時の設定はデフォルトのままで問題ありません。
インストール最終段でconfigファイルの設定のため、メモ帳が開かれるため
以下の内容を設定します。
(設定ファイル自体はインストールディレクトリ内のetcフォルダにあります)
UPSNAME SUA750JB
UPSCABLE ether
UPSTYPE snmp
DEVICE <UPS_IP>:APC:<community>POLLTIME 15
ONBATTERYDELAY 5
BATTERYLEVEL 10
MINUTES 10
TIMEOUT 1800
UPSCABLEをetherに、TYPEをsnmpにすることでネットワーク経由でSNMPを利用したモニタリングが可能となります。
監視間隔は15秒、バッテリレベルが10%を切ったとき(BATTERYLEVEL)、バッテリのランタイムが残り10分になったとき(MINUTES)、またはバッテリ切り替え後30分(1800秒)経過時(TIMEOUT)に自動シャットダウンを行う構成としています。
なお、apcupsdはWindowsサービスとして登録され、apctrayという監視用アプリケーションも登録されるのですが、起動時に正常に監視状態が反映されない現象が発生したため、サービス開始を「自動(遅延開始)」と設定変更したところ事象は改善しました。
apctrayからUPSの状態が見えていればOKです。
また、クライアント側と通信するため、TCPの3551番を開放しておきます。
●クライアント側
お次はクライアント側の設定です。設定方法はサーバ側とほぼ同じです
UPSNAME SUA750JB
UPSCABLE ether
UPSTYPE net
DEVICE <SERVER_IP>:3551POLLTIME 15
ONBATTERYDELAY 5
BATTERYLEVEL 10
MINUTES 10
TIMEOUT 300
サーバ側とはapcupsdソフトウェア同士の通信となるため、UPSTYPEはsnmpはなくnetとなります。またDEVICE行の表記も変わります。
クライアント側はサーバと違い長時間保護をする必要はないので、300秒経過後にシャットダウンを走らせます(バッテリレベル10%とランタイム10分以下は共通)
正常にサーバ側と通信できるとBattery/loadが表示されます。
Statusは「ONLINE SLAVE」と表示されます。
参考:
●動作テスト・まとめ
上記の設定ののち、UPSのコンセントを抜き、指定時間のちにシャットダウンされればOKです。
これで我が家にある常時電源の入っているサーバ類はすべて商用電源が途切れたあと、一定時間で自動的にシャットダウンできるようになりました。
特にHDDを積んでいるNASと録画鯖に関しては、突然の電源断が一番怖いので対策できてよかったです。