サンデープログラマーとしては、久しぶりの投稿だ。題材は、サーバーの電源異常に如何に対応するか。そんな事を考えてみた。きっかけは、100Vのコンセントが、意に反して抜かれてしまったり、工事関係などで、いきなりブレーカーが落とされたり、見慣れたパソコンが、まさか、サーバだなんて、理解されない所から、その対策を考えると言うなんとも、受け身的な話だ。普通に考えれば、有りえない話だが、ある所には、かなりの頻度で有る物だ。
目標は、電源断は、有りうる。それを知り、電源が回復した時、サーバーも回復させるか。つまり、知らない間にサーバーが停まったままになって居る事を避ける事を目標にした。考えられる想定を2つとした。一つは、ブレーカの切断により全体の停電。全電源喪失だ。2つ目は、コンセントが抜かれるなどサーバーだけが、間違って電源を切ってしまったなどだ。その時、サーバー管理者である自分は、外出中としよう。
対策
①全電源喪失かどうかは、「ネットワーク監視サービス」に登録しておく事で、確認できそうだ。全電源が無くなれば、モデムルータの電源も失われる。PINGが疎通しなくなるので、そのタイミングでスマホにメールをもらう。無停電電源の設置も出来れば、万全だ。サーバを痛める事も避けられる。
②通電が回復し、PINGが通れば、外からマジックパケットを送って、パソコンを起動させる事が出来る。「Wol Wake On Lan Wan」や「Remotch」などが役に立つ。モデムルータの設定も、これに関連してネットをググれば、すぐに見つかる。サーバ関連のソフトでは、これを外から起動できたかどうかを知る為に、「I am wake up.」メールを出せば、世話は無い。
③次は、結構厄介だ。間違ってコンセントを抜かれた場合。無停電電源がシャットダウンを促す。仕様書だけの確認なので、そのはずだが。それを受けて、シャットダウンを感知して、「I am dying.」メールが出せれば、良い。もっとも、それを受けたら、すぐにでも電話なりを掛け、コンセントを戻させなければ、復帰はしないが。
④後は、念のためと言うか、自分自身か、他からか、どちらでも良いが、PingとHTMLの要求を一定時間ごとに繰り返えす。異常が有れば、それを通知する。
今回は、そうした事を念頭にソフトを書いて見た。書いて見たと言うより、調べてみたら、大方のコードは、コピペで済んでしまった。それをまとめただけと言う便利な時代だ。VB.netで大きさにして、24KBite程度と言う小さなもの。例によって、プログラムとソースをまとめる。バグは必ず潜んでいると考えて、ください。責任は負えませんので、その点は何時もの通り、よろしくお願いします。
プログラムの説明
「add.txt」ファイルは、メールの通知を受けるためのe-mailアドレスリスト。「smtp.def」は、メールを送るためのプロバイダーのsmtpサーバー情報。「watching.exe」は、プログラムの本体。プログラムは、Microsoft Visual Basic 2010 Express で開発しました。改良やバグの修正はソースを参考に自分で行ってください。
<ダウンロード>