#contents();
*** ネットワーク経由で電源制御が出来る機器の選定 [#me63af34]
- ネットワーク機器のハングアップ対策として、宅外から主要な機器の電源を制御する仕掛けを導入した
- [[明京電気 :http://www.meikyo.co.jp/]]の[[ mini LAN de BOOT :http://www.meikyo.co.jp/products/r4xl.htm]] を導入した~
&ref(Landb_03.JPG);
*** [[Web 設定ユテリティ :http://landeboot.hmuna.com:8081]] [#j31c13e9]
- User = admin
- Pass = frex
- 2nd pass = frex
*** Network setting [#z998c6c9]
- IP = 192.168.1.5
- Web port = 8081
- Telnet Port = 2300
*** Power Outlet setting [#w6c55288]
&ref(Landb_01.JPG);
- &color(red){"FTTH Gateway" and/or "ルータ" の電源を一端オフにしてしまうとネットワーク切断され制御(電源復旧)不能になる。};
- この事態を回避するために、これらの機器は電源オフが出来ない設定にした(shutdown = -1)
-- 操作画面上で [OFF] コマンドの送信は出来るが、実際には電源は切れない
- サーバーは電源オフ操作をしてから電源が実際に切れるまで3分待つ設定とした
- サーバーに対するシャットダウン指示を出さなければ待っても何の意味もない
- サーバーシャットダウンの操作は未実装 (専用ケーブルが必要....作れそうだが)
- [[APC(UPS)自動シャットダウン >Cent_UPS]]は有効、外部停電時には自動シャットダウンする
- &color(red){LAN de BOOT の機器一斉リセット操作は、サーバー自動シャットダウンが出来ないので使用禁止(使えない)};
- 外部電源長時間停電後 LAN de BOOT 自体が復旧する時には以下のシーケンスを設定
-- FTTH Gateway は LAN de BOOT 起動後直ぐにに電源オン
-- Master Router は FTTH 起動完了を待って 20秒後に電源オン
-- Server (Spirit) はルーター起動・ネットワーク初期化を待って 60秒後に電源オン
-- 現在未使用の3番は自動で電源オンさせない(-1秒を設定)
- &color(red){但し、現状 LAN de BOOT は UPS から電源をもらっている(ので、瞬停には耐える)が、現在利用している UPS では外部電源復旧時に自動で電源をオンにする方法がないので、実際には サーバーシャットダウン完了後に UPS が自動停止してしまうと自動で復旧する方法がない ・・・・ 災害時など長時間の停電には対応できない};
*** サーバーの自動シャットダウン [#mc8713c9]
- LAN de BOOT で電源を切る時に サーバーはきちんとシャットダウン動作をさせたい
- LAN de BOOT には "接点方式" 専用のシャットダウンケーブルがあり、電源ポート毎にシャットダウン信号をサーバーに送出できる
- &color(red){サーバー側(Linux) にはシャットダウン信号をモニターするためのデーモンが必要になる};
- Linux には標準のデーモンが組み込まれていない (Windows にはあり) のでオープンソースを探した
-- [[YEC(ユタカ電機製作所)のサポートページ:http://www.yutakadenki.jp/japanese/seihin/ups/linux/f_linux.htm]] に参考情報を発見。
-- &color(blue){実際のデーモンはドイツのオープンソース }; &ref(yec.tgz); の引用
-- &ref(usv.doc,center,マニュアル); に詳細な設定、運用情報があった
- &color(red){停電検出信号の合わせ込み ( usvd と LAN de BOOT が合っていないので )};
-- LAN de BOOT のシャットダウン信号出力(active = "H")
電源障害信号 = CS (CTS)
容量低下信号 = CD (DCD)
-- usv deamon のデフォルトのシャットダウンモニター
DCD (1 pin) high = line fails
CTS (9 pin) high = battery is low
-- ファイルの展開
[root@spirit ]# cd /usr/local
[root@spirit ]# tar xzvf (download)/yec.tgz
[root@spirit ]# cd usvd-2.0.1
-- usvd.c の修正 (検出ポートの入れ替え) ----> &ref(usvd.c);
for(;;)
{ sleep(10);
/* if(get_dsr(fd)==0&&get_dcd(fd)==0&&get_cts(fd)==0)
{ if(noconnect==0)
{ syslog(LOG_WARNING,"usv not connected, waiting for connection.\n");
system("/etc/usvd/noconnect");
}
noconnect=1;
continue;
}
else
{ if(noconnect!=0)syslog(LOG_WARNING,"usv connection ok, continuing.\n");
noconnect=0;
}
*/
// muna if(get_cts(fd)!=0&&linefail==0)
if(get_dcd(fd)!=0&&linefail==0)
{ linefail=1;
// muna syslog(LOG_WARNING,"line failure\n");
syslog(LOG_WARNING,"Force remote shutdown request detected\n");
system("/etc/usvd/linefail");
}
// muna else if(get_cts(fd)==0&&linefail!=0)
else if(get_dcd(fd)==0&&linefail!=0)
{ linefail=0;battlow=0;
syslog(LOG_WARNING,"line is back\n");
system("/etc/usvd/lineback");
}
// muna if(get_dcd(fd)!=0&&battlow==0)
if(get_cts(fd)!=0&&battlow==0)
{ battlow=1;
syslog(LOG_WARNING,"battery low signal detected\n");
// muna system("/etc/usvd/battlow");
}
}
- usv deamon の導入 ( usv はドイツ語で ups のこと )
[root@spirit usvd-2.0.1]# make
[root@spirit usvd-2.0.1]# make install
[root@spirit usvd-2.0.1]# chmod o+rw /dev/ttyS0
[root@spirit usvd-2.0.1]# ln -s /dev/ttyS0 /dev/usv
[root@spirit ~]# ls -l /dev/usv
lrwxrwxrwx 1 root root 10 5月 21 11:42 /dev/usv -> /dev/ttyS0
- サーバースクリプトの追加
-- usv には、"シャットダウン時に UPS の電源を切る処理" と "シャットダウン待機中に電源が復帰した時のシャットダウンキャンセル処理 (linebak)" を行うためのスクリプトが用意されているが、今回 LAN de BOOT からは強制シャットダウンしか実行しないのでこれらのスクリプトの呼び出しは行わない ( LAN de BOOT 自体の電源は APC の UPS から供給されており、停電時には自動的に切れる設定となっている )
-- linefail 時のスクリプトを変更 ( linefail == landeboot の電源オフSWが押されたら、すぐにシャットダウン処理を開始する)
[root@backup usvd-2.0.1]# cat etc/linefail
#!/bin/sh
# send a message to all users
wall << EOF
power is failing... System shutdown immdiately
EOF
# initiate shutdown in some minutes
# be sure to put the command into the background so usvd continues running
/sbin/shutdown -h now
-- ファイルをコピー (linefail の中で指定された場所にコピーする)
[root@spirit ~]# mkdir /etc/usvd
[root@spirit ~]# cp /usr/local/usvd-2.0.1/etc/linefail /etc/usvd/
[root@spirit ~]# cp /usr/local/usvd-2.0.1/etc/noconnect /etc/usvd/
[root@spirit ~]# cp /usr/local/usvd-2.0.1/etc/battlow /etc/usvd/
- usv deamon の起動
-- /etc/rc.local に起動スクリプトを追加したが、起動時に /dev/usv が無いといわれる
May 21 11:49:30 spirit /sbin/usvd[2952]: unable to open device /dev/usv, exiting.
-- 起動時に /dev/ttyS0 のパーミションが元に戻り、/dev/usv へのリンクも消えてしまっている
-- rc.local の中にこれらの処理を追加して、正常に usv deamon が起動することを確認
--- /etc/rc.local の内容
# Add support for the LAN de BOOT automatic shutdown
echo "Starting usvd deamon"
if [ -x /sbin/usvd ]; then
chmod 666 /dev/ttyS0
ln -s /dev/ttyS0 /dev/usv
/sbin/usvd
fi
--- /var/log/messags (該当部分)
May 21 11:59:32 spirit /sbin/usvd[3026]: startup successful
*** 遠隔電源制御 (Web からのコントロール) [#hecd5487]
&ref(Landb_04.JPG);
- Web から [ON] [OFF] [RESET] の操作ができる
- [OFF] を実行するとサーバーにシャットダウン指示が出て、設定時間(現状は 120秒)経過後の電源が切れる
- &color(RED){[RESET] は直ちに電源が切れて設定時間後(現状は 120秒)経過後に電源がオンになる動作};
-- → &color(red){サーバーのシャットダウン処理ができないので、通常は [RESET]は使用してはいけない};
*** 自動 死活管理 [#ka163ffc]
&ref(Landb_02.JPG);
- 1分間隔で監視対象機器に ping を発行し、応答が無い状態が設定したしきい値を超えた場合自動リセットを行う
- 監視対象は Master-Router と Server-Spirit の2つとする
- ping の結果を 10回分(=10分)遡って評価し、10回(=全部)無応答の場合にリセット操作を行う
- リセット操作は一度実行されると、リセット条件が引き続き発生しても一時間は行わない
*** セキュリティ設定 [#tfd8515a]
- IPアドレス(マスクビット指定可能)による制限が可能
- 現状、海外などからの電源制御を行いたいので &color(red){IP アドレスによるセキュリティ設定は行わない};
*** 動作検証 (課題と解決) [#ke5e54ca]
- ユティリティソフト(ブラウザー)へのログインは同時に一つしか受け付けない
- &color(red){終了時に ログアウト操作を行わないと 一定時間(初期値は10分)別の端末からのログインが拒否される};
-- この時 (パスワードは正しくても)Bad Password という表示が出る
- FTTH Gateway のリセットは問題なく動作する
- Server のリセットは シャットダウンの仕掛けがまだなので試していない
-- サーバー機の[BIOS設定]で外部電源オン時に自動的にブートするように設定・検証済み
- &color(red){Master-Routerのリセット操作後、ネットワーク接続ができなくなる};
-- 同一ローカルセグメント内の接続は問題ない ・・・・・ ローカルルルーター動作OK
-- WANポートの PPPoE アドレス取得は成功している
-- LAN → WAN のアクセスが出来ない (非常に遅い) ようだ
-- &color(blue){WAN → LAN のアクセスは問題ないようなのでこれで運用する};
-- ルーターを(ダミーの設定変更を使って)ソフト再起動すると正常動作に戻る