(57)【特許請求の範囲】
【請求項１】
第１のコンピュータおよび複数の第２のコンピュータがネットワークを通じて相互に通信可能に接続されたコンピュータシステムが実行するプログラム配置方法であって、
前記第１のコンピュータが、それぞれ一方がアクティブ、他方がスタンバイとして動作する２つのプログラムのセットである複数のプログラムセットを前記複数の第２のコンピュータに配置する配置パターンであって、同じプログラムセットの前記２つのプログラムが同じ前記第２のコンピュータに配置されず且つ前記複数の第２のコンピュータそれぞれの処理負荷と前記複数の第２のコンピュータ間の通信負荷との少なくとも一方を考慮した配置パターンを決定し、
前記第１のコンピュータが、前記決定した配置パターンに従って、前記複数の第２のコンピュータに前記複数のプログラムセットを配置し、
前記第１のコンピュータが、何れかの前記第２のコンピュータに障害が発生してフェイルオーバーが行われた場合、フェイルオーバーが行われていない残りの前記プログラムセットの前記２つのプログラムのアクティブとスタンバイとを切り替える切替パターンを、前記フェイルオーバー後の前記複数の第２のコンピュータそれぞれの処理負荷と前記複数の第２のコンピュータ間の通信負荷との少なくとも一方を考慮して決定し、
前記第１のコンピュータが、前記決定した切替パターンに従って、前記フェイルオーバーが行われていない前記プログラムセットの前記２つのプログラムのうちアクティブとして動作しているプログラムをスタンバイに切り替え、スタンバイとして動作しているプログラムをアクティブに切り替える
プログラム配置方法。
【請求項２】
前記配置パターンの決定では、
前記第１のコンピュータが、前記配置パターンの複数の候補のそれぞれについて、配置後の前記処理負荷と前記通信負荷との少なくとも一方の負荷の分散の程度を表す第１の指標値を算出し、
前記第１のコンピュータが、前記算出した第１の指標値に基づいて前記複数の候補の中から前記配置パターンを決定する
請求項１に記載のプログラム配置方法。
【請求項３】
前記切替パターンの決定では、
前記第１のコンピュータが、前記切替パターンの複数の候補のそれぞれについて、切り替え後の前記処理負荷と前記通信負荷との少なくとも一方の負荷の分散の程度を表す第２の指標値を算出し、
前記第１のコンピュータが、前記算出した第２の指標値に基づいて前記複数の候補の中から前記切替パターンを決定する
請求項１または２に記載のプログラム配置方法。
【請求項４】
前記配置パターンの決定では、
前記第１のコンピュータが、前記配置パターンの複数の候補のそれぞれについて、配置後の前記処理負荷と前記通信負荷との少なくとも一方の負荷の分散の程度を表す第１の指標値と、何れかの前記第２のコンピュータに障害が発生してフェイルオーバーが起きた時点でフェイルオーバーが行われていない残りの前記プログラムセットの前記２つのプログラムのアクティブとスタンバイとを切り替えることによって期待される、前記処理負荷と前記通信負荷との少なくとも一方の負荷の分散の程度を表す第２の指標値とを算出し、
前記第１のコンピュータが、前記第１の指標値と前記第２の指標値とに基づいて、前記配置パターンの複数の候補の中から前記配置パターンを決定する
請求項１に記載のプログラム配置方法。
【請求項５】
前記配置パターンの決定では、
前記第１のコンピュータが、前記第１の指標値と前記第２の指標値とを重み付けして加算した値に基づいて、前記配置パターンの複数の候補の中から前記配置パターンを決定する
請求項４に記載のプログラム配置方法。
【請求項６】
第１のコンピュータおよび複数の第２のコンピュータがネットワークを通じて相互に通信可能に接続されたコンピュータシステムにおける前記第１のコンピュータであって、
それぞれ一方がアクティブ、他方がスタンバイとして動作する２つのプログラムのセットである複数のプログラムセットを前記複数の第２のコンピュータに配置する配置パターンであって、同じプログラムセットの前記２つのプログラムが同じ前記第２のコンピュータに配置されず且つ前記複数の第２のコンピュータそれぞれの処理負荷と前記複数の第２のコンピュータ間の通信負荷との少なくとも一方を考慮した配置パターンを決定する配置パターン決定手段と、
前記決定した配置パターンに従って、前記複数の第２のコンピュータに前記複数のプログラムセットを配置するプログラム配置手段と、
何れかの前記第２のコンピュータに障害が発生してフェイルオーバーが行われた場合、フェイルオーバーが行われていない残りの前記プログラムセットの前記２つのプログラムのアクティブとスタンバイとを切り替える切替パターンを、前記フェイルオーバー後の前記複数の第２のコンピュータそれぞれの処理負荷と前記複数の第２のコンピュータ間の通信負荷との少なくとも一方を考慮して決定する切替パターン決定手段と、
前記決定した切替パターンに従って、前記フェイルオーバーが行われていない前記プログラムセットの前記２つのプログラムのうちアクティブとして動作しているプログラムをスタンバイに切り替え、スタンバイとして動作しているプログラムをアクティブに切り替える切替手段と
を有するコンピュータ。
【請求項７】
第１のコンピュータおよび複数の第２のコンピュータがネットワークを通じて相互に通信可能に接続されたコンピュータシステムにおける前記第１のコンピュータに、
それぞれ一方がアクティブ、他方がスタンバイとして動作する２つのプログラムのセットである複数のプログラムセットを前記複数の第２のコンピュータに配置する配置パターンであって、同じプログラムセットの前記２つのプログラムが同じ前記第２のコンピュータに配置されず且つ前記複数の第２のコンピュータそれぞれの処理負荷と前記複数の第２のコンピュータ間の通信負荷との少なくとも一方を考慮した配置パターンを決定するステップと、
前記決定した配置パターンに従って、前記複数の第２のコンピュータに前記複数のプログラムセットを配置するステップと、
何れかの前記第２のコンピュータに障害が発生してフェイルオーバーが行われた場合、フェイルオーバーが行われていない残りの前記プログラムセットの前記２つのプログラムのアクティブとスタンバイとを切り替える切替パターンを、前記フェイルオーバー後の前記複数の第２のコンピュータそれぞれの処理負荷と前記複数の第２のコンピュータ間の通信負荷との少なくとも一方を考慮して決定するステップと、
前記決定した切替パターンに従って、前記フェイルオーバーが行われていない前記プログラムセットの前記２つのプログラムのうちアクティブとして動作しているプログラムをスタンバイに切り替え、スタンバイとして動作しているプログラムをアクティブに切り替えるステップと
を行わせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンピュータがネットワークを通じて相互に通信可能に接続されたコンピュータシステムにおけるプログラム配置方法に関する。
【背景技術】
【０００２】
従来より、物理マシンのハードウェア資源をソフトウェアを使って複数に分割して独立させ、１台の物理マシン上に複数の仮想マシンを同時に稼働させる仮想マシン（ＶＭ：Ｖｅｒｔｕａｌ  Ｍａｃｈｉｎｅ）技術が知られている。また、仮想マシンを複数の物理マシン上で多重に実行し、ハードウェア資源に対するフォールトトレラント（ＦＴ）性を持たせる技術が提案されている。
【０００３】
例えば特許文献１には、高速チェックポイント方式によるＦＴシステムが記載されている。このＦＴシステムでは、一方の物理マシン上で仮想マシン（アクティブ側）を実行しつつ定期的なチェックポイント毎にスナップショット（メモリ状態、ディスク状態、プロセッサやＩ／Ｏのコンテクスト）を取得し、他方の物理マシンに転送して仮想マシン（スタンバイ側）上に保存することにより、二重化を行う。そして、アクティブ側の仮想マシンが物理マシンの障害によって業務処理を実行することができなくなった場合、フェイルオーバー（スタンバイからアクティブへの切替）を実施し、スタンバイ側の仮想マシンがアクティブ側の仮想マシンで実行されていた業務処理を引継いで実行する。
【０００４】
また、複数の物理マシンに複数の仮想マシンを最適配置する方法として、以下のような方法が提案されている。
【０００５】
例えば特許文献２には、物理マシンと仮想マシンの記憶容量に基づいて、複数の物理マシンに複数の仮想マシンを最適配置する方法が記載されている。具体的には、各仮想マシンの所定時間毎のパフォーマンスを示す実測データと、各物理マシンの記憶容量と、各仮想マシンの記憶容量とに基づいて、複数の仮想マシンの各々を複数の物理マシンの何れかで稼働させた場合の各時間における各仮想マシンのパフォーマンスを示す値の合計値が最大となるような、仮想マシンと物理マシンの組み合わせ、すなわち仮想マシンの物理マシンへの配置を算出する。そして、算出した配置に従って、各仮想マシンのファイルをその仮想マシンに対応する物理マシンの記憶領域に格納して各仮想マシンの再配置を行う。
【０００６】
また特許文献３には、災害による影響を回避するために、災害による影響を受ける物理マシン上の仮想マシンを、災害による影響を受けない他の物理マシンに再配置する方法が記載されている。
【０００７】
また特許文献４には、ネットワーク使用率に基づいて、複数の物理マシンに複数の仮想マシンを配置する方法が記載されている。具体的には、仮想マシン間の通信量の測定結果に基づいて、所定の仮想マシンを他の物理マシンに移動した場合のネットワーク使用率の期待値を算出して当該移動の妥当性を判定し、妥当な場合に仮想マシンを他の物理マシンに移動させる。
【０００８】
また特許文献５には、物理マシンと仮想マシンの負荷に基づいて、複数の物理マシンに複数の仮想マシンを配置する方法が記載されている。具体的には、物理マシンおよび仮想マシンの負荷の変化を、高次方程式等の近似式によって把握または分析することで、物理マシンのリソース不足の事前検出、および中長期的に見て適切な仮想マシンの配置および移動を実現する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１０−１６０６６０号公報
【特許文献２】特開２００５−１１５６５３号公報
【特許文献３】特開２０１１−２０９８１１号公報
【特許文献４】特開２０１１−１８０８８９号公報
【特許文献５】特開２０１０−１１７７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
高速チェックポイント方式によりＦＴ化された仮想マシンのセット（アクティブ側の仮想マシンとスタンバイ側の仮想マシン）では、アクティブ側の仮想マシンの方がスタンバイ側の仮想マシンより負荷が大きく、またスタンバイ側の仮想マシンからアクティブ側の仮想マシンへの通信量に比べてアクティブ側の仮想マシンからスタンバイ側の仮想マシンへの通信量の方が多いという特徴がある。
【００１１】
このため、複数の物理マシンに複数の仮想マシンを配置する場合、上述した特徴を考慮して仮想マシンの配置を決定する必要がある。しかしながら、ＦＴ化されたシステムの場合、何れかの物理マシンに障害が発生すると、物理マシン上のアクティブ側の仮想マシンで行われていた業務処理を他の物理マシン上のスタンバイ側の仮想マシンが引き継ぐフェイルオーバーが発生する。このため、フェイルオーバーが発生すると、複数の物理マシンの処理負荷や物理マシン間のネットワーク通信負荷の分散状態が崩れてシステム全体の実行効率が低下する。フェイルオーバーが発生した時点で再び仮想マシンの最適な配置計算と再配置を実施することも考えられるが、稼働中のアクティブ側の仮想マシンを別の物理マシンに移動させる結果となり、稼働中の業務への影響が懸念される。
【００１２】
本発明の目的は、上述した課題、すなわち、フェイルオーバーが発生すると複数の物理マシンの処理負荷や物理マシン間のネットワーク通信負荷の分散状態が崩れてシステム全体の実行効率が低下する、という課題を解決するプログラム配置方法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の一形態にかかるプログラム配置方法は、
第１のコンピュータおよび複数の第２のコンピュータがネットワークを通じて相互に通信可能に接続されたコンピュータシステムが実行するプログラム配置方法であって、
上記第１のコンピュータが、それぞれ一方がアクティブ、他方がスタンバイとして動作する２つのプログラムのセットである複数のプログラムセットを上記複数の第２のコンピュータに配置する配置パターンであって、同じプログラムセットの上記２つのプログラムが同じ上記第２のコンピュータに配置されず且つ上記複数の第２のコンピュータそれぞれの処理負荷と上記複数の第２のコンピュータ間の通信負荷との少なくとも一方を考慮した配置パターンを決定し、
上記第１のコンピュータが、上記決定した配置パターンに従って、上記複数の第２のコンピュータに上記複数のプログラムセットを配置し、
上記第１のコンピュータが、何れかの上記第２のコンピュータに障害が発生してフェイルオーバーが行われた場合、フェイルオーバーが行われていない残りの上記プログラムセットの上記２つのプログラムのアクティブとスタンバイとを切り替える切替パターンを、上記フェイルオーバー後の上記複数の第２のコンピュータそれぞれの処理負荷と上記複数の第２のコンピュータ間の通信負荷との少なくとも一方を考慮して決定し、
上記第１のコンピュータが、上記決定した切替パターンに従って、上記フェイルオーバーが行われていない上記プログラムセットの上記２つのプログラムのアクティブとスタンバイの切り替えを行う
といった構成を採る。
【００１４】
また本発明の他の形態にかかるコンピュータは、
第１のコンピュータおよび複数の第２のコンピュータがネットワークを通じて相互に通信可能に接続されたコンピュータシステムにおける上記第１のコンピュータであって、
それぞれ一方がアクティブ、他方がスタンバイとして動作する２つのプログラムのセットである複数のプログラムセットを上記複数の第２のコンピュータに配置する配置パターンであって、同じプログラムセットの上記２つのプログラムが同じ上記第２のコンピュータに配置されず且つ上記複数の第２のコンピュータそれぞれの処理負荷と上記複数の第２のコンピュータ間の通信負荷との少なくとも一方を考慮した配置パターンを決定する配置パターン決定手段と、
上記決定した配置パターンに従って、上記複数の第２のコンピュータに上記複数のプログラムセットを配置するプログラム配置手段と、
何れかの上記第２のコンピュータに障害が発生してフェイルオーバーが行われた場合、フェイルオーバーが行われていない残りの上記プログラムセットの上記２つのプログラムのアクティブとスタンバイとを切り替える切替パターンを、上記フェイルオーバー後の上記複数の第２のコンピュータそれぞれの処理負荷と上記複数の第２のコンピュータ間の通信負荷との少なくとも一方を考慮して決定する切替パターン決定手段と、
上記決定した切替パターンに従って、上記フェイルオーバーが行われていない上記プログラムセットの上記２つのプログラムのアクティブとスタンバイの切り替えを行う切替手段と
を有する、といった構成を採る。
【発明の効果】
【００１５】
本発明は上述した構成を有するため、フェイルオーバーが発生した場合でも、複数の物理マシンの処理負荷や物理マシン間のネットワーク通信負荷の分散状態が崩れてシステム全体の実行効率が低下するのを防止することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施形態のブロック図である。
【図２】本発明の第１の実施形態の動作の一例を示すフローチャートである。
【図３】本発明の第１の実施形態におけるプログラムセットの配置例を示す図である。
【図４】本発明の第１の実施形態におけるフェイルオーバー直後の各プログラムの状態と処理負荷の値を示す図である。
【図５】本発明の第１の実施形態におけるフェイルオーバー後に決定された切替パターンに従ってフェイルオーバーしていないプログラムセットのアクティブとスタンバイの切り替えを行った後の各プログラムの状態と処理負荷の値を示す図である。
【図６】本発明の第２の実施形態のブロック図である。
【図７】本発明の第２の実施形態における各物理マシンの処理能力を測定する手順を示すフローチャートである。
【図８】本発明の第２の実施形態における各物理マシンの処理能力の測定結果を保持するテーブルの一例を示す図である。
【図９】本発明の第２の実施形態における物理マシン間の通信速度を測定する手順を示すフローチャートである。
【図１０】本発明の第２の実施形態における物理マシン間の通信速度の測定結果を保持するテーブルの一例を示す図である。
【図１１】本発明の第２の実施形態における各プログラムの処理負荷と通信量を測定する構成例を示すブロック図である。
【図１２】本発明の第２の実施形態における各プログラムの処理負荷と通信量を測定する手順の一例を示すフローチャートである。
【図１３】本発明の第２の実施形態における各プログラムの処理負荷の測定結果を保持するテーブルの一例を示す図である。
【図１４】本発明の第２の実施形態における各プログラムの通信量の測定結果を保持するテーブルの一例を示す図である。
【図１５】本発明の第２の実施形態における配置パターンの選択手順の一例を示すフローチャートである。
【図１６】本発明の第２の実施形態における配置パターンの選択手順で使用する重み係数の一例を示す図である。
【図１７】本発明の第２の実施形態における切替パターンの選択手順の一例を示すフローチャートである。
【図１８】本発明の第３の実施形態における配置パターンの選択手順の一例を示すフローチャートである。
【図１９】本発明の第３の実施形態における配置パターンの選択手順で使用する重み係数の一例を示す図である。
【発明を実施するための形態】
【００１７】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第１の実施形態]
図１を参照すると、本発明の第１の実施形態にかかるコンピュータシステムは、第１のコンピュータ１１００および複数の第２のコンピュータ１２００がネットワーク１３００を通じて相互に通信可能に接続されている。
【００１８】
コンピュータ１１００は、パーソナルコンピュータ等の情報処理装置（物理マシン）であり、コンピュータシステム全体を制御する機能を有する。
【００１９】
コンピュータ１１００は、通信インターフェース部（通信Ｉ／Ｆ部）１１０１、記憶部１１０２、およびプロセッサ１１０３を有する。
【００２０】
通信Ｉ／Ｆ部１１０１は、専用のデータ通信回路からなり、ネットワーク１３００を介して接続されたコンピュータ１２００などの各種装置との間でデータ通信を行う機能を有している。
【００２１】
記憶部１１０２は、ハードディスクやメモリなどの記憶装置からなり、プロセッサ１１０３での各種処理に必要な処理情報やプログラム１１０４を記憶する機能を有している。処理情報として、複数のプログラムセット１１０９がある。
【００２２】
それぞれのプログラムセット１１０９は、一方がアクティブ、他方がスタンバイとして動作する２つのプログラムのセットである。このプログラムセット１１０９によって、アクティブの仮想マシンとスタンバイの仮想マシンとから構成されるＦＴシステムが生成される。
【００２３】
プログラム１１０４は、プロセッサ１１０３に読み込まれて実行されることにより各種処理部を実現するプログラムであり、通信Ｉ／Ｆ部１１０１などのデータ入出力機能を介して外部装置（図示せず）やコンピュータ可読記憶媒体（図示せず）から予め読み込まれて記憶部１１０２に保存される。
【００２４】
プロセッサ１１０３は、ＣＰＵなどのマイクロプロセッサとその周辺回路を有し、記憶部１１０２からプログラム１１０４を読み込んで実行することにより、上記ハードウェアとプログラム１１０４とを協働させて各種処理部を実現する機能を有している。プロセッサ１１０３で実現される主な処理部として、配置パターン決定部１１０５とプログラム配置部１１０６と切替パターン決定部１１０７と切替部１１０８とがある。
【００２５】
配置パターン決定部１１０５は、複数のプログラムセット１１０９を、複数のコンピュータ１２００に配置する配置パターンを決定する機能を有する。配置パターン決定部１１０５は、配置パターンの決定では、同じプログラムセット１１０９の２つのプログラムが同じコンピュータ１２００に配置されないようにする。また配置パターン決定部１１０５は、配置パターンの決定では、複数のコンピュータ１２００それぞれの処理負荷と、複数のコンピュータ１２００間の通信負荷との少なくとも一方を考慮して配置パターンを決定する。勿論、処理負荷や通信負荷以外の各種の情報を考慮して配置パターンを決定してもよい。
【００２６】
プログラム配置部１１０６は、配置パターン決定部１１０５によって決定された配置パターンに従って、複数のコンピュータ１２００に複数のプログラムセット１１０９を配置する機能を有する。すなわち、プログラム配置部１１０６は、或るプログラムセット１１０９を構成するアクティブ側のプログラムを、その配置先であるコンピュータ１２００にネットワーク１３００を通じて送信して当該コンピュータ１２００上にアクティブ側の仮想マシンを生成する。また、プログラム配置部１１０６は、或るプログラムセット１１０９を構成するスタンバイ側のプログラムを、その配置先であるコンピュータ１２００にネットワーク１３００を通じて送信して当該コンピュータ１２００上にスタンバイ側の仮想マシンを生成する。
【００２７】
切替パターン決定部１１０７は、何れかのコンピュータ１２００に障害が発生してフェイルオーバーが行われた場合、フェイルオーバーが行われていない残りのプログラムセット１１０９の２つのプログラムのアクティブとスタンバイとを切り替える切替パターンを生成する機能を有する。切替パターン決定部１１０７は、切替パターンの生成では、フェイルオーバー後の、複数のコンピュータ１２００それぞれの処理負荷と複数のコンピュータ１２００間の通信負荷との少なくとも一方を考慮して、切替パターンを決定する。勿論、処理負荷や通信負荷以外の各種の情報を考慮して切替パターンを決定してもよい。
【００２８】
切替部１１０８は、切替パターン決定部１１０７によって決定された切替パターンに従って、上記フェイルオーバーが行われていないプログラムセット１１０９の２つのプログラムのアクティブとスタンバイの切り替えを行う機能を有する。すなわち、切替部１１０８は、或るプログラムセット１１０９のアクティブ側のプログラムが配置されているコンピュータ１２００に対してネットワーク１３００を通じてスタンバイへの変更を指令すると同時に、そのプログラムセット１１０９を構成するスタンバイ側のプログラムが配置されているコンピュータ１２００に対してネットワーク１３００を通じてアクティブへの変更を指令する。
【００２９】
コンピュータ１２００は、パーソナルコンピュータ等の情報処理装置（物理マシン）であり、複数の仮想マシンを稼働させる機能を有する。コンピュータ１２００は、コンピュータ１１００と同様に、通信Ｉ／Ｆ部、記憶部、プロセッサにより構成される。
【００３０】
またコンピュータ１１００およびコンピュータ１２００は、キーボードやマウスなどの操作入力装置や、ＬＣＤやＰＤＰなどの画面表示装置を有していてよい。
【００３１】
図２は本実施形態にかかるコンピュータシステムが実行するプログラム配置方法の手順を示すフローチャートである。以下、図１および図２を参照して本実施形態の動作を説明する。
【００３２】
まず、コンピュータ１１００の配置パターン決定部１１０５は、複数のプログラムセット１１０９を複数のコンピュータ１２００に配置する配置パターンを決定する（ステップＳ１００１）。このとき配置パターン決定部１１０５は、同じプログラムセットのアクティブとスタンバイの２つのプログラムがそれぞれ異なるコンピュータ１２００に配置されるような配置パターンを決定する。また、配置パターン決定部１１０５は、複数のコンピュータ１２００の処理負荷とコンピュータ１２００間の通信負荷との少なくとも一方を考慮して配置パターンを決定する。例えば、配置パターン決定部１１０５は、全てのコンピュータ１２００が同じ性能を有する場合、それぞれのコンピュータ１２００の処理負荷（稼働するプログラムによる負荷の合計）がほぼ等しくなり、また任意の２つのコンピュータ１２００間の通信負荷（一方の上で稼働するアクティブおよびスタンバイのプログラムから他方の上で稼働する対となるスタンバイおよびアクティブへの通信量およびその反対方向の通信量）がほぼ均等になるような配置パターンを決定する。これらの処理負荷や通信負荷は、予め計測して記憶部１１０２に記憶されたデータを使用しても良いし、複数のコンピュータ１２００を使用して実際に計測したデータを使用しても良い。
【００３３】
次に、コンピュータ１１００のプログラム配置部１１０６は、上記決定した配置パターンに従って、複数のコンピュータ１２００に複数のプログラムセット１１０９を配置する（ステップＳ１００２）。これにより、複数のコンピュータ１２００上に、それぞれがアクティブとスタンバイの２つの仮想マシンのセットであるＦＴシステムが複数生成され、動作を開始することになる。
【００３４】
その後、複数のコンピュータ１２００の何れかに障害が発生し、その上で稼働しているアクティブの仮想マシンの動作が停止すると、フェイルオーバーが行われ、動作を停止した仮想マシンの処理をスタンバイ側の仮想マシンが引継いで実行する。このように今までスタンバイとして動作していた仮想マシンがアクティブとして動作するため、新たにアクティブとなった仮想マシンが配置されているコンピュータ１２００の処理負荷がフェイルオーバー前に比べて増大する。また、障害の発生したコンピュータ１２００上のプログラムと通信を行っていた他のコンピュータ１２００の通信負荷が、フェイルオーバー前に比べて低下する。この結果、そのままでは処理負荷や通信負荷のバランスが崩れるままになり、システム全体の実行効率が低下することになる。
【００３５】
そこで本実施形態では、フェイルオーバーが行われた場合、速やかに以下のような処理を実行する。
【００３６】
まずコンピュータ１１００の切替パターン決定部１１０７は、フェイルオーバーが行われた場合、フェイルオーバーが行われていない残りのプログラムセット１１０９の２つのプログラムのアクティブとスタンバイとを切り替える切替パターンを決定する（ステップＳ１００３）。この切替パターンの決定では、切替パターン決定部１１０７は、フェイルオーバー後の複数のコンピュータ１２００それぞれの処理負荷とコンピュータ１２００間の通信負荷との少なくとも一方を考慮して、切替パターンを決定する。例えば切替パターン決定部１１０７は、すべてのコンピュータ１２００の性能が同じである場合、それぞれのコンピュータ１２００の処理負荷（稼働するプログラムによる負荷の合計）がほぼ等しくなり、また任意の２つのコンピュータ１２００間の通信負荷（一方の上で稼働するアクティブおよびスタンバイのプログラムから他方の上で稼働する対となるスタンバイおよびアクティブへの通信量およびその反対方向の通信量）がほぼ均等になるような切替パターンを決定する。これらの処理負荷や通信負荷は、予め計測して記憶部１１０２に記憶されたデータを使用しても良いし、複数の第２のコンピュータ１２００を使用して実際に計測したデータを使用しても良い。
【００３７】
次にコンピュータ１１００の切替部１１０８は、上記決定した切替パターンに従って、フェイルオーバーが行われていないプログラムセット１１０９の２つのプログラムのアクティブとスタンバイの切り替えを行う（ステップＳ１００４）。通常、アクティブとスタンバイの切り替えは一秒以下という短い時間で高速に行うことが可能である。これにより、業務処理に影響を与えずに、処理負荷や通信負荷のバランスを改善し、システム全体の実行効率を高めることが可能である。
【００３８】
次に簡略化した例を用いて本実施形態の効果を説明する。
【００３９】
図３は、プログラム配置部１１０６によって、同じ性能を有する４台のコンピュータ１２００上に、合計８種類のプログラムセットを配置したパターンの一例を示す。
【００４０】
図３を参照すると、コンピュータ１２００−１には、第１乃至第３のプログラムセットのアクティブのプログラムＡ１〜Ａ３と、第６のプログラムセットのスタンバイのプログラムＳ６とが配置されている。また、コンピュータ１２００−２には、第１乃至第３のプログラムセットのスタンバイのプログラムＳ１〜Ｓ３と、第４、第７、第８のプログラムセットのアクティブのプログラムＡ４、Ａ７、Ａ８とが配置されている。また、コンピュータ１２００−３には、第４、第７のプログラムセットのスタンバイのプログラムＳ４、Ｓ７と、第５のプログラムセットのアクティブのプログラムＡ５とが配置されている。また、コンピュータ１２００−４には、第５、第８のプログラムセットのスタンバイのプログラムＳ５、Ｓ８と、第６のプログラムセットのアクティブのプログラムＡ６とが配置されている。
【００４１】
図３におけるプログラムの箇所に付記した数値は、そのプログラムの処理負荷の値（単位は例えばＭＩＰＳ）を示す。また、コンピュータ１２０の箇所に付記した数値は、そのコンピュータ上に配置されたプログラムの処理負荷の合計値を示す。図３に示す配置パターンでは、コンピュータ１２００−１の処理負荷は９１、コンピュータ１２００−２の処理負荷は９３、コンピュータ１２００−３、１２００−４の処理負荷は共に９２であり、４台のコンピュータ１２００の処理負荷はほぼ等しくなっている。
【００４２】
図４は、コンピュータ１２００−１に障害が発生して、フェイルオーバーが行われた直後の各プログラムの状態と処理負荷の値を示している。コンピュータ１２００−２上の第１乃至第３のプログラムセットのプログラムがフェイルオーバーによってスタンバイからアクティブに切り替わっている。この結果、コンピュータ１２００−２の処理負荷の合計は９３から１８０に増大している。
【００４３】
図５は、切替パターン決定部１１０７によって決定された切替パターンに従って切替部１１０８がフェイルオーバーしていないプログラムセットのアクティブとスタンバイの切り替えを行った後の各プログラムの状態と処理負荷の値を示している。図５の例では、第７および第８の２つのプログラムセットについて、アクティブとスタンバイの切り替えを行っている。この結果、コンピュータ１２００−２の処理負荷は１８０から１２２に減少し、コンピュータ１２００−３と１２００−４の処理負荷は９２から１２１に上昇している。その結果、３台のコンピュータ１２００の処理負荷がほぼ等しくなっている。
【００４４】
以上の例では、処理負荷を考慮して配置パターンおよび切替パターンを決定したが、コンピュータ１２００間の通信負荷を考慮して配置パターンおよび切替パターンを決定する構成や、処理負荷と通信負荷の双方を考慮して配置パターンおよび切替パターンを決定する構成であっても同様の作用効果が得られることは明らかである。
【００４５】
本実施形態は以下のような各種の付加変更が可能である。
【００４６】
配置パターン決定部１１０５は、配置パターンの決定では、配置パターンの複数の候補のそれぞれについて、配置後の各コンピュータ１２００の処理負荷とコンピュータ１２００間の通信負荷との少なくとも一方の負荷の分散の程度を表す指標値を算出し、この算出した指標値に基づいて上記複数の候補の中から配置パターンを決定してよい。
【００４７】
あるいは配置パターン決定部１１０５は、配置パターンの決定では、配置パターンの複数の候補のそれぞれについて、配置後の各コンピュータ１２００の処理負荷とコンピュータ１２００間の通信負荷との少なくとも一方の負荷の分散の程度を表す指標値と、何れかのコンピュータ１２００に障害が発生してフェイルオーバーが起きた時点でフェイルオーバーが行われていない残りのプログラムセット１１０９の２つのプログラムのアクティブとスタンバイとを切り替えることによって期待される、コンピュータ１２００の処理負荷とコンピュータ１２００間の通信負荷との少なくとも一方の負荷の分散の程度を表す指標値とを算出し、この２種類の指標値に基づいて、上記配置パターンの複数の候補の中から配置パターンを決定して良い。
【００４８】
また切替パターン決定部１１０７は、切替パターンの決定では、切替パターンの複数の候補のそれぞれについて、切り替え後のコンピュータ１２００の処理負荷とコンピュータ１２００間の通信負荷との少なくとも一方の負荷の分散の程度を表す指標値を算出し、この指標値に基づいて上記複数の候補の中から切替パターンを決定してよい。
【００４９】
[第２の実施形態]
[本実施形態の概要]
高速チェックポイント方式によりＦＴ化された仮想マシンのセットをプログラム・オブジェクトのセットとして捉えると、このプログラムセットには以下のような特徴がある。
（ａ）二重化を構成するプログラムセットの間の依存関係は大きいが、別々の物理マシンに配置する必要がある。したがって、プログラムセットの間で高速に通信を行えることが重要である。
（ｂ）プログラムセットの間で負荷が非対称である。アクティブ側のプログラムの方がスタンバイのプログラムより負荷が大きい。
（ｃ）プログラムセットの間で通信が非対称である。アクティブ側のプログラムからスタンバイ側のプログラムへの通信量が大きい。
（ｄ）物理マシンが故障した場合、フェイルオーバー（スタンバイからアクティブへの切り替え）を、一秒以下という短い時間で高速に行うことができる。
（ｅ）物理マシンが故障していない場合でも、指示により、アクティブとスタンバイの切り替えを一秒以下という短い時間で高速に行うことができる。
【００５０】
本実施形態は、上記のようなプログラムセットの特徴を考慮して構成される。本実施形態では、複数の物理マシンに対して、アクティブとスタンバイを高速に切り替えることができる複数のプログラムセットを配置する場合、物理マシンの処理負荷および物理マシンの間のネットワーク通信負荷を分散し、全体の実行効率を上げることを可能にする。また、１つの物理マシンが使用不可能になってフェイルオーバーが起きた場合、複数のプログラムセットのアクティブとスタンバイとを切り替えて、負荷を再び分散し、全体の実行効率を上げることを可能にする。
【００５１】
より具体的には、管理部は、物理マシンの処理能力測定部および通信速度測定部にそれぞれ指示をだし、物理マシンの処理能力および物理マシンの間の通信速度を測定する。また、プログラムセットをそれぞれ物理マシンに配置し、プログラムの処理負荷およびプログラムセットの間の通信量を測定する。そして、複数のプログラムセットを複数の物理マシンに配置する場合、管理部は、それぞれの配置パターンについて、処理負荷分散のレーティングおよびネットワーク負荷分散のレーティングを計算し、負荷が平衡するように最適な配置を選択し、実行する。また、ある物理マシンが使用不可能になってフェイルオーバーが起こり、複数のプログラムセットのアクティブとスタンバイとを切り替える場合、管理部は、それぞれの切替パターンについて、処理負荷分散のレーティングおよびネットワーク負荷分散のレーティングを再計算し、負荷が平衡するように最適な切替を選択し、実行する。
【００５２】
[本実施形態の構成]
図６および図１１を参照すると、本実施形態は、複数の物理マシン１０１〜１０５と、それらを接続するネットワーク１１５、それらの上で動作するプログラムセット４０１〜４０２からなる。１つの物理マシンは管理部１０６を備えている。他の物理マシンは、通信速度測定部１０７〜１１０と、処理能力測定部１１１〜１１４とを備えている。
【００５３】
管理部１０６は、他の物理マシンに対して、通信速度や処理能力の測定指示を行う。また、プログラムセットの最適な配置を計算し、実際に他の物理マシンに対してプログラムセットの配置指示を行う。また、ある物理マシンが使用不可能になった場合、プログラムセットに対してアクティブとスタンバイの切替指示を行う。
【００５４】
通信速度測定部１０７〜１１０は、物理マシンの間のネットワーク通信速度を測定する。また、プログラムセットの間の個別のネットワーク通信量を測定する。
【００５５】
処理能力測定部１１１〜１１４は、物理マシンのプロセッサやＩ／Ｏ等の処理能力を測定する。また、プログラムの個別の処理負荷を測定する。
【００５６】
プログラムセット４０１〜４０２は、アクティブプログラムとスタンバイプログラムからなる。アクティブとスタンバイは別々の物理マシン上で動作する。アクティブが動作していた物理マシンが使用不可能になった場合、スタンバイをアクティブに切り替えて、処理を継続することができる。また、物理マシンが使用不可能になっていない場合でも、管理部１０６はプログラムセットに切替指示を出し、アクティブとスタンバイを切り替えることができる。
【００５７】
物理マシン、通信速度測定部、処理能力測定部の数は４つである必要はなく、任意の数に拡張できる。また、プログラムセットの数は２つである必要はなく、任意の数に拡張できる。
【００５８】
[本実施形態の動作]
図６乃至図１０を参照して、本実施形態において、物理マシンの処理能力及び物理マシンの間のネットワーク通信速度を事前に測定する動作について説明する。
【００５９】
管理部１０６は、物理マシンを１つ選択し、物理マシンの処理能力測定部に対して測定指示を出す（ステップ２０１）。処理能力測定部は、物理マシンの処理能力を測定し（ステップ２０２）、結果を通知する（ステップ２０３）。管理部１０６は結果を保存する（ステップ２０４）。管理部１０６は、全ての物理マシンに対して測定を繰り返し（ステップ２０５）、物理マシンの処理能力を図８に例示するようにテーブルに記録する。
【００６０】
また管理部１０６は、物理マシンを１つ選択し、物理マシンの通信速度測定部に対して測定指示を出す（ステップ３０１）。通信速度測定部は、他の全ての物理マシンとの通信速度を測定し（ステップ３０２、ステップ３０３）、結果を通知する（ステップ３０４）。管理部１０６は結果を保存する（ステップ３０５）。管理部１０６は、全ての物理マシンに対して測定を繰り返し（ステップ３０６）、物理マシンの間の通信速度を図１０に例示するようにテーブルに記録する。
【００６１】
次に、図１１乃至図１４を参照して、本実施形態において、プログラムの処理負荷及びプログラムセットの間のネットワーク通信量を事前に測定する動作について説明する。
【００６２】
管理部１０６は、プログラムセットを１つ選択し、アクティブプログラムとスタンバイプログラムとを別々の物理マシン１０２、１０３に配置する（ステップ５０１）。処理能力測定部１０７、１０８は、プログラムの処理負荷を計測する（ステップ５０２）。通信速度測定部は、アクティブからスタンバイへの通信量、スタンバイからアクティブへの通信量を測定する（ステップ５０３）。全てのプログラムセット４０１〜４０２について測定を繰り返し（ステップ５０４）、図１３および図１４に例示するようにテーブルに記録する。
【００６３】
次に、図１５および図１６を参照して、本実施形態において、複数のプログラムセットを複数の物理マシンに配置する動作について説明する。
【００６４】
管理部１０６は、複数のプログラムセットを複数の物理マシンに配置するパターンを１つ選択する（ステップ６０１）。そのパターンについて、処理負荷分散のレーティングを計算する（ステップ６０２）。具体的には、まず、各々の物理マシンについて、次式により使用率を求める。
（物理マシンの使用率）＝（プログラムの処理負荷の合計）／（物理マシンの処理能力）
【００６５】
さらに、上記求めた物理マシンの使用率を用いて、各々の物理マシンについて、次式により処理使用率の分散を求める。
（処理使用率の分散）＝各々の（物理マシンの使用率）の分散
【００６６】
さらに、上記求めた物理マシンの処理使用率の分散を用いて、各々の物理マシンについて、次式により処理負荷分散のレーティングを求める。
（処理負荷分散のレーティング）＝１／（処理使用率の分散）
【００６７】
次に管理部１０６は、ネットワーク負荷分散のレーティングを計算する（ステップ６０３）。具体的には、まず、物理マシンの間の上下の通信の各々について、次式によりネットワーク使用率を求める。
（ネットワーク使用率）＝（プログラムの通信量の合計）／（ネットワークの通信速度）
【００６８】
さらに、上記求めたネットワーク使用率を用いて、ネットワーク使用率の分散を次式により求める。
（ネットワーク使用率の分散）＝各々の（ネットワーク使用率）の分散
【００６９】
さらに、上記求めたネットワーク使用率の分散を用いて、次式によりネットワーク負荷分散のレーティングを求める。
（ネットワーク負荷分散のレーティング）＝１／（ネットワーク使用率の分散）
【００７０】
そして、管理部１０６は、上記求めた処理負荷分散のレーティングとネットワーク負荷分散のレーティングと重み係数とを用いて、次式により総合のレーティングを計算する（ステップ６０４）。
（総合のレーティング）＝（処理負荷分散のレーティング）×（マシン処理の重み係数）＋（ネットワーク負荷分散のレーティング）×（ネットワークの重み係数）
【００７１】
ここで、マシン処理の重み係数およびネットワークの重み係数は、予め定数として定めていてもよいし、変数として装置の使用者が指定できるようにしてもよい。図１６は重み係数の一例である。
【００７２】
管理部１０６は、全ての配置パターンについてレーティングの計算を繰り返す（ステップ６０５）。物理マシンの数をｍ、プログラムセットの数をｎとすると、配置パターンの数は、（ｍ×（ｍ−１））nである。管理部１０６は、最も総合レーティングの大きい配置パターンを選択し（ステップ６０６）、複数のプログラムセットを複数の物理マシンに配置する処理を実行する。
【００７３】
次に、図１７を参照して、ある物理マシンが使用不可能になった場合に、複数のプログラムセットのアクティブとスタンバイとを切り替える動作について説明する。
【００７４】
ある物理マシンが使用不可能になった場合、その物理マシンでアクティブプログラムが動作していたプログラムセットについてはフェイルオーバーが実行され、別の物理マシンで動作していたスタンバイプログラムがアクティブプログラムに切り替わる。そのため、処理負荷やネットワーク負荷に偏りが生じる。管理部１０６は、この偏りを是正するために以下の処理を行う。
【００７５】
管理部１０６は、複数のプログラムセットのアクティブとスタンバイとを切り替えるパターンを１つ選択する（ステップ７０１）。そのパターンについて、処理負荷分散のレーティングを計算し（ステップ７０２）、ネットワーク負荷分散のレーティングを計算し（ステップ７０３）、総合のレーティングを計算する（ステップ７０４）。計算の具体的な方法は、ステップ６０２〜６０４に準ずる。全ての切替パターンについてレーティングの計算を繰り返す（ステップ７０５）。切り替え可能なプログラムセットの数をｎとすると、切替パターンの数は、２nである。最も総合のレーティングの大きい切替パターンを選択し（ステップ７０６）、複数のプログラムセットの切替処理を実行する。
【００７６】
[本実施形態の効果]
第１の効果は、複数のプログラムセットを複数の物理マシンに配置する場合、処理およびネットワーク通信について負荷が分散され、全体の実行効率が上がることである。
【００７７】
その理由は、物理マシンの処理能力、物理マシンの間のネットワーク通信速度、プログラムセットの処理負荷、プログラムセットの間のネットワーク通信量を事前に測定し、プログラムセットの処理負荷およびネットワーク通信負荷が非対称であるという特徴を考慮し、配置パターン毎に負荷分散のレーティングを計算し、レーティング最大の配置パターンを選択するためである。
【００７８】
第２の効果は、複数のプログラムセットを配置する複数の物理マシンの性能が互いに相違している場合であっても、処理およびネットワーク通信について負荷が分散され、全体の実行効率が上がることである。その理由は、第１の効果の理由と同じである。
【００７９】
第３の効果は、複数のプログラムセットが複数の物理マシンに配置されている状態で１つの物理マシンが使用不可能になってフェイルオーバーが起きた場合でも、全体の実行効率の低下を防止することができることである。
【００８０】
その理由は、切替パターン毎に負荷分散のレーティングを計算し、レーティング最大の切替パターンを選択し、フェイルオーバーしていない１以上のプログラムセットのアクティブとスタンバイとを故意に切り替えて、負荷を再び分散させるためである。
【００８１】
[第３の実施形態]
本実施形態は、管理部１０６が複数のプログラムセットを複数の物理マシンに配置する場合、物理マシンが使用不可能になった場合の切替パターンについて予めシミュレートし、切替後の負荷分散を考慮して配置パターンを選択する点で、第２の実施形態と相違する。
【００８２】
図１８は本実施形態における配置パターンを選択する手順の一例を示すフローチャートである。以下、図１８を参照して本実施形態の動作を説明する。
【００８３】
管理部１０６は、複数のプログラムセットを複数の物理マシンに配置するパターンを１つ選択する（ステップ８０１）。処理負荷分散のレーティングを計算し（ステップ８０２）、ネットワーク負荷分散のレーティングを計算し（ステップ８０３）、切替前のレーティングを計算する（ステップ８０４）。計算の具体的な方法は、ステップ６０２〜６０４に準ずる。
【００８４】
次に、物理マシンを１つ選択し（ステップ８０５）、物理マシンが使用不可能になった場合を仮定し（ステップ８０６）、以下、切替をシミュレートする。管理部１０６は、複数のプログラムセットのアクティブとスタンバイとを切り替えるパターンを１つ選択する（ステップ８０７）。処理負荷分散のレーティングを計算し（ステップ８０８）、ネットワーク負荷分散のレーティングを計算し（ステップ８０９）、切替後のレーティングを計算する（ステップ８１０）。全ての切替パターンについてレーティングの計算を繰り返す（ステップ８１１）。この切替をシミュレートする動作は、ステップ７０１〜７０５に準ずる。そして、切替後のレーティングの最大値を計算する（ステップ８１２）。全ての物理マシンについて使用不可能になった場合をシミュレートする動作を繰り返し（ステップ８１３）、切替後のレーティングの最大値の平均値を計算する（ステップ８１４）。
【００８５】
次に、総合のレーティングを以下の式により計算する（ステップ８１５）。
（総合のレーティング）＝（切替前のレーティング）×（切替前の重み係数）＋（切替後のレーティングの最大値の平均値）×（切替前の重み係数）
【００８６】
ここで、切替前後の重み係数は、予め定数として定めていてもよいし、変数として装置の使用者が指定できるようにしてもよい。図１９は重み係数の一例である。
【００８７】
全ての配置パターンについてレーティングの計算を繰り返す（ステップ８１６）。そして、最も総合のレーティングの大きい配置パターンを選択し（ステップ８１７）、複数のプログラムセットを複数の物理マシンに配置する処理を実行する。
【００８８】
[本実施形態の効果]
本実施形態によれば、第２の実施形態と同様の効果が得られると共に、さらに、複数のプログラムセットを複数の物理マシンに配置する場合、１つの物理マシンが使用不可能になってフェイルオーバーが起きて複数のプログラムセットのアクティブとスタンバイとを切り替えたときに、処理およびネットワーク通信について負荷分散しやすい配置を予め選択できる、という効果が得られる。
【００８９】
その理由は、物理マシンが使用不可能になった場合の切替パターンについて予めシミュレートし、切替前のレーティングと切替後のレーティングから総合のレーティングを計算し、レーティング最大の配置パターンを選択するためである。
【符号の説明】
【００９０】
１１００…第１のコンピュータ
１１０１…通信Ｉ／Ｆ部
１１０２…記憶部
１１０３…プロセッサ
１１０４…プログラム
１１０５…配置パターン決定部
１１０６…プログラム配置部
１１０７…切替パターン決定部
１１０８…切替部
１１０９…プログラムセット
１２００…第２のコンピュータ
１３００…ネットワーク
【図１】
0006024148.tif 000002
【図２】
0006024148.tif 000003
【図３】
0006024148.tif 000004
【図４】
0006024148.tif 000005
【図５】
0006024148.tif 000006
【図６】
0006024148.tif 000007
【図７】
0006024148.tif 000008
【図８】
0006024148.tif 000009
【図９】
0006024148.tif 000010
【図１０】
0006024148.tif 000011
【図１１】
0006024148.tif 000012
【図１２】
0006024148.tif 000013
【図１３】
0006024148.tif 000014
【図１４】
0006024148.tif 000015
【図１５】
0006024148.tif 000016
【図１６】
0006024148.tif 000017
【図１７】
0006024148.tif 000018
【図１８】
0006024148.tif 000019
【図１９】
0006024148.tif 000020