[実施の形態1]
本技術の実施の形態に係るシステムの構成を図1に示す。本システムには、情報処理装置100と、運用管理システム200と、1又は複数のユーザ端末300とを含む。これらの装置は、ネットワークにて接続されている。
運用管理システム200は、障害発生が想定されているシステムの運用管理のために既に構築されているシステムであり、障害発生が想定されているシステムについての構成要素のデータを格納するシステム構成データ格納部210を含む。
システム構成データ格納部210は、システム内の構成要素のデータと、構成要素間の接続関係のデータと、構成要素間の呼出関係のデータとを格納している。例えば、図2に示すように、スイッチSwitch001と、サーバServer001とが接続されている場合には、図3乃至図5のようなデータが、システム構成データ格納部210に格納される。図3は、接続のソース(Source)となるスイッチSwitch001のデータを表しており、当該スイッチSwitch001のタイプと、各種属性及び状態などが登録されるようになっている。また、図4は、接続のターゲット(Target)となるサーバServer001のデータを表しており、サーバServer001のタイプと、各種属性及び状態などが登録されるようになっている。そして、図5は、スイッチSwitch001とサーバServer001との間の接続関係を表しており、関係のタイプ(Connection)と、ソースとなる構成要素と、ターゲットとなる構成要素と、接続状態などが登録されるようになっている。また、図6に示すように、サーバServer001からサーバServer002を呼び出す場合には、図4と図7及び図8に示すようなデータが、システム構成データ格納部210に格納される。図7は、呼出先のサーバServer002のデータを表しており、図4と同様に、サーバServer002のタイプ、各種属性及び状態などが登録されるようになっている。図8は、サーバServer001からサーバServer002への呼出関係を表しており、関係のタイプと(Call)、ソースとなる構成要素、ターゲットとなる構成要素などが登録されるようになっている。
なお、図3乃至図8の例はXML(eXtensible Markup Language)で記述する例を示したが、他の方法で構成要素及びその関係を記述するようにしても良い。
情報処理装置100は、集約ポイント特定部101と、集約ポイント格納部102と、故障箇所候補抽出部103と、故障箇所候補リスト格納部104と、故障パターン生成部105と、故障タイプリスト格納部106と、除外リスト格納部107と、故障パターンリスト格納部108と、シミュレーション実行部109と、状態遷移モデル格納部110と、シミュレーション結果格納部111と、出力処理部112とを有する。
集約ポイント特定部101は、システム構成データ格納部210に格納されているデータを用いて、障害発生が想定されているシステムにおける集約ポイントを特定し、集約ポイント格納部102に格納する。故障箇所候補抽出部103は、集約ポイント格納部102に格納されているデータに基づき、システム構成データ格納部210から故障箇所候補を抽出し、抽出結果を故障箇所候補リスト格納部104に格納する。故障パターン生成部105は、故障箇所候補リスト格納部104及び故障タイプリスト格納部106に格納されているデータを用いて故障パターンを生成して、故障パターンリスト格納部108に格納する。なお、この際、故障パターン生成部105は、除外リスト格納部107に格納されているデータに基づき、除外すべき故障パターンを、故障パターンリスト格納部108から削除する。
シミュレーション実行部109は、故障パターンリスト格納部108に格納されている故障パターン毎に、状態遷移モデル格納部110に格納されている状態遷移モデルに従って、当該故障パターンの故障が発生したとして、システム構成データ格納部210に格納されている構成要素の状態遷移についてのシミュレーションを実施し、シミュレーション結果をシミュレーション結果格納部111に格納する。出力処理部112は、例えばユーザ端末300からの要求に応じて、シミュレーション結果格納部111に格納されているデータから出力データを生成してユーザ端末300に対して出力する。
ユーザ端末300は、運用管理者が操作する例えばパーソナルコンピュータであり、情報処理装置100の集約ポイント特定部101などに処理開始を指示したり、出力処理部112に対して処理結果の出力を要求して、出力処理部112から処理結果を受信して、表示装置に表示する。
次に、図9乃至図38を用いて情報処理装置100の処理内容について説明する。
まず、集約ポイント特定部101は、集約ポイント特定処理を実施する(図9:ステップS1)。この集約ポイント特定処理については、図10乃至図16を用いて説明する。
本実施の形態では、例えば図10に示すようなシステムを故障発生が想定されるシステムの一例として説明する。このシステムは、サービス用の2つのラック(ラック1及び2)と、管理用の1つのラックとを含む。これらのラックは、スイッチci02で接続されている。ラック1では、スイッチci02に接続されているスイッチci01に、物理マシン(pm)ci05及びci06が接続されており、物理マシンci05には、配下に仮想マシン(vm)ci11乃至ci15が設けられ、物理マシンci06には、配下に仮想マシンci16乃至ci20が設けられる。ラック2では、スイッチci02に接続されているスイッチci03に、物理マシンci07及びci08が接続されている。物理マシンci07及びci08の配下には仮想マシンは存在していない。管理用のラックでは、スイッチci02に接続されているスイッチci04に、物理マシンci09が接続されており、この物理マシンci09には、マネージャ(Mgr)である構成要素ci10が設けられている。このような各構成要素及びそれらの構成要素間の接続関係が、システム構成データ格納部210に規定されている。
このシステムにおいては、仮想マシンci11乃至ci15がマスタで、仮想マシンci16乃至ci20はそれらのコピーである。マスタである仮想マシンci11乃至ci15は、それぞれ自身のコピーの生存を例えば定期的に確認する。これは、仮想マシンci11から仮想マシンci16への呼出関係(Call)としてシステム構成データ格納部210に規定されている。仮想マシンci12乃至ci15についても同様である。また、コピーの生存が不明になると、マスタの仮想マシンci11乃至ci15は、新たなコピーを生成するため、複製生成要求を、マネージャMgrに要求(Call)する。これが、マスタの仮想マシンci11乃至ci15から、マネージャMgrへの呼出関係として規定されている。
まず、集約ポイント特定部101は、システム構成データ格納部210において未処理の構成要素(CI:Component Item)を1つ特定する(図11:ステップS21)。以下で説明するように、仮想マシンに対応する構成要素から選択すると効率がよい。集約ポイント特定部101は、特定された構成要素の配下の要素数を算出し、例えばメインメモリなどの記憶装置に格納する(ステップS23)。
本実施の形態では、特定された構成要素の要素タイプを特定し、当該要素タイプに合わせて配下の要素数を算出する。構成要素の要素タイプは、ルータ、スイッチ(コア)、スイッチ(エッジ)、物理マシン、仮想マシンなどがある。一般的には、システムの物理構成は図12のようになっており、最上位のルータ、ルータの配下に配置され且つ大部分が配下のスイッチに接続されているスイッチ(コア)、コアスイッチ以外のスイッチ(エッジ)、スイッチに接続される物理マシン(PM)、物理マシン上に起動される仮想マシン(VM)が含まれる。ルータ、スイッチ、物理マシン及び仮想マシンについては、要素タイプが明に規定されているのでそれにより特定され、エッジスイッチとコアスイッチは、上で述べたように接続先の構成要素の要素タイプによって区別する。
そして、コアスイッチの場合には、直下のエッジスイッチの数と直下のエッジスイッチの配下の要素数との総和により、コアスイッチの配下の要素数を算出する。図13に示すように、図10で示したシステムの中で、スイッチci02は、接続先がスイッチのみであるからコアスイッチとなる。このようなスイッチci02の場合には、配下の要素数は、直下のスイッチci01、ci03及びci04の数「3」と、それらの配下の要素数の和「16」(=12+2+2)との総和である「19」と算出される。
また、エッジスイッチの場合には、直下の物理マシンの数とそれらの配下の要素数との総和により、エッジスイッチの配下の要素数を算出する。スイッチci01は、2つの物理マシンci05及びci06に接続されており、エッジスイッチと判断される。そして、配下の要素数は、物理マシンci05及びci06の数「2」と、これらの物理マシンci05及びci06の配下の要素数の和「10」(=5+5)との総和である「12」と算出される。スイッチci03は、2つの物理マシンci07及びci08に接続されており、エッジスイッチと判断される。そして、配下の要素数は、物理マシンci07及びci08の数「2」と、これらの物理マシンci07及びci08の配下の要素数の和「0」との総和である「2」と算出される。スイッチci04は、物理マシンci09に接続されており、エッジスイッチと判断される。そして、配下の要素数は、物理マシンci09の数「1」と、この物理マシンci09の配下の要素数の和「1」との総和である「2」と算出される。
さらに、物理マシンの場合には、直下の仮想マシンの数が、物理マシンの配下の要素数となる。物理マシンci05及びci06の場合には、直下の仮想マシンの数は5であるから、配下の要素数は「5」となる。物理マシンci08及びci09の場合、直下の仮想マシンの数は0であるから、配下の要素数は「0」となる。物理マシンci09の場合、直下の仮想マシンの数は1であるから、配下の要素数は「1」となる。仮想マシンの場合には、配下の要素数は0と特定される。
また、集約ポイント特定部101は、特定された構成要素の被呼出数を算出し、例えばメインメモリなどの記憶装置に格納する(ステップS25)。被呼出数については、自身がターゲットとなっている呼出関係の数と、当該呼出関係のソースについての被呼出数との総和として算出される。すなわち、呼出関係のソースを遡って行き、辿ることができなくなるまでの呼出関係の総和が、被呼出数である。図10の例では、マネージャMgrの場合、仮想マシンci11乃至ci15をソースとする呼出関係が5つ登録されているので、被呼出数は5となる。一方、コピーの仮想マシンci16乃至ci20の場合には、それぞれ自身のマスタから呼び出されるので、マスタの仮想マシンをソースとする呼出関係がそれぞれ1つ登録されている。従って、これらの仮想マシンci16乃至ci20については、被呼出数は1となる。
一方、別の例として、図15に示すようなシステムにおいて、ロードバランサ(LB)ci17と、ウェブサーバ(Web)ci18乃至ci20と、アプリケーションサーバについてのロードバランサ(AppLB)ci21と、アプリケーションサーバ(App)ci22及びci23と、ゲートウェイ(GW)ci24と、DBサーバ(DB)ci25とが設けられているものとする。この場合には、図15に示すように、ロードバランサci17から呼出関係が、ウェブサーバ、アプリケーションサーバについてのロードバランサ、アプリケーションサーバ、ゲートウェイ、そしてDBサーバへと連鎖的に繋がれている。このような場合には、各ウェブサーバの被呼出数は「1」であり、アプリケーションサーバについてのロードバランサの被呼出数は「6」である。また、各アプリケーションサーバの被呼出数は「7」であり、ゲートウェイの被呼出数は「16」となる。結果として、DBサーバの被呼出数は「17」となる。
そうすると、例えば図14に示すような算出結果が得られる。図14の例では、各構成要素(CI)について、配下の要素数と、被呼出数とが登録されるようになっている。このように、システム内においてこの構成要素が動作不能となった場合において影響を受ける範囲に関する指標値が登録される。
そして、集約ポイント特定部101は、特定された構成要素が、集約ポイント(集約Pとも記す)の条件を満たしているか判断する(ステップS27)。例えば、配下の要素数であれば「16」以上となっており、被呼出数であれば「6」以上であるという条件を満たしているか判断する。なお、配下の要素数と被呼出数とを重み付け加算した結果を評価値として算出し、当該評価値が閾値以上であるか否かで、集約ポイントであるか否かを判断するようにしても良い。図14の例では、太枠で示した構成要素ci02が集約ポイントの条件を満たしていると判断される。
集約ポイントの条件を満たしていない場合には処理はステップS31に移行する。一方、集約ポイントの条件を満たしている場合には、集約ポイント特定部101は、特定された構成要素を集約ポイントリストに追加し、集約ポイント格納部102に格納する(ステップS29)。集約ポイント格納部102には、例えば図16に示すようなデータが格納される。図16のように、集約ポイントとして特定された構成要素の識別子が登録されるリストが格納されるようになっている。なお、構造的な集約ポイントと挙動の集約ポイントとで異なる基準を用いる場合には、以下で述べる故障箇所候補を抽出する際にも異なる基準で故障箇所候補を抽出する場合もある。このため、集約ポイント格納部102に、構成要素の識別子に加えて構造又は挙動の別を設定しておく場合もある。
集約ポイントは、上で述べたように、システムにおいて多数の他の構成要素が関連している構成要素である。そして、上で述べたように配下の要素数が多いことで特定される構造的な集約ポイントと、多くの構成要素により直接及び間接的に呼び出されることを表す被呼出数にて特定される挙動の集約ポイントとが存在する。このような集約ポイントに着目するのは、集約ポイントが故障の影響を受けると、短時間で影響範囲が拡大する可能性が大きいことが知られており、集約ポイントに影響を与える故障を見つけることが対策を行う上で重要である。特に、集約ポイントに早期に影響を与える故障ほど緊急性の高い故障であり、このような緊急性の高い故障に対処できれば十分に効果的である。従って、本実施の形態では、集約ポイントに早期に影響を与えるような故障を特定するものとする。
処理はステップS31に移行して、集約ポイント特定部101は、システム構成データ格納部210において、未処理の構成要素が存在しているか判断する(ステップS31)。未処理の構成要素が存在している場合にはステップS21に戻る。一方、未処理の構成要素が存在していない場合には、呼出元の処理に戻る。
このような処理を実施すれば、集約ポイント格納部102に、集約ポイントのリストが格納されるようになる。
図9の処理の説明に戻って、次に、故障箇所候補抽出部103は、故障箇所候補抽出処理を実施する(ステップS3)。この故障箇所候補抽出処理については、図17乃至図20を用いて説明する。故障箇所候補抽出部103は、集約ポイント格納部102において、未処理の集約ポイントを1つ特定する(図17:ステップS41)。そして、故障箇所候補抽出部103は、システム構成データ格納部210において、特定された集約ポイントからnホップ以内にある構成要素を検索する(ステップS43)。例えば構造的な集約ポイントの場合には、接続関係で繋がれるnホップ以内(例えば2ホップ以内)の構成要素を、故障箇所候補として抽出する。図10の例では、スイッチci02が集約ポイントとして特定されているので、図18に示すように、集約ポイントであるスイッチci02から接続関係において2ホップ内とすると、点線で囲まれたスイッチci01、ci03及びci04と、物理マシンci05乃至ci09とが抽出される。
一方、図15に示すようなシステムにおいて被呼出数に基づき挙動の集約ポイントが特定されると、図19に示すように、集約ポイントであるDBサーバci25から、呼出関係を辿ってnホップ以内(例えば2ホップ以内)の構成要素を抽出する。具体的には、図19において点線で囲まれたアプリケーションサーバci22及びci23と、ゲートウェイci24とが抽出される。
なお、配下の要素数及び被呼出数を総合的に評価した上で集約ポイントを抽出した場合、又は配下の要素数の基準と被呼出数の基準との両方の基準を満たすような集約ポイントが存在する場合には、接続関係について所定ホップ以内の構成要素と、呼出関係について所定ホップ数以内の構成要素とを両方とも抽出する。
その後、故障箇所候補抽出部103は、ステップS43の検索で検出された構成要素を、故障箇所候補として、故障箇所候補リスト格納部104に格納する(ステップS45)。図18の例では、例えば図20に示すようなデータが、故障箇所候補リスト格納部104に格納される。図20の例では、構成要素の識別子と、当該構成要素の要素タイプとが対応付けて格納される。
そして、故障箇所候補抽出部103は、集約ポイント格納部102において未処理の集約ポイントが存在しているか判断する(ステップS47)。未処理の集約ポイントが存在している場合には処理はステップS41に戻る。一方、未処理の集約ポイントが存在していない場合には、呼出元の処理に戻る。
このような処理を実施すれば、故障した際に集約ポイントに影響を及ぼす可能性の高い構成要素が、故障箇所候補として抽出されたことになる。
図9の処理の説明に戻って、故障パターン生成部105は、故障パターン生成処理を実施する(ステップS5)。この故障パターン生成処理については、図21乃至図24を用いて説明する。まず、故障パターン生成部105は、故障箇所候補リスト格納部104において、故障タイプリスト格納部106から、各故障箇所候補の要素タイプに対応する故障タイプを特定する(図21:ステップS51)。故障タイプリスト格納部106には、例えば図22に示すようなデータが格納されている。図22の例では、要素タイプ毎に、1又は複数の故障タイプが対応付けられている。例えば物理マシンpmという要素タイプに対しては、ディスク(Disk)故障及びNIC(Network Interface Card)故障という2つの故障タイプが対応付けられている。同じ構成要素でも、故障タイプが異なればその影響の波及状況も異なるので、区別して取り扱うためである。
そして、故障パターン生成部105は、カウンタiを1に初期化する(ステップS53)。その後、故障パターン生成部105は、故障箇所候補と故障タイプのセットをi個含むパターンを全て生成し、故障パターンリスト格納部108に格納する(ステップS55)。
図20のような故障箇所候補が抽出された場合、図22に示すような故障タイプリストのデータから、要素タイプswであれば1つの故障タイプ「故障」が得られ、要素タイプpmであれば2つの故障タイプ「Disk故障」及び「NIC故障」が得られる。従って、図23に示すように、スイッチであればそれぞれ構成要素の識別子と故障タイプ「故障」のセットが1つずつ生成され、物理マシンであれば構成要素の識別子と故障タイプ「Disk故障」のセットと構成要素の識別子と故障タイプ「NIC故障」のセットとが2つずつ生成される。これらのセットを1つ含むような故障パターンについては、故障が一箇所で発生するものと仮定したもので、故障パターンリスト格納部108に格納する。
また、一度に複数の故障箇所候補で故障が発生することを想定しても良い。例えばi=2の場合には、上で述べたようなセットを2つ含むような故障パターンをセットの全ての組み合わせについて生成する。例えば、セット(ci01,故障)とセット(ci03,故障)の組み合わせ、セット(ci01,故障)とセット(ci06,Disk故障)の組み合わせ、...などが生成される。
そしてステップS55で生成した故障パターンについては、故障パターンリスト格納部108に格納される。故障パターンリスト格納部108には、例えば図24のようなデータが格納される。図24の例では、故障パターンが列挙されるリストが格納されるようになっている。
その後、故障パターン生成部105は、除外リスト格納部107に格納されている故障パターンを、故障パターンリスト格納部108から削除する(ステップS57)。予め除外リストに、1つのみ故障する場合に検討不要な故障パターンや、複数箇所故障する場合の組み合わせについてあり得ない組み合わせや検討不要な組み合わせを登録しておく。このような登録については運用管理者がその知見を予め登録するようにしても良い。また、物理マシンが故障すれば配下の仮想マシンも故障となるので、(pm1,故障)のセットが登録されていれば、(pm1,故障)及び(vm11,故障)の組み合わせは削除するというルールを登録しておき、適用しても良い。
また、例えば特開2011−145773号公報記載の技術を用いて、除外リストに登録すべき故障パターン(又はルール)をシステム構成データ格納部210から自動的に生成して、除外リスト格納部107に格納するようにしても良い。
その後、故障パターン生成部105は、iが上限値を超えたか判断する(ステップS59)。上限値は、一度に発生する故障の上限数であり、予め設定しておく。そして、iが上限値を超えていない場合には、故障パターン生成部105は、iを1インクリメントして(ステップS61)、処理はステップS55に戻る。一方、iが上限値を超えた場合には、処理は呼出元の処理に戻る。
このような処理を実施することで、集約ポイントに影響を及ぼし且つ想定すべき故障パターンが生成されたことになる。
図9の処理の説明に戻って、シミュレーション実行部109は、故障パターンリスト格納部108に格納されている各故障パターンについて、状態遷移モデル格納部110に格納されている状態遷移モデルに従って、当該故障パターンの故障が発生したと想定して、システム構成データ格納部210に格納されている各構成要素の状態遷移のシミュレーションを実施する(ステップS7)。
状態遷移モデルを、要素タイプ毎に状態遷移モデル格納部110に格納しておく。典型的には、図25に示すような形式で状態遷移モデルを記述する。状態は、構成要素の状態を表し、丸や四角で囲まれて表されている。その状態間の遷移は、ある状態から別の状態への変化を表し、矢印で表される。なお、遷移には、トリガー、ガード条件及び作用が規定される。トリガーとは、遷移のきっかけとなるイベントであり、ガード条件とは、遷移するための条件であり、作用とは、遷移に伴う振る舞いを表す。ガード条件及び作用については規定されない場合もある。本実施の形態では「遷移:トリガー[ガード条件]/作用」といった形で表す。図25において、状態「停止」から状態「起動中」へトリガー「起動」により遷移が生じ、状態「起動中」から状態「停止」へトリガー「停止」により遷移が生ずる。また、状態「起動中」から状態「過負荷」へ、トリガー「処理要求受信」でガード条件[処理量>許容処理量]を満たせば遷移が発生する。その作用として「要求受け付け停止」が行われる。一方、状態「過負荷」から状態「起動中」へ、トリガー「要求受信」でガード条件[処理量≦許容処理量]を満たせば遷移が発生する。その作用として「要求受け付け再開」が行われる。本実施の形態では、トリガーとして別の構成要素の状態や作用をも表現可能とする。例えば、状態「起動中」から状態「停止」への遷移についてのトリガーに、「停止@pm」といった表記を使用できるようにする。例えば、仮想マシンvm状態遷移モデルにおいて「pmが停止している場合、vmが状態「起動中」から状態「停止」に遷移」することを表現する。
より具体的に図10に示したシステムにおいて用いられている要素タイプ「sw」の構成要素についての状態遷移モデルの一例を図26に示す。図26に示すように、状態「停止中」、状態「起動中」及び状態「ダウン」が含まれる。そして、状態「停止中」から状態「起動中」への遷移は、トリガー「起動処理」に応じて行われる。また、状態「起動中」から状態「ダウン」への遷移は、トリガー「故障」に応じて行われる。状態「起動中」から状態「停止中」への遷移は、トリガー「シャットダウン処理」に応じて行われる。さらに、状態「ダウン」から状態「停止中」への遷移は、トリガー「停止処理」に応じて行われる。このようにスイッチは故障が発生するとダウンする。
また、図10に示したシステムにおいて用いられている要素タイプ「pm」の構成要素についての状態遷移モデルの一例を図27に示す。図27に示すように、状態「停止中」、状態「起動中」、状態「通信不能」及び状態「ダウン」が含まれている。状態「停止中」から状態「起動中」への遷移は、トリガー「起動処理」でガード条件[swが起動中]であれば行われる。状態「起動中」から状態「ダウン」への遷移は、トリガー「disk故障」に応じて行われる。また、状態「起動中」から状態「通信不能」への遷移は、トリガー「NIC故障」又は「swの停止」又は「swの過負荷」に応じて行われる。一方、状態「通信不能」から状態「起動中」への遷移は、トリガー「swの起動中」に応じて行われる。状態「起動中」から状態「停止中」への遷移は、トリガー「シャットダウン処理」に応じて行われる。さらに、状態「停止中」から状態「通信不能」への遷移は、トリガー「起動処理」でガード条件[swが停止中]又は[swが過負荷]を満たせば行われる。逆に、状態「通信不能」から状態「停止中」への遷移は、トリガー「シャットダウン処理」に応じて行われる。また、状態「ダウン」から状態「停止中」への遷移は、トリガー「停止処理」に応じて行われる。このように、swの状態やNIC故障に応じて起動中から通信不能になったり、swの状態が回復すれば通信不能から起動中に遷移する。また、disk故障が発生すると、起動中からダウン状態になる。
また、図10に示したシステムにおいて用いられている要素タイプ「vm」でメインの仮想マシンの場合の状態遷移モデルの一例を図28に示す。図28に示すように、状態「停止中」、状態「起動中」、状態「通信不能」、状態「ダウン」及び状態「複製不明」が含まれる。状態「停止中」から状態「起動中」への遷移は、トリガー「起動処理」でガード条件[swが起動中且つpmが起動中]が満たされれば行われる。また、状態「起動中」から状態「ダウン」への遷移は、トリガー「pmが停止」又は「pmがダウン」に応じて行われる。状態「ダウン」から状態「起動中」への遷移は、トリガー「起動処理」でガード条件[swが起動中且つpmが起動中]を満たせば行われる。状態「起動中」から状態「通信不能」への遷移は、トリガー「swが停止」又は「swが過負荷」又は「pmが通信不能」に応じて行われる。状態「通信不能」から状態「起動中」への遷移は、トリガー「swが起動中且つpmが起動中」に応じて行われる。さらに、状態「起動中」から状態「複製不明」への遷移は、トリガー「vm(コピー)がダウン」又は「vm(コピー)が通信不能」に応じて行われる。状態「複製不明」への自己遷移は、トリガー「複製生成要求」に応じて行われる。状態「通信不能」から状態「複製不明」への遷移は、自動的に行われる。状態「起動中」から状態「停止中」への遷移、及び状態「通信不能」から状態「停止中」への遷移は、トリガー「シャットダウン処理」に応じて行われる。また、状態「停止中」から状態「通信不能」への遷移は、トリガー「起動処理」でガード条件[swが停止又はswが過負荷]を満たせば行われる。状態「ダウン」から状態「停止中」への遷移は、トリガー「停止処理」に応じて行われる。このように遷移のトリガー又はガード条件の一部に物理マシンpmの状態が含まれている。また、自身のコピー(vm(コピー))の生存を常に確認しており、生存が不明になるとマネージャMgrに複製生成要求を送信する。なお、自身が通信不能状態であれば、自動的に複製不明状態になる。
さらに、図10に示したシステムにおいて用いられる要素タイプ「vm」でコピーの仮想マシンの場合の状態遷移モデルの一例を図29に示す。メインの仮想マシンとの差は、状態「複製不明」が存在せず、それに関連する遷移も同様に存在しない部分であり、それ以外は同じである。
また、図10に示したシステムにおいて用いられる要素タイプ「Mgr」の構成要素についての状態遷移モデルの一例を図30に示す。図30に示すように、状態「停止中」、状態「起動中」及び状態「過負荷」が含まれている。そして、状態「停止中」から状態「起動中」への遷移は、トリガー「起動処理」に応じて行われる。状態「起動中」の第1の自己遷移は、トリガー「複製要求」でガード条件[要求量rがrmax以下]を満たせば行われる。この遷移が行われると要求量rが1インクリメントされる。また、状態「起動中」の第2の自己遷移は、トリガー「複製処理」でガード条件[rがrmax以下]を満たせば行われる。この遷移が行われると要求量rが1デクリメントされる。また、状態「起動中」から状態「過負荷」への遷移は、トリガー「複製生成要求」でガード条件[r>rmax]で行われる。状態「過負荷」の第1の自己遷移は、トリガー「複製生成要求」でガード条件[r>rmax]を満たせば行われる。この遷移が行われると要求量rが1インクリメントされる。また、状態「過負荷」の第2の自己遷移は、トリガー「複製処理」でガード条件[r>rmax]を満たせば行われる。この遷移が行われると要求量rが1デクリメントされる。状態「過負荷」から状態「起動中」への遷移は、トリガー「複製処理」でガード条件[r≦rmax]を満たせば行われる。この遷移が行われると要求量rが1デクリメントされる。状態「起動中」から状態「停止中」への遷移、及び状態「過負荷」から状態「停止中」への遷移は、トリガー「シャットダウン処理」に応じて行われる。この遷移により要求量rは0になる。
シミュレーション実行部109は、このような状態遷移モデルを用いてシミュレーションを実施する。なお、この際故障パターンで規定されている特定の構成要素に特定の故障が発生したものとしてシミュレーションを行うことになる。
例えば図10のシステムにおいて、故障パターンとして(ci06,NIC故障)についてシミュレーションを行う場合について、具体的な状態遷移を図31乃至図36を用いて説明する。なお、ここでは、メインの仮想マシンvmは、状態「複製不明」での複製生成要求は1ステップに1回のペースで繰り返されるものとする。また、マネージャMgrにおける最大要求量rmax=10であるものとする。また、マネージャMgrも、1ステップに1要求を処理できるものとする。さらに、早期に影響を与えるような故障を特定するために、例えば5ステップ後まででシミュレーションを終了するものとする。
初期状態では、図31に示すように、全ての構成要素が「起動中」であり、マネージャMgrにおける要求量rは0となっている。そして、第1ステップ目で、図32に示すように、物理マシンpmである構成要素ci06がNIC故障に応じて「通信不能」状態になったものとする。そうすると、第2ステップ目では、図33に示すように、コピーの仮想マシンvmである構成要素ci16乃至ci20は「通信不能」状態に遷移する。
その後、第3ステップ目では、図34に示すように、メインの仮想マシンである構成要素ci11乃至ci15は、コピーの仮想マシンの生存確認ができなくなるので、「複製不明」状態に遷移する。そうすると、複製生成要求が、メインの仮想マシンである構成要素ci11乃至ci15から、マネージャMgrに送信される。従って、合計で5つの複製生成要求がマネージャMgrに到達するので、要求量rが5に増加する。
そして、第4ステップ目では、図35に示すように、マネージャMgrは、複製生成要求を1つ処理するが、メインの仮想マシンである構成要素ci11乃至ci15は、生存確認ができないので再度複製生成要求をマネージャMgrに送信するので、r=5−1+5=9となる。
その後、第5ステップ目では、図36に示すように、マネージャMgrは、複製生成要求を1つ処理するが、メインの仮想マシンである構成要素ci11乃至ci15は、まだ生存確認ができないので再度複製生成要求をマネージャMgrに送信するので、r=9−1+5=13となる。これによって、マネージャMgrの最大処理量rmax=10を超えるので、マネージャMgrの構成要素ci10は過負荷状態となる。
以上のように、故障パターンに含まれる構成要素ci06に加えて、構成要素ci10乃至ci20に不具合が発生しているということが分かる。ここでは、故障パターンに含まれる構成要素を含めて、被害要素数として計数するものとする。本例では、被害要素数「12」が得られる。
このような処理を、各故障パターンについて実施すると、シミュレーション実行部109は、シミュレーション結果格納部111に、図37に示すようなデータを格納する。図37の例では、各故障パターンについて、影響を受けた構成要素の数である被害要素数と、影響を受けた構成要素である被害要素の識別子とが含まれる。
なお、このようなシミュレーションの具体的処理方法については、従来から存在するものを利用でき、且つシミュレーションの仕方自体は本実施の形態の主旨ではないので、これ以上述べない。
図9の処理の説明に戻って、出力処理部112は、シミュレーション結果格納部111に格納されているシミュレーション結果に含まれる被害要素数で、故障パターンを降順にソートする(ステップS9)。そして、出力処理部112は、ソート結果から上位所定数の故障パターンを抽出して、当該抽出した上位所定数の故障パターンのデータを、例えばユーザ端末300に出力する(ステップS11)。
例えば、図38に示すようなデータを生成して、ユーザ端末300の表示装置などに表示する。図38の例では、上位所定数が「3」であり、故障パターン毎に、被害要素数と被害要素とが示されるようになっている。
このように被害要素数が多い、すなわち影響が及ぶ範囲が広い故障パターンを特定できるため、これに対する対策を行うことができるようになる。
[実施の形態2]
第1の実施の形態では集約ポイントから固定のホップ数nの範囲に含まれる構成要素を故障箇所候補として抽出する例を示した。しかしながら、必ずしも最初からnを適切に設定できるわけではない。また、集約ポイントからやや離れた構成要素の方が影響範囲が広い場合もある。従って、以下で述べるような処理を実施することで、故障箇所候補を抽出する範囲を動的に変更して、適切な故障箇所候補を抽出することで、対処すべき故障パターンを適切に抽出する。
例えば、図39に示すような処理を実施する。まず、集約ポイント特定部101は、集約ポイント特定処理を実施する(図39:ステップS201)。この集約ポイント特定処理については、図10乃至図16を用いて説明した処理と同じである。従って、詳細な説明は省略する。次に。故障箇所候補抽出部103は、カウンタnを1に初期化する(ステップS203)。そして、故障箇所候補抽出部103は、故障箇所候補抽出処理を実施する(ステップS205)。この故障箇所候補抽出処理については、図17乃至図20を用いて説明した処理と同じである。従って、詳細な説明は省略する。その後、故障パターン生成部105は、故障パターン生成処理を実施する(ステップS207)。故障パターン生成処理については、図21乃至図24を用いて説明した処理と同じである。従って、詳細な説明については省略する。
そして、シミュレーション実行部109は、故障パターンリスト格納部108に格納されている各故障パターンについて、状態遷移モデル格納部110に格納されている状態遷移モデルに従って、当該故障パターンの故障が発生したと想定して、システム構成データ格納部210に格納されている各構成要素の状態遷移のシミュレーションを実施する(ステップS209)。このステップの処理内容はステップS7と同様であるから、詳細な説明は省略する。
その後、出力処理部112は、シミュレーション結果に含まれる被害要素数で、故障パターンを降順にソートする(ステップS211)。この処理もステップS9と同様であるから、これ以上述べない。そして、出力処理部112は、最大被害要素数及びその時の故障パターンを特定し、例えばシミュレーション結果格納部111に格納する(ステップS213)。
さらに出力処理部112は、nが予め設定された最大値に達したか又はnの変動が収束したか判断する(ステップS215)。変動が収束というのは、例えば被害要素数の最大値が2回続けて変動しない場合などの条件を満たしているか判断する。
nが最大値に達しておらず且つnの変動が収束していない場合、出力処理部112は、nを1インクリメントする(ステップS217)。そして処理はステップS205に戻る。
図40Aに模式的に示すように、システム内の構成要素ci02が集約ポイントであるとすると、ホップ数n=1について故障箇所候補を抽出すると、図40Bに示すようなシミュレーション結果が得られる。この例では、n=1の場合、被害要素数の最大値は10となっている。さらに、図41Aに模式的に示すように、ホップ数n=2について故障箇所候補を抽出すると、図41Bに示すようなシミュレーション結果が得られる。この例では、n=2の場合、被害要素数の最大値は13となっている。このような処理がステップS215の条件が満たされるまで繰り返されることになる。
一方、nが最大値に達しているか又は変動が収束した場合には、出力処理部112は、最大被害要素数の変化を表すデータを生成して、例えばユーザ端末300に出力する(ステップS219)。ユーザ端末300では、例えば図42に示すようなデータが表示される。図42では、横軸がホップ数nを表し、縦軸が被害要素数を表す。この例では、ホップ数n=3及びn=4で、最大被害要素数が変化しないので、n=5以降の処理は省略される。なお、図40Bや図41Bのようなデータをも提示するようにしても良い。
このような処理を実施することで、集約ポイントからどの程度の範囲を検討すればよいのかについての目安を得ることができる。さらに、第1の実施の形態と同様に、注意すべき故障パターンについても特定できるため、そのための対応策を用意することもできるようになる。
以上述べたように、故障パターンを影響範囲が大きくなる可能性が高いものに限定することで、効率的にリスクの高い故障パターンを把握できるようになる。特に、構成要素の数が多くなっても、本実施の形態の方法を採用すれば、構成要素の数に依存せず、集約ポイントの所定範囲内に含まれる要素数で故障パターンの数は決まるので、より効果的である。
さらに、上では運用管理者が用いる例を示したが、例えばシステム設計時に、上で述べた処理を行っておけば、大規模障害が発生しないようなシステムを設計することが可能となる。さらに、上でも述べたように、運用管理者が用いることによって、事前に大規模障害の発生を想定することができるようになり、対策を用意したり、未然防止のための処置を講ずることができるようになる。さらに、システム変更時にも、上で述べたような処理を事前に行えば、大規模障害が発生しうる変更を回避するなどの処置が可能となる。
以上本技術の実施の形態を説明したが、本実施の形態はこれらに限定されるものではない。例えば、上で述べた機能ブロック図は一例であって、実際のプログラムモジュール構成とは一致しない場合もある。データ保持態様についても一例であって、必ずしも実際のファイル構成などと一致しない場合もある。
さらに、処理フローについても、処理結果が変わることがなければ、処理順番を入れ替えたり、並列実行するようにしても良い。
さらに、運用管理システム200と情報処理装置100が別の装置である例を示したが、一体となっている場合もある。また、情報処理装置100が複数台のコンピュータで実現される場合もある。例えば、シミュレーション実行部109を別のコンピュータで実現するようにしても良い。
さらに、一度に発生する故障数についても変動させるようにしても良い。
なお、上で述べた情報処理装置100及び運用管理システム200は、コンピュータ装置であって、図43に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
本実施の形態に係る情報処理方法は、(A)システム内の構成要素と当該構成要素間の関係とを表すデータを格納する第1のデータ格納部に格納されているデータから、システム内において影響を及ぼす範囲に関する指標値に関する所定の条件を満たす構成要素を特定する第1の特定処理と、(B)第1のデータ格納部に格納されているデータに基づき、特定された構成要素から所定の範囲内の構成要素を抽出する抽出処理と、(C)構成要素の種別毎に1又は複数の故障タイプが登録された第2のデータ格納部に格納されているデータから、抽出された構成要素の1つと当該構成要素に対応する故障タイプとのセットを1又は複数含む故障パターンを生成し、第3のデータ格納部に格納する生成処理とを含む。
システム内の全ての構成要素について故障パターンを生成するのではなく、故障パターンを生成すべき構成要素を上で述べたように絞り込むことで、効率的に影響の大きい故障パターンを特定できるようになる。なお、システム内において通信が集中しうる構成要素やメッセージが集中しうる構成要素は、その構成要素に障害が発生すると、システム全体に大規模な影響を与えることになる。従って、影響を及ぼす範囲が広い構成要素に着目するが、それだけではなく、この構成要素に故障及び障害で影響を及ぼす構成要素にも注目するものである。これによって自身の影響範囲は狭くても上で述べたような影響を及ぼす範囲が広い構成要素に影響を及ぼすことで、システム全体にインパクトを与えるような故障パターンの候補を生成できるようになる。
上で述べた情報処理方法は、(D)第3のデータ格納部に格納されている各故障パターンについてシステムの状態に関するシミュレーションを実施して当該故障パターンにおける故障から影響を受ける構成要素の数を特定する第2の特定処理をさらに含むようにしても良い。このようにシミュレーションを実施することによってさらに故障パターンを絞り込むことができるようになる。
また、上で述べた情報処理方法は、(E)特定された上記構成要素の数で降順に故障パターンをソートして、上位所定数の故障パターンを出力する処理をさらに含むようにしても良い。このようにすれば、ユーザは対処すべき故障パターンを容易に特定できるようになる。
さらに、上記情報処理方法において、上で述べた所定の範囲を変動させて、抽出処理と生成処理と第2の特定処理とを繰り返し実施させ、上記所定の範囲と、当該所定の範囲に対する第2の特定処理において特定される構成要素の数のうち最大値との関係を表すデータを生成するようにしても良い。このようにすれば、所定の範囲をどのように設定すべきかを判断できるようになる。すなわち、影響を及ぼす範囲が広い構成要素に影響を及ぼす構成要素をどの程度まで検討すべきかを把握できるようになる。
さらに、上で述べた構成要素間の関係が、構成要素間の接続関係と構成要素間の呼出関係とを含む場合がある。この場合、上で述べた第1の特定処理が、構成要素間の接続関係から各構成要素について配下の要素数を算出し、構成要素間の呼出関係から各構成要素について直接及び間接的な被呼出数を算出する処理と、配下の要素数と直接及び間接的な被呼出数とに基づき、所定の条件を満たす構成要素を特定する処理とを含むようにしても良い。配下の要素数と直接及び間接的な被呼出数とに別々に閾値を設定しても良いし、評価関数を用意して総合的に判断するようにしても良い。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM(Random Access Memory)等の記憶装置に一時保管される。
システム構成データ格納部210は、システム内の構成要素のデータと、構成要素間の接続関係のデータと、構成要素間の呼出関係のデータとを格納している。例えば、図2に示すように、スイッチSwitch001と、サーバServer001とが接続されている場合には、図3乃至図5のようなデータが、システム構成データ格納部210に格納される。図3は、接続のソース(Source)となるスイッチSwitch001のデータを表しており、当該スイッチSwitch001のタイプと、各種属性及び状態などが登録されるようになっている。また、図4は、接続のターゲット(Target)となるサーバServer001のデータを表しており、サーバServer001のタイプと、各種属性及び状態などが登録されるようになっている。そして、図5は、スイッチSwitch001とサーバServer001との間の接続関係を表しており、関係のタイプ(Connection)と、ソースとなる構成要素と、ターゲットとなる構成要素と、接続状態などが登録されるようになっている。また、図6に示すように、サーバServer001からサーバServer002を呼び出す場合には、図4と図7及び図8に示すようなデータが、システム構成データ格納部210に格納される。図7は、呼出先のサーバServer002のデータを表しており、図4と同様に、サーバServer002のタイプ、各種属性及び状態などが登録されるようになっている。図8は、サーバServer001からサーバServer002への呼出関係を表しており、関係のタイプ(Call)と、ソースとなる構成要素、ターゲットとなる構成要素などが登録されるようになっている。
さらに、物理マシンの場合には、直下の仮想マシンの数が、物理マシンの配下の要素数となる。物理マシンci05及びci06の場合には、直下の仮想マシンの数は5であるから、配下の要素数は「5」となる。物理マシンci07及びci08の場合、直下の仮想マシンの数は0であるから、配下の要素数は「0」となる。物理マシンci09の場合、直下の仮想マシンの数は1であるから、配下の要素数は「1」となる。仮想マシンの場合には、配下の要素数は0と特定される。
なお、配下の要素数及び被呼出数を総合的に評価した上で集約ポイントを抽出した場合、又は配下の要素数の基準と被呼出数の基準との両方の基準を満たすような集約ポイントが存在する場合には、接続関係について所定ホップ数以内の構成要素と、呼出関係について所定ホップ数以内の構成要素とを両方とも抽出する。
また、図10に示したシステムにおいて用いられる要素タイプ「Mgr」の構成要素についての状態遷移モデルの一例を図30に示す。図30に示すように、状態「停止中」、状態「起動中」及び状態「過負荷」が含まれている。そして、状態「停止中」から状態「起動中」への遷移は、トリガー「起動処理」に応じて行われる。状態「起動中」の第1の自己遷移は、トリガー「複製生成要求」でガード条件[要求量rがrmax以下]を満たせば行われる。この遷移が行われると要求量rが1インクリメントされる。また、状態「起動中」の第2の自己遷移は、トリガー「複製処理」でガード条件[rがrmax以下]を満たせば行われる。この遷移が行われると要求量rが1デクリメントされる。また、状態「起動中」から状態「過負荷」への遷移は、トリガー「複製生成要求」でガード条件[r>rmax]で行われる。状態「過負荷」の第1の自己遷移は、トリガー「複製生成要求」でガード条件[r>rmax]を満たせば行われる。この遷移が行われると要求量rが1インクリメントされる。また、状態「過負荷」の第2の自己遷移は、トリガー「複製処理」でガード条件[r>rmax]を満たせば行われる。この遷移が行われると要求量rが1デクリメントされる。状態「過負荷」から状態「起動中」への遷移は、トリガー「複製処理」でガード条件[r≦rmax]を満たせば行われる。この遷移が行われると要求量rが1デクリメントされる。状態「起動中」から状態「停止中」への遷移、及び状態「過負荷」から状態「停止中」への遷移は、トリガー「シャットダウン処理」に応じて行われる。この遷移により要求量rは0になる。
例えば、図39に示すような処理を実施する。まず、集約ポイント特定部101は、集約ポイント特定処理を実施する(図39:ステップS201)。この集約ポイント特定処理については、図10乃至図16を用いて説明した処理と同じである。従って、詳細な説明は省略する。次に、故障箇所候補抽出部103は、カウンタnを1に初期化する(ステップS203)。そして、故障箇所候補抽出部103は、故障箇所候補抽出処理を実施する(ステップS205)。この故障箇所候補抽出処理については、図17乃至図20を用いて説明した処理と同じである。従って、詳細な説明は省略する。その後、故障パターン生成部105は、故障パターン生成処理を実施する(ステップS207)。故障パターン生成処理については、図21乃至図24を用いて説明した処理と同じである。従って、詳細な説明については省略する。