★Centos6.4サーバーに、廉価なサウンドハウスUPS1200LXを接続した際、Network UPS Tools (NUT)の lowbattery設定機能が働かず、UPSがサーバーのシャットダウン前に停止しまう為、UPSilon 2000 for Windows と同等に、所定の充電率以下になるとシャットダウンを行う機能を持つスクリプトを作成しました。 ★スタンドアーロンの場合の設定ではこのスクリプトは作成せずNetwork UPS Tools (NUT)の機能のみ使用した 設定となっています。 UPSのlowbatteryをNetwork UPS Tools (NUT)のデーモンが検知しuspmonに通知されシャットダウンしますが、 私のUPS1200LXでは正常にシャットダウンしません。。 ★マスタの場合の設定では、所定の充電率以下になるとスレーブ側にシャットダウンを通知し、スレーブ側から のシャットダウン開始通知を確認後マスター側がシャットダウンを行うスクリプトを設けています。 マスタ側ののスクリプトを一部変更するだけで、スタンドアーロンとしても動作します。 ★スレーブの場合の設定では、マスター側からのシャットダウン通知を受け取り、シャットダウン処理を開始し、 マスター側にスレーブ側がシャットダウン処理を開始した事を通知しシャットダウンを行うスクリプトを設けて います。 スレーブ側の単独シャットダウンは行えません。 マスター側からのシャットダウン指示によりシャットダウン行います。(Network UPS Tools (NUT) 本体のスレーブ側に関する単独シャットダウン機能は制限しています) ☆スクリプトの詳細説明 M1,S1.マスター側upsmon,スレーブ側upsmonはマスター側upsdをモニタリングしており、UPSのイベント 発生時にマスター側のupsmonはスクリプトupscheckを起動し、スレーブ側upsmonはスクリプト upsslaveを起動します。 M2.upscheckは、UPSがバッテリーより電源供給時UPSの充電率を監視し、充電率が予め決めた充電率 (STDWCHARGE=)未満になると、スレーブ側に「予め決めた充電率未満のシャットダウン」を通知し シャットダウン処理を開始します。 充電率が予め決めた充電率(STDWCHARGE=)未満になるまでの間、UPSがACラインからの電源供給に 切り替わったかを監視し、ACラインからの電源供給に切り替わった時スレーブ側に「ACラインからの 電源供給に切り替わった」を通知し処理を終了します。 M3.upsdからLOWBATT,FSD,SHUTDOWN,NOPARENT通知を受け取った時もシャットダウン処理を開始しま す。 REPLBATT通知を受け取った時はシャットダウン処理をしません。 その他の通知を受け取った時は処理を終了します。 (定期的にログをチェックしてください) S2.upsslaveは、UPSのバッテリー電源供給による起動時、「予め決めた充電率未満のシャットダウン」通知 を受け取るまで「ACラインからの電源供給に切り替わった」通知を監視し、「ACラインからの電源供給に 切り替わった」通知を受け取った時処理を終了します。 「予め決めた充電率未満のシャットダウン」通知を受け取った時はシャットダウン処理を開始します。 S3.upsdからLOWBATT,FSD,SHUTDOWN,NOPARENT通知を受け取った時もシャットダウン処理を開始しま す。 REPLBATT通知を受け取った時はシャットダウン処理をしません。 その他の通知を受け取った時は処理を終了します。 (定期的にログをチェックしてください) M4.upscheckは、シャットダウン処理を開始後、スレーブ側に「シャットダウン開始」を通知し、スレーブ側から の「スレーブ側シャットダウン開始」通知を監視します。 「スレーブ側シャットダウン開始」通知を受け取った時シャットダウンを行います。 S4.upsslaveは、シャットダウン処理を開始後、マスター側からの「シャットダウン開始」通知を監視し、「シャット ダウン開始」通知を受け取った後マスター側に「スレーブ側シャットダウン開始」を通知しシャットダウンを 行います。 ■■upsmonのイベントはランダムに発生する為、マスター・スレーブのスクリプトはマルチタスクで動作出来る ようになっています。 upsmonのイベントがランダムに発生した場合でも、シェル変数(内部変数)を使用している為、他のプロセ スのスクリプトへの影響はありません。 upsmonのイベントがランダムに発生した場合でシャットダウン対象外処理の場合、各種通知を操作してい ませんので他のプロセスのスクリプトへの影響はありません。 upsmonのイベントがランダムに発生した場合でシャットダウン対象処理の場合、瞬間的にはどれかの プロセスのスクリプトが先行して処理を行う為、後続のプロセスのスクリプトはkillされます。 ■■scpコマンドはスレーブ側から発行しパスワード無で秘密鍵・公開鍵を使用し、フラグ (各種通知)のチェック、設定に使っています。 スレーブ1つに対しマスター側ユーザーが1つ必要になります。 scpコマンドの詳細は他の方のHPを参照して下さい。 ★マスター・スレーブのスクリプトはデバッグの意味も含めて、データーのロギング機能を備えています。 ★サウンドハウスUPS1200LXは、blazer_usbドライバーを使用するkrauler互換のUPSです。 同じ仕様のUPSならば、この一連のスクリプトはそのまま使用できると思います。 ★debian GNU/linux 7.2.0で機能できるか試してみましたが、upsmonの-Dオプションが機能せずNOTIFYCMD 設定のコマンドスクリプトを起動する事が出来ません。したがってdebian GNU/linux 7.2.0では使用不可です ★Network UPS Tools (NUT)をyumにてインストールした際の各種コンフィグレーションファイルの設定とスクリプト 等は「Network UPS Tools (NUT)をCentos6.4にインストール」の項以下にあります。 ★コンフィギュレーションファイルの設定・スクリプトは自由に使用・変更していただいて結構です。 その際に問題が発生しても私は一切責任が持てませんのでご了承願います。 ★各種設定ファイルの変更は、先ずNetwork UPS Tools (NUT)マニュアルを熟読してください。 (どなたかが言っておられましたが、処理内容の系統だてての説明が無い為、理解するのに相当苦労すると 思います^^;) |
Network UPS Tools (NUT)を Centos 6.4 にインストール |