【文献】
沼田晋作、外3名,自動構築スクリプトを用いたCMDBによる障害原因自動特定・復旧機能の実装と評価,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2017年 1月12日,Vol.116 No.404,pp.31-36
(58)【調査した分野】(Int.Cl.,DB名)
前記要素間接続情報作成手段は、前記構成要素の集合の中で、あるサーバに存在する所定構成要素が依存している別の所定構成要素を、同一サーバ内、同一ネットワーク内、別ネットワーク内の順番で探索することにより前記要素間接続情報を作成する
ことを特徴とする請求項1又は2に記載の試験自動化装置。
前記要素間接続情報は、前記所定構成要素としてのアプリケーション、当該アプリケーションに関連するネットワークインタフェース、IPアドレス、及びネットワークを含む
ことを特徴とする請求項1ないし3のうちいずれか1項に記載の試験自動化装置。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施の形態(本実施の形態)を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【0015】
本実施の形態は、複数の仮想サーバ、及び1つ又は複数の仮想ネットワーク、ネットワークや情報システムの実機、物理ネットワーク等からなる仮想・実機混在環境を前提とする。本明細書における「仮想環境」は、その意味として、実機を含まない仮想的な環境のみならず、仮想・実機混在環境を含むものである。
【0016】
(システムの全体構成)
図1に、本実施の形態におけるシステムの全体構成を示す。
図1に示すように、本実施の形態におけるシステムは、複数のサーバ10と、試験自動化装置100とを有する。複数のサーバ10は、各種のネットワークサービスをユーザに提供するサービスシステムを構成する。サーバ10はそれぞれ、1つ又は複数のアプリケーションが動作する仮想サーバ(仮想マシンと称してもよい)である。サーバ10はそれぞれ、1つの物理マシン(コンピュータ)上で構築されたものであってもよいし、複数のサーバ10が、1つの物理マシン上で構築されていてもよい。サーバ10間はネットワーク接続されている。当該ネットワークは、1つ又は複数の物理マシン(コンピュータ)上の仮想マシンにより構築された1つ又は複数の仮想ネットワークである。
【0017】
なお、各サーバ10は、そこで動作させるアプリケーション(ソフトウェア)に応じて、各種のAP(アプリケーション)サーバ(Web、DB、LB(ロードバランス)等)、ルータ、スイッチ等になり得る。
【0018】
サーバ10がネットワーク接続するにあたっては、IPアドレス、NIC(Network Interface Card)等が使用される。IPアドレス、NICについても、仮想環境においては、仮想的に割り当てられるものであってよい。
【0019】
試験自動化装置100は、サービスシステムにおける障害試験を自動化する装置である。試験自動化装置100は、後述するように、構成管理情報から、要素間接続情報を作成し、障害試験箇所を網羅的に抽出して、予め定めた方法で障害試験箇所に対する障害試験を実行することができる。
【0020】
(構成管理情報の概要)
ここで、本実施の形態における要素間接続情報のベースとなる構成管理情報の概要について説明する。
【0021】
本実施の形態では、各サーバへのアプリケーションのインストール/設定/起動等を自動構築スクリプトを使用して行っている。更に、本実施の形態では、仮想マシン(以降、VMと記する)の設定(構築)、及び、OSのインストール/設定についても、自動構築スクリプトを使用して行っている。OSのインストール/設定にはネットワークの設定も含まれている。
【0022】
自動構築スクリプトを使用した「VMの設定」、「OSのインストール/設定」、「APのインストール/設定」については、試験自動化装置100が実行してもよいし、試験自動化装置100以外の装置が実行してもよいが、試験自動化装置100は、各サーバについて、「VMの設定」、「OSのインストール/設定」、「APのインストール/設定」に用いた自動構築スクリプトを保持するか、各サーバ等から取得することが可能である。
【0023】
試験自動化装置100は、サーバ毎に、上記の各設定に使用した自動構築スクリプトから、ハードウェア(以下、HW)、OS、及びAPの構成管理情報(構成要素の集合)を取得し、これら構成管理情報を保持する。ここで、HWは、仮想マシン上でエミュレートされたHWであり、HWの構成管理情報としては、例えば、ディスクサイズ、メモリサイズ、CPU数、NIC数等がある。OSの構成管理情報としては、例えば、パーティション情報、ホスト名、OS名、OSバージョン、NICに割り当てられたIPアドレス等がある。
【0024】
自動構築スクリプトは、基本的に「コマンド:パラメータ」の羅列であり、試験自動化装置100は、自動構築スクリプトから当該パラメータを抽出することで、構成管理情報を取得できる。
【0025】
また、APの構成管理情報については、システム構築装置100は、例えば非特許文献1に記載されているように、APの依存関係を示すノードとリンクからなる有向グラフの情報として構成管理情報を取得できる。
【0026】
図2は、自動構築スクリプトと構成管理情報を説明するための図である。
図2において、14は、HWの自動構築スクリプトを示し、15は、OSの自動構築スクリプトを示し、16は、APの自動構築スクリプトを示す。ただし、
図2上では、自動構築スクリプトそのものではなく、自動構築スクリプトに含まれる情報が示されている。また、変換ロジック17、及び構成管理情報DB18は試験自動化装置100内に存在する機能である。具体的には、変換ロジック17は、後述する構成管理情報取得部110の中の機能であり、構成管理情報DB18は、データ格納部140の一部である。
【0027】
図2に示すように、HWの自動構築スクリプト14によりVMのHWが構築され、OSの自動構築スクリプト15によりOSが構築され、APの自動構築スクリプト16によりOS上で実行されるAP等が構築される。また、変換ロジック17により、各自動構築スクリプトから構成管理情報が作成され、構成管理情報DB18に格納される。
【0028】
また、変換ロジック17は、構成管理情報DB18に格納してある構成管理情報を使用して、当該構成管理情報の抽出元の自動構築スクリプトに相当する自動構築スクリプトを作成して、VM、OS、AP等の設定を行うことも可能である。これは、例えば、障害試験により落とした構成の復旧に利用することができる。
【0029】
(試験自動化装置100の構成例)
図3は、試験自動化装置100の機能構成の例を示す図である。
図3に示すように、試験自動化装置100は、構成管理情報取得部110、要素間接続情報作成部120、試験実行部130、データ格納部140を有する。
【0030】
構成管理情報取得部110は、自動構築スクリプトから構成管理情報を取得する。要素間接続情報作成部120は、構成管理情報に基づいて要素間接続情報を作成する。試験実行部130は、要素間接続情報に基づいて障害試験箇所を洗い出し(抽出し)、洗い出した障害試験箇所に対して、予め定められた方法で障害試験を実施する。データ格納部150は、自動構築スクリプト、構成管理情報、要素間接続情報、障害試験方法等を含む各種のデータを格納する。
【0031】
試験自動化装置100は、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、試験自動化装置100が有する機能は、当該コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、当該試験自動化装置100で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【0032】
図4は、試験自動化装置100をコンピュータで実現する場合におけるハードウェア構成例を示す図である。
図4に示す試験自動化装置100は、それぞれバスBで相互に接続されているドライブ装置200、補助記憶装置202、メモリ装置203、CPU204、インタフェース装置205、表示装置206、及び入力装置207等を有する。
【0033】
試験自動化装置100での処理を実現するプログラムは、例えば、CD−ROM又はメモリカード等の記録媒体201によって提供される。プログラムを記憶した記録媒体201がドライブ装置200にセットされると、プログラムが記録媒体201からドライブ装置200を介して補助記憶装置202にインストールされる。但し、プログラムのインストールは必ずしも記録媒体201より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置202は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0034】
メモリ装置203は、プログラムの起動指示があった場合に、補助記憶装置202からプログラムを読み出して格納する。CPU204(プロセッサ)は、メモリ装置203に格納されたプログラムに従って試験自動化装置100に係る機能を実現する。インタフェース装置205は、ネットワークに接続するためのインタフェースとして用いられる。表示装置206はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置207はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。
【0035】
(全体の処理の流れ)
図5は、試験自動化装置100が実行する処理の全体の流れを示すフローチャートである。まず、試験自動化装置100における構成管理情報取得部110が、自動構築スクリプトから構成管理情報を取得する(S101)。
【0036】
次に、要素間接続情報作成部120が、構成管理情報から要素間接続情報を作成する(S102)。続いて、試験実行部130が、要素間接続情報から障害試験箇所を洗い出し、洗い出した障害試験箇所に対して、予め定められた手順で障害試験を実行する(S103)。
【0037】
上記のS101〜S103の各ステップの処理の詳細は後述する。
【0038】
(要素間接続情報について)
ここで、本実施に形態において障害試験箇所の洗い出し、障害による影響の把握等に使用される要素間接続情報の概要を説明する。
【0039】
対象システムとして、
図6に示す構成のシステムを想定する。
図6に示すように、当該システムは、LBサーバ、APサーバ1〜3、ルータ、DBサーバ1、2が図示のとおりに接続された構成になっている。また、LBサーバにはAAAAで示されるアプリケーションが動作し、DBサーバ1、2にはCCCCで示されるアプリケーションが動作し、APサーバ1〜3にはBBBBで示されるアプリケーションが動作する。ここに図示するシステムの構成は、例えば、システムの設計書等により把握されるものである。
【0040】
図7に、
図6のシステムに対応する要素間接続情報をグラフィカルに表示した例を示す。当該要素間接続情報は、
図6に示すシステムの構築に使用された自動構築スクリプトから得られた構成管理情報から作成されたものである。例えば、図中のLBサーバに対応する構成要素は、AP(start_AAAA)、IPアドレス(10.3.130.21)、NIC(eth0)、NETWORK(DMZ)である。他のサーバについても同様である。
【0041】
AP(start_AAAA)、IPアドレス(10.3.130.21)、NIC(eth0)等の情報は、構成要素の集合である構成管理情報に含まれている。具体的には、あるサーバに関して、AP、IP、NIC、及びネットワーク名(例:DMZ)が紐付けられた情報として構成管理情報に含まれているため、
図7に示すように、サーバ毎に、AP、IP、NIC、NETWORKを接続した情報を作成することができる。
【0042】
また、AP間については、構成管理情報において依存関係が記述されている。この依存関係は、
図7では、太線で示されている。
図7の例では、LBサーバのCCCCが起動するにはAPサーバ1〜3のBBBBが起動していなければならず、APサーバ1〜3のBBBBが起動するには、DBサーバ1、2のCCCCが起動していなければならないことが依存関係として示されている。なお、クラスタ(ap_cluster等)内部は依存関係はなく、並列の関係にある。
【0043】
そして、上記依存関係と、各サーバにおける構成要素とに基づき、後述する手法を用いることで、
図7に示す要素間接続情報を得ることができる。
【0044】
この要素間接続情報を用いることで、障害試験を行うべき箇所を網羅的に洗い出せるとともに、当該箇所において障害を起こさせたときに、どこが影響を受けるのか(あるいはどこが影響を受けないのか)を容易に把握することができる。
【0045】
例えば、
図8に示すように、ルータにおけるNETWORK(DMZ)に接続する側のNICに障害を発生させることを想定する。なお、障害を発生させるとは、例えば、NICを削除する等である。この場合、DBサーバ1、2のCCCCに依存しているAPサーバ1〜3のBBBB、及びLBサーバのAAAAは影響を受けることがわかる。例えば、実際のシステムで、当該NICに障害を発生させる試験を行った結果、上記の予測のとおりにならない場合、例えば、システムが誤って構築されたことなどが考えられ、それに対する対処を実施できる。
【0046】
また、ルータのNIC(eth0)が構成管理情報と不一致となっている状態となる事が予測され、その他の構成管理情報には何も影響が及ぼされないことが予測できる。
【0047】
障害試験箇所の洗い出しについては、例えば、試験実行部130が、
図7に示した要素間接続情報を構成する全構成要素を障害試験箇所として抽出することで網羅的な洗い出しを行うことができるとともに、各障害試験箇所に対する影響を容易に把握できる。
【0048】
このような洗い出しを行うことで、ノード(ルータやホスト等)単体、ノード間の障害試験箇所、多レイヤに渡った網羅的な障害試験箇所(NIC,ケーブル、リンク、リンクダウンを伴わないL3以上の経路障害等)等のあらゆる障害試験箇所を抽出できる。
【0049】
図9は、要素間接続情報の他の例を示す。
図9は、AP1はAP2に依存し、AP2は、AP3、4に依存する例を示す。AP3、4は並列関係にある。この場合、
図9の×で示すポイントで障害を発生させたとしても、×の障害で影響を受けるのはAP4であり、AP4と並列関係にあるAP3は影響を受けない。よって、AP1−>AP2−>AP3の依存関係は崩れないので、サービスは継続されると予測できる。
【0050】
なお、
図7等で示した要素間接続情報は一例に過ぎない。自動構築スクリプトから得られる情報であれば、どのような構成要素でも要素間接続情報に含めることができる。例えば、
図7では、アプリケーションの構成要素として、start_識別名のみを示しているが、install_識別名、setting_識別名が構成要素として含まれてもよい。また、OS、ミドルウェア等も構成要素として含まれてもよい。
【0051】
以下、試験自動化装置100の各機能部による処理内容をより具体的に説明する。
【0052】
(構成管理情報取得部110による構成管理情報取得処理)
まず、
図10〜16を参照して、構成管理情報取得部110による構成管理情報取得処理の例について説明する。
【0053】
図10に示すように、構成管理情報取得部110は、HWの自動構築スクリプト21、及びOSの自動構築スクリプト22から、24に示す構成管理情報を取得し、データ格納部140に格納する。一例として、構成管理情報取得部110は、HW/OSの自動構築スクリプト21、22において下線で示したパラメータを構成管理情報24として抽出する。取得されたHW/OSの構成管理情報については、例えば
図11に示すように表示することも可能である。
図11に示す例では、サーバ1とサーバ2が同じネットワークに属し、サーバ3とサーバ4が同じネットワークに属することが示されている。
【0054】
また、構成管理情報取得部110は、
図10に示すように、APの自動構築スクリプト23から、構成管理情報25を取得し、データ格納部140に格納する。本実施の形態では、APの自動構築スクリプト23から取得される構成管理情報25は、APの依存関係を示す有向グラフの情報として生成されるものである。この依存関係と、各サーバの構成要素の情報に基づき、試験自動化装置100の要素間接続情報作成部110は、要素間接続情報を作成する。
【0055】
図12に、構成管理情報取得部110への入力となるAPの自動構築スクリプトの一例を示す。本実施の形態で使用する自動構築スクリプトは、
図12に示すように、再利用を意識して複数のブロックに分けて作成される。また、ブロックの中で使用する値(パラメータ)は変数化され、変数の値はブロックの外にまとめて記述される。また、各ブロックには、他のブロックとの依存関係を設定することもできる。
【0056】
より具体的に、例えばAPサーバ(例:Webサーバ)を構築するためのアプリケーション(ソフトウェア)に関しては、自動構築スクリプトは、通常、ソフトウェアのインストールを行う「install_[識別名]」、インストールしたソフトウェアの設定を行う「setting_[識別名]」、設定したソフトウェアをスタートさせる「start_[識別名]」の3のブロックを有する。
図12は、識別名=AAAAというソフトウェアの例について、当該3つのブロックを有することが示されている。また、
図12の例では、各ブロックはroleと呼ばれる。
【0057】
なお、
図12は、install/setting/startの3つ全てが揃っている例を示しているが、OSのネットワーク設定のようにsetting/start(reset/stop)しかないもの、OSのユーザ設定のようにsetting(reset)しかないものなどもある。
【0058】
図13は、
図12に示すようなブロックを適用して、ソフトウェアAAAAのインストールや設定等を行うことでWebサーバ構築を行う場合のイメージを示す図である。
図13に示すように、ブロックの実行手順を記載した工事手順書(これも、構成管理情報取得部110に入力される自動構築スクリプトに含まれる)が準備され、当該工事手順書に従って、各ブロックがロードされ、実行(install/setting/start)される。工事手順書には、対象のサーバ(
図13の例では"Web")と当該サーバに対して実行するブロックが、実行される順番で記述されている。このような順番により、ブロック間、サーバ間の依存関係を把握できる。また、各ブロックに記述されている依存関係や、パラメータ等によっても依存関係を把握できる。
【0059】
図14に示すように、上記のような自動構築スクリプトが構成管理情報取得部110に入力され、構成管理情報取得部110は、ブロック間やAP間の依存関係を示す有向グラフデータを作成する。
【0060】
依存関係について説明すると、例えば、[install_AAAA]と[setting_AAAA]に関して、ソフトウェアAAAAはインストールされないと設定できないから、[setting_AAAA]は[install_AAAA]に依存する、という依存関係がある。この場合、本実施の形態では、依存されるほうに矢印が向くように、[install_AAAA]←[setting_AAAA]と有向グラフとして記述する。同様に、ソフトウェアAAAAは設定されないと正常に動作しないためスタートできないから、[start_AAAA]は[setting_AAAA]に依存する、つまり、[setting_AAAA]←[start_AAAA]と記述する。
【0061】
すなわち、「あるブロックの実行のために前もって実行しておくべきブロック」の2つのブロック間に「依存関係」があるとする。上記の3つのブロックの例では、有向グラフとして、[install_AAAA]←[setting_AAAA]←[start_AAAA]と記述する。構成管理情報取得部110は、このような有向グラフに相当する有向グラフデータを作成する。
【0062】
依存関係は、単一のソフトウェアモジュール(アプリケーションと称しても良い)内のみでなく、前述したように、ソフトウェアモジュール間にも存在する。例えば、WebサーバソフトウェアモジュールがDBサーバソフトウェアモジュールを使用し、WebサーバソフトウェアモジュールはDBサーバソフトウェアモジュールがスタートしていないとサービスの提供ができないとする。この場合には、以下の有向グラフで示す依存関係が存在する。
【0063】
[install_database]←[setting_database]←[start_database]
↑
[install_webserver]←[setting_webserver]←[start_webserver]
自動構築スクリプトの入力がされた構成管理情報取得部110は、
図15のフローチャートの手順で有向グラフデータを作成する。
【0064】
S201)まず、構成管理情報取得部110は、一連のブロックを適用する対象となるサーバ情報を取得する。例えば、構成管理情報取得部110は、工事手順書に記載されている、一連のブロックの適用対象となるホストの情報を当該サーバ情報として取得することができる。
【0065】
S202)次に、構成管理情報取得部110は、対象のサーバ毎に、自動構築スクリプトにおける複数ブロックをinstall/setting/startの3つのグループに分けノード化する。なお、前述したように、スクリプトの適用対象によっては、installのみ、settingのみ等の場合もある。
【0066】
S202では、例えば、ソフトウェアAに関するスクリプトのブロックとしてinstall/setting/startの3つがあり、ネットワーク設定に関するスクリプトのブロックとしてsettingがある場合、構成管理情報取得部110は、ソフトウェアAについてのinstallのノード、settingのノード、startのノードを作成し、ネットワーク設定についてのsettingのノードを作成する。
【0067】
S203)次に、構成管理情報取得部110は、各ブロックに関連する変数(パラメータ)をnetwork/filepath/id/device等のグループに分けて関連付ける。すなわち、ファイルパス、ネットワーク、ユーザ、log、conf、serviceなど、システムを構成する内容によってグルーピングし、一致、不一致、関係性(例:包含関係)を抽出し、その情報をデータ格納部140に格納する。一例として、ソフトウェアAのsettingにおける設定アドレスがアドレス1であり、ソフトウェアBのsettingにおける設定アドレスがアドレス1である場合、両者は一致の関係があるとして、そのことを示す情報が格納される。
【0068】
S204)構成管理情報取得部110は、依存関係のあるノード間について、ノード間を結びつけるリンク情報を作成する。依存関係は、例えば、工事手順書におけるブロックの実行手順から判断することができる。また、ブロック内に依存関係の記述がある場合には、その記述から判断することもできる。
【0069】
S205)構成管理情報取得部110は、上記の処理により得られたノード情報及びリンク情報、パラメータの関連情報等をサーバ情報に紐付けてデータ格納部140に格納する。
【0070】
図14の左側には、データ格納部140に格納されるデータのイメージが示されている。当該イメージは、右側に示す入力情報に対応するものである。
図14の例では、install_AAAA、setting_AAAA、start_AAAAのノード情報と、これらの間に「install_AAAA←setting_AAAA←start_AAAA」で示される依存関係が存在することを示すリンク情報がデータ格納部140に格納される。つまり、当該依存関係を示す有向グラフが格納される。また、図示するように、各ノードにパラメータが関連付けられている。
【0071】
なお、上記の例では、1つのAPに関する有向グラフを示している。
図16に他の例として、複数のAP(アプリケーション)の有向グラフを結び付けて依存関係が表される例を示す。
図16は、AP1(例:Web)とAP2(例:LB(ロードバランシング))との間に依存関係がある場合の例を示している。
【0072】
なお、構成管理情報取得部110が、構成管理情報に基づき、サーバの復旧のための構築を行う際には、このようなAP間の依存関係に基づいて、特定のAPを目的にインストールする場合において、当該特定のAPが依存するAP、及び当該特定のAPに依存されるAPもともにインストールし、特定のAPを正しく動作させることができる。
【0073】
(要素間接続情報作成部120による要素間接続情報作成処理)
次に、要素間接続情報作成部120による要素間接続情報作成処理について説明する。要素間接続情報作成に使用される情報は、構成管理情報取得部110により取得された構成管理情報である。構成管理情報は、前述したAP間の依存関係を示す有向グラフの情報と、各サーバにおける構成要素の集合がある。各サーバにおける構成要素の集合として、自動構築スクリプトに含まれる情報であれば、いかなる情報でも取得可能であるが、一例として以下に示すような情報が取得される。以下は、例として、サーバ1とサーバ2がある場合を示している。
【0074】
(1)サーバ1の構成要素
・NIC{NIC名:eth0、IPアドレス:10.160.128.104/26、ネットワーク名:MZ}
・AP{start_AAAA}
・NIC{NIC名:eth1、IPアドレス:10.160.128.105/26、ネットワーク名:MZ}
・AP{start_BBBB}
(2)サーバ2の構成要素
・NIC{NIC名:eth0、IPアドレス:10.166.128.199/26、ネットワーク名:DMZ}
・AP{start_CCCC}
上記の例において、例えばサーバ1に関し、サーバ1には、AAAAに紐付けられたNICとしてeth0があり、そのIPアドレスが10.160.128.104/26であり、接続されるネットワークがMZであることが示され、また、BBBBに紐付けられたNICとしてeth1があり、そのIPアドレスが10.160.128.105/26であり、接続されるネットワークがMZであることが示されている。
【0075】
また、サーバ2には、CCCCに紐付けられたNICとしてeth0があり、そのIPアドレスが10.160.128.199/26であり、接続されるネットワークがDMZであることが示されている。
【0076】
上記は、実際に取得される構成要素の情報から抜粋して示したものであるが、実際には、例えばjsonファイルの形式で情報が得られる。また、自動構築スクリプトで構築した全てのサーバについて構成要素の情報が得られる。
【0077】
要素間接続情報作成部120は、上述したAP間の依存関係の情報と、各サーバの構成要素の情報とから、
図7に示したような要素間接続情報を作成する。なお、要素間接続情報作成部120は、作成した要素間接続情報を
図7のようにグラフィカルに表示してもよいし、表示はせずにデータとして保持しておいてもよい。
【0078】
図17を参照して要素間接続情報を作成する方法の例を説明する。ここでは、依存関係として、AP1がAP2とAP3に依存しているものとする。
図17ではその関係が点線で示されている。
【0079】
最初、要素間接続情報作成部120は、
図17に示す依存関係(点線の関係)しか把握していない。ここではAP1を起点として、AP2、AP3の順で処理を実行するものとする。
【0080】
まず、要素間接続情報作成部120は、AP1が依存しているAP2が、AP1と同じサーバ1内にあるか否かを構成要素情報を検索することにより判断する。ここでは、サーバ1内にAP2は存在しない。次に、要素間接続情報作成部120は、AP1が存在するサーバ1が接続しているネットワークと同じネットワークに接続された各サーバを探索し、当該サーバにAP2が存在するかどうかを構成要素情報を検索することにより判断する。2つのサーバが同じネットワークに所属しているかどうかは、NICが接続するネットワーク名で判断することもできるし、NICのIPアドレスのネットワーク部で判断することもできる。
【0081】
ここでは、要素間接続情報作成部120は、サーバ1が接続するNETWORK1に接続しているサーバ2においてAP2を検出する。これにより、要素間接続情報作成部120は、構成要素情報に基づき、「AP1−IP1−NIC1−NETWORK1−NIC2−IP2−AP2」の要素間接続情報を作成する。
【0082】
なお、要素間接続情報作成部120は、要素間接続情報として、「AP1−IP1−NIC1−NETWORK1−NIC2−IP2−AP2」のように、構成要素情報の中の要素を抽出し、これらを接続した情報を作成することとしてもよいし、構成要素情報の中の要素へのポインタを接続した情報を作成することしてもよいし、他の形式の情報を作成することしてもよい。
【0083】
次に、要素間接続情報作成部120は、AP1が依存しているAP3が、AP1と同じサーバ1内にあるか否かを構成要素情報を検索することにより判断する。ここでは、サーバ1内にAP3は存在しない。次に、要素間接続情報作成部120は、AP1が存在するサーバ1が接続しているネットワークと同じネットワークに接続された各サーバにAP3が存在するかどうかを構成要素情報を検索することにより判断する。ここでは、サーバ1が接続しているネットワークと同じネットワークに接続されたサーバとしてサーバ2のみが存在するが、そこにはAP3は存在しない。
【0084】
次に、要素間接続情報作成部120は、サーバ1が接続しているネットワーク(NETWORK1)におけるデフォルトゲートウェイとなっている、NETWORK1に接続されているルータに接続されているネットワーク上のサーバにAP3があるかどうかを構成要素情報を検索することにより判断する。この動作は、パケットをデフォルトルートに転送するネットワークルーチングの動作に類似している。なお、ルータの構成要素の情報は、サーバの情報と同様に構成要素情報として構成管理情報に含まれる。
【0085】
ここでは、要素間接続情報作成部120は、サーバ3においてAP3が存在することを検出する。これにより、要素間接続情報作成部120は、構成要素情報に基づき、「AP1−IP1−NIC1−NETWORK1−NIC4−IP4−ルータ−IP5−NIC5−NETWORK2−NIC3−IP3−AP3」の要素間接続情報を作成する。
【0086】
以上の処理により作成された要素間接続情報をグラフィカルに表示することで
図17に示す表示情報が得られる。なお、
図17に示す太線は、依存関係に基づく要素間接続を示すものである。この太線を表示することで、AP間の依存関係を明確に把握でき、障害試験での影響を目視で把握し易くなる。
【0087】
要素間接続情報作成部120により作成された要素間接続情報はデータ格納部140に格納される。
【0088】
(試験実行部130による試験実行処理)
次に、試験実行部130による試験実行処理を説明する。本実施の形態では、障害試験の障害試験箇所となり得る構成要素に対応した障害発生手順(障害発生方法)を予め定めておき、定めた障害発生手順の情報がデータ格納部140に格納されている。ある障害試験箇所に対して障害を発生させる手順は複数種類存在する。しかし、障害試験箇所に対して障害を発生させる手順が定まらない場合(エンジニア判断に委ねる場合)、実際の障害発生時において、過去の試験時の障害発生箇所での手順を確定できず、試験結果があまり参考にならない可能性がある。そこで、本実施の形態では、障害試験箇所となり得る構成要素に対応した障害発生手順を予め定めておくこととしている。
【0089】
図18に構成要素毎の障害発生手順の例を示す。
図18に示すとおり、構成要素start_[name]については、nameで識別されるAPをstopさせる。構成要素install_[name]については、nameで識別されるAPをuninstallする。構成要素setting_[name]については、nameで識別されるAPについての設定を初期化する。これら3つの手順は自動的(automatically)に生成することができる。
【0090】
node(サーバ、スイッチ等)、net_dev_self(NIC)、net_ip_self(IPアドレス)に関しては、いずれも該当の仮想環境に応じたコマンドで障害を発生させる。また、name_network(ネットワーク)については、当該ネットワーク上のスイッチにおいてフィルタリング(通信遮断)を発生させる。これら3つの手順については、テンプレートから生成することができる。
【0091】
一例として、要素間接続情報作成部120により、
図17に示す要素間接続情報が得られた場合において、試験実行部130は、
図17に示す全要素(AP1、IP1、NIC1、NETWORK1、NIC2、IP2、AP2、NIC4、IP4、ルータ、IP5、NIC5、NETWORK2、NIC3、IP3、AP3)を抽出(洗い出す)する。そして、各要素に対し、
図18の手順に従って、対象システムに対する障害試験を行う。
【0092】
障害試験を行うために、例えば、サーバを落とすような場合があるが、その場合、元の状態に戻す必要がある。そのような場合において、構成管理情報を保持する本実施の形態では、容易に構築を実行できる。この構築処理は、試験自動化装置100が実施してもよいし、試験自動化装置100から構成管理情報を取得した他の装置が実行してもよい。
【0093】
(実施の形態の効果について)
本実施の形態に係る技術により、複数の仮想サーバ、及び仮想ネットワークで構成されるシステムに対する障害試験の実施の際に、障害試験箇所を網羅的に洗い出すことができるとともに、障害試験による影響を容易に把握することが可能となる。より詳細には、例えば、下記の効果が得られる。
【0094】
(1)障害発生による影響を事前に自動的に確認できる
依存性を含んだ構成管理情報を用いることで、障害による影響をシステムの系として確認することができる。すなわち、障害が発生したポイントによってシステムの各構成管理情報の状態がどう変化するかを確認できる。これにより、実際のシステムに障害が発生した場合に期待される状態の変化を事前に洗い出すことができ、この期待される結果と、実際の障害試験の結果とを比較することで、想定している障害耐久性を実際のシステムが備えているか、想定外の挙動を取らないかを確認することができる。よって、実際のシステムにおいて想定外の挙動によってサービス断を引き起こす等の状況を避けることができる。
【0095】
(2)障害試験箇所の網羅性が担保できる
構成管理情報はHW/NW/OS/APの情報を網羅しており、これら全てを障害試験箇所として指定することで網羅性の担保が可能である。
【0096】
(3)障害を発生させる手法を定義できる
従来は「ネットワーク障害」というような障害の概要しか記述できず、記述による障害試験箇所が曖昧であった。一方、本実施の形態の技術であれば、例えば、
図8に示したようなルータにおけるNIC(eth0)のように障害試験箇所を明確に指定することができる。そして構成要素の種別に応じた障害発生コマンドを定義することで、障害発生手法を明確に定義できる。
【0097】
(4)影響範囲が確定されており、また、試験が自動的に実行され自動的に復旧される
従来はまるごと仮想環境のSnapshotを取って、試験の都度、元に戻すなどの手法がとられているが、そもそも障害試験による影響範囲が正しく把握できていない状況であるため、正しく全ての環境を戻すには全てのサーバのSnapshotを取らねばならない。一方、本実施の形態の技術は、影響範囲が明確であり、かつ、依存関係を用いてシステムの復旧が可能であるため、時間も短時間ですむ。
【0098】
(5)仮想環境のメリットを最大限に活用できる
本実施の形態では、仮想環境上にシステムを完全自動構築するスクリプトを用いた構成管理情報を使用する。このため、障害試験箇所の網羅だけで無く、この仮想環境上に構築するシステムの構築スクリプトから、網羅的、自動的に手順と結果を作成できる。
【0099】
すなわち、本実施の形態に係る技術により、曖昧なまま行われてきた障害試験を、明確な「期待する試験結果」を備えて実行でき、試験稼働を削減できる。また、実際の障害発生時に、過去に発生させた障害新券の箇所と、その際の障害発生手順を高い再現性で短時間で確認できる。
【0100】
(実施の形態のまとめ)
以上、説明したように、本実施の形態により、複数の仮想サーバ及び仮想ネットワークで構成されるシステムの障害試験箇所を洗い出す試験自動化装置であって、前記システムの構築に使用される自動構築スクリプトから、前記システムの構成要素の集合を抽出するとともに、所定構成要素をノードとして抽出し、ノード間の依存関係に基づいて、ノード間のリンクを作成して有向グラフを作成する構成管理情報取得手段と、前記有向グラフにより示される所定構成要素間の依存関係に基づいて、前記構成要素の集合から、構成要素間の接続関係を示す要素間接続情報を作成する要素間接続情報作成手段と、前記要素間接続情報に基づいて障害試験箇所を洗い出し、当該障害試験箇所に対する障害試験を実行する試験実行手段とを備えることを特徴とする試験自動化装置が提供される。
【0101】
前記試験実行手段は、例えば、障害試験箇所に対応する構成要素毎に予め定められた方法で前記障害試験を実行する。
【0102】
前記要素間接続情報作成手段は、前記構成要素の集合の中で、あるサーバに存在する所定構成要素が依存している別の所定構成要素を、同一サーバ内、同一ネットワーク内、別ネットワーク内の順番で探索することにより前記要素間接続情報を作成することとしてもよい。
【0103】
前記要素間接続情報は、前記所定構成要素としてのアプリケーション、当該アプリケーションに関連するネットワークインタフェース、IPアドレス、及びネットワークを含むこととしてもよい。
【0104】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。