エム・クレストの副社長兼エンジニアである小澤一裕です。情報システム部門に配属された新入社員やリスキリングで改めてICTに取り組もうという方々に向けて、知っていると便利なICTに関する情報をお届けしようと考えました。第9回は「シャットダウンの順番を自動制御する」をテーマに、停電時のシャットダウン制御について紹介します。
■UPSだけでは短時間しか持たない
クラウドサービスや無停電対策が取られているデータセンターでは意識しなくてよいことですが、自社内にラックを立ててサーバーやストレージなどを設置・管理する場合、停電対策が必須になります。言うまでもありませんが、電源が瞬断されるとデータ消失やハードウェア故障につながるからです。
一般的な対策としては、予期せぬ停電や電源異常が発生したときに電源を供給し続けるUPS(無停電電源装置)を導入することが挙げられます。価格は数万円から10万円ぐらいまでなので、導入しない手はありません。UPSの機能は下図の通りです。
しかし、UPSで電源供給できるのは数分単位となります。従って、その間にサーバーをシャットダウンしなければなりません。必ずしも近くに人がいるとは限りませんので、自動的に行う必要があります。そのためUPSメーカーからは、シャットダウンを自動的に行うソフトウェアが用意されています。
■シャットダウンの順番を考えなければならなくなった
以前は、システムの構成が単純だったので、一つ一つのサーバーをそれぞれシャットダウンしても問題はありませんでした。ところが、仮想環境が当たり前になり、さらに仮想サーバーから共有される大規模ストレージも普及したことによって、停止する順番が重要になりました。例えば、ストレージが先に停止すると、そのストレージを利用している仮想サーバーが最悪の場合、壊れてしまいます。
仮想環境の場合、もう一つの問題があります。それは仮想化OSのシャットダウンに時間がかかり、UPSが停止するまでにシャットダウンが終わらないケースがあることです。その場合は強制終了する必要があります。
重要なシステムの場合、災害対策などで冗長化することも当たり前になり、その際はマスターとなっている機器を都度、コマンドで確認しないといけません。ネットワーク管理やUTM(統合脅威管理)機器は直接コマンドを入力できず、telnetかSSH経由でコマンドを送信しなければなりません。
結局、ユーザーの環境ごとにシャットダウンプログラムを作成する必要があるわけです。あるお客様から要望されたのは、できるだけ汎用的なプログラムを作成して、機器が入れ替わった場合、簡単な対処で対応できるようにしてほしいとのことでした。
■TeraTermのマクロを利用
そこで仮想サーバーは、以下のようにしました。
①優先順位通りに仮想サーバーを通常シャットダウンさせる。
②シャットダウンしない場合は何度かリトライしてから、それでもだめなら強制終了させる。
冗長化されている機器は、以下のようにしました。
①コマンドを投入してマスター機能を持つサーバーを探す。
②マスターサーバーをシャットダウンする。
ネットワーク管理機器などは、telnetやSSHの実行ソフトである「TeraTerm」のマクロで対応しました。TeraTermのマクロは文字列を送信し、返ってきた文字列によって実行するコマンドを定義できるようになっています。
こうした制御プログラムやマクロを機器ごとに作成し、それぞれを優先順位順に実行するプログラムをUPSが提供するソフトウェアから実行するかたちにしてシステム(下図)を構成しました。
■テストが難しい
プログラムをつくるのは比較的容易ですが、問題は検証テストです。本番環境と全く同じ環境をつくってテストできれば簡単ですが、現実的ではありません。本番環境で試すことになります。しかし、本番環境でテストに失敗したら、それこそデータが消失したり、サーバーを故障させたりすることになりかねません。
そこで、順にシャットダウンする部分を切り出し、一つずつ実行して検証するようにしました。実行部分は、プログラムに与える引数で制御できるようにしておきました。影響度の高い機器をテストする際には、関連する機器をあらかじめ手動で停止しておき、万が一の事態に備えました。
こうして一つ一つ動作確認を行ってから、一連のシャットダウンのテストを行い、無事に試験を完了できました。
クラウド全盛の時代とはいえ、オンプレミスで稼働するシステムがなくなることはないでしょう。最近は実際の機器や配線を知らないでエンジニアをしている人も多くなっていると思いますが、現場で起きていることを解決できるスキルは、この先も貴重かもしれません。
■執筆者プロフィール

小澤一裕(コザワ カズヒロ)
エム・クレスト
取締役副社長兼エンジニア
インターネット黎明期の2001年にWeb系ベンチャー企業でプログラマーとして多くのシステム開発を手がけた後、日立グループにてシステムエンジニアとして大規模インフラ事業などに従事。放送とITの融合時代を先読みし放送系ベンチャー企業で開発、拡販に関わる。その後、ITの困りごとを解決する専門集団「エム・クレスト」の立上げに参画。