(57)【要約】【課題】オートスケールサーバが停止し、復旧したときに仮想マシンの最新の情報を基に復旧すること。【解決手段】物理サーバ３０，４０は、複数の仮想マシンを実行可能である。オートスケールサーバ２０は、物理サーバ３０，４０における仮想マシンのスケールインおよびスケールアウトを行う。オートスケールサーバ監視装置１０は、オートスケールサーバ２０と定期的に通信し、オートスケールサーバ２０が管理する仮想マシンの情報を記憶する。オートスケールサーバ監視装置１０は、オートスケールサーバ２０が停止したことを検知すると、オートスケールサーバ２０の要求に応じて、仮想マシンの情報を送信する。【選択図】図１
2019185511.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンを実行可能な物理サーバと、
前記物理サーバにおける仮想マシンのスケールインおよびスケールアウトを行うオートスケールサーバと、
前記オートスケールサーバと定期的に通信し、前記オートスケールサーバが管理する前記仮想マシンの情報を記憶し、前記オートスケールサーバが停止したことを検知すると、前記オートスケールサーバの要求に応じて、前記仮想マシンの情報を送信するオートスケールサーバ監視装置と、
を有するクラスタシステム。
【請求項２】
前記オートスケールサーバ監視装置は、前記オートスケールサーバが停止している間に前記仮想マシンとの通信不可を検知し、前記オートスケールサーバが起動すると前記仮想マシンとの通信不可を示す情報を前記オートスケールサーバに送信する、
請求項１記載のクラスタシステム。
【請求項３】
前記オートスケールサーバは、前記仮想マシンの状態を示す状態情報を記憶し、前記オートスケールサーバ監視装置により送信された前記仮想マシンの情報に応じて前記状態情報を更新し、更新後の前記状態情報に基づいて前記スケールインおよび前記スケールアウトの制御を再開する、
請求項１記載のクラスタシステム。
【請求項４】
前記オートスケールサーバ監視装置は、前記仮想マシンとの通信不可を検知すると、前記仮想マシンが前記スケールインにより停止されたか否かの前記オートスケールサーバへの問い合わせに応じて、前記仮想マシンの異常を検知する、
請求項１記載のクラスタシステム。
【請求項５】
前記複数の仮想マシンは、前記オートスケールサーバによる前記スケールインおよび前記スケールアウトの制御の対象外である他の仮想マシンを含み、
前記オートスケールサーバ監視装置は、前記他の仮想マシンとの通信不可を検知すると、前記オートスケールサーバへの前記問い合わせを省略して、前記他の仮想マシンの異常を検知する、
請求項４記載のクラスタシステム。
【請求項６】
オートスケールサーバが管理する仮想マシンの情報を記憶する記憶部と、
前記オートスケールサーバと定期的に通信し、前記オートスケールサーバが停止したことを検知すると、前記オートスケールサーバの要求に応じて、前記仮想マシンの情報を送信する処理部と、
を有するオートスケールサーバ監視装置。
【請求項７】
オートスケールサーバと定期的に通信し、前記オートスケールサーバが管理する仮想マシンの情報を記憶し、
前記オートスケールサーバが停止したことを検知すると、前記オートスケールサーバの要求に応じて、前記仮想マシンの情報を送信する、
処理をコンピュータに実行させるオートスケールサーバ監視プログラム。
【請求項８】
コンピュータが、
オートスケールサーバと定期的に通信し、前記オートスケールサーバが管理する仮想マシンの情報を記憶し、
前記オートスケールサーバが停止したことを検知すると、前記オートスケールサーバの要求に応じて、前記仮想マシンの情報を送信する、
オートスケールサーバ監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はクラスタシステム、オートスケールサーバ監視装置、オートスケールサーバ監視プログラムおよびオートスケールサーバ監視方法に関する。
【背景技術】
【０００２】
情報処理の分野では、物理的なコンピュータ（物理マシンや物理ホストと呼ぶことがある）上で、複数の仮想的なコンピュータ（仮想マシンや仮想ホストと呼ぶことがある）を動作させる仮想化技術が利用されている。各仮想マシン上では、ＯＳ（Operating System）などのソフトウェアを実行できる。仮想化技術を利用する物理マシンは、複数の仮想マシンを管理するためのソフトウェアを実行する。例えば、ハイパーバイザと呼ばれるソフトウェアが、ＣＰＵ（Central Processing Unit）の処理能力やＲＡＭ（Random Access Memory）の記憶領域を、演算のリソースとして複数の仮想マシンに割り振ることがある。
【０００３】
ところで、情報処理システムでは、演算を行うマシン（仮想マシンや物理マシン）を増やしたり、減らしたりすることがある。例えば、マシンを増やすことをスケールアウトと言う。一方、マシンを減らすことをスケールインと言う。ここで、スケールアウトやスケールインを行うシステムの運用を支援する技術が考えられている。
【０００４】
例えば、自動スケールアウトおよび自動スケールインによるスケール用の待機サーバの正常動作を障害として誤通知することを防止する障害監視装置の提案がある。障害監視装置は、監視対象の各サーバが、常時稼動するのか、あるいは、スケールアウト時のみ稼動するのかを示すサーバ用途情報と各サーバが待機中であるか稼働中かを示す稼動状態情報を記憶する。障害監視装置は、監視システムが検知したイベントについて、イベント発生元のサーバのサーバ用途情報と稼動状態情報とを確認することで、イベントが障害により発生したか、自動スケールアウトおよび自動スケールインにより発生したかを判定する。
【０００５】
また、クラウド環境上で、オートスケール機能により自動的に台数が増減する仮想サーバによって構築される情報処理システムにおいて、ログの消失を回避してこれを監視可能にする基盤運用管理システムの提案もある。基盤運用管理システムでは、オートスケール機能の対象である仮想サーバが、当該仮想サーバに係るログのうち、リアルタイム監視が必要な所定のものをオートスケール機能の対象外の仮想サーバに転送する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−２５３２３１号公報
【特許文献２】特開２０１５−１８４８７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のように、オートスケール機能を有するオートスケールサーバを用いて、システムに属する仮想マシンの台数を自動的に増減させることが考えられる。しかし、オートスケールサーバは、障害などが原因で停止することがある。この場合、オートスケールサーバが停止している間に仮想マシンの起動状態の変化（例えば、起動していた仮想マシンが障害などで停止するなど）が生じ得る。すると、オートスケールサーバが復旧したときに、オートスケールサーバが保持する仮想マシンの稼動状態を示す情報が、実際の仮想マシンの稼動状態に対して不整合となる可能性がある。このような不整合は、オートスケールサーバが、復旧後にオートスケール機能を適切に実行できない要因になり得る。
【０００８】
１つの側面では、本発明は、オートスケールサーバが停止し、復旧したときに仮想マシンの最新の情報を基に復旧することができるクラスタシステム、オートスケールサーバ監視装置、オートスケールサーバ監視プログラムおよびオートスケールサーバ監視方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、クラスタシステムが提供される。クラスタシステムは、物理サーバとオートスケールサーバとオートスケールサーバ監視装置とを有する。物理サーバは、複数の仮想マシンを実行可能である。オートスケールサーバは、物理サーバにおける仮想マシンのスケールインおよびスケールアウトを行う。オートスケールサーバ監視装置は、オートスケールサーバと定期的に通信し、オートスケールサーバが管理する仮想マシンの情報を記憶し、オートスケールサーバが停止したことを検知すると、オートスケールサーバの要求に応じて、仮想マシンの情報を送信する。
【００１０】
また、１つの態様では、オートスケールサーバ監視装置が提供される。オートスケールサーバ監視装置は、記憶部と処理部とを有する。記憶部は、オートスケールサーバが管理する仮想マシンの情報を記憶する。処理部は、オートスケールサーバと定期的に通信し、オートスケールサーバが停止したことを検知すると、オートスケールサーバの要求に応じて、仮想マシンの情報を送信する。
【００１１】
また、１つの態様では、オートスケールサーバ監視プログラムが提供される。
また、１つの態様では、オートスケールサーバ監視方法が提供される。
【発明の効果】
【００１２】
１つの側面では、オートスケールサーバが停止し、復旧したときに仮想マシンの最新の情報を基に復旧することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態のクラスタシステムを示す図である。
【図２】第２の実施の形態のクラスタシステムの例を示す図である。
【図３】監視サーバのハードウェア例を示すブロック図である。
【図４】スケールアウトおよびスケールインの例を示す図である。
【図５】クラスタシステムの機能例を示すブロック図である。
【図６】オートスケールサーバ管理テーブルの例を示す図である。
【図７】ＶＭ管理テーブルの例を示す図である。
【図８】オートスケールグループテーブルの例を示す図である。
【図９】ＶＭテーブルの例を示す図である。
【図１０】オートスケールポリシーテーブルの例を示す図である。
【図１１】ＶＭ監視の例を示すフローチャートである。
【図１２】オートスケールサーバ監視の例を示すフローチャートである。
【図１３】監視サーバによる監視の例を示す図である。
【図１４】監視の比較例を示す図である。
【図１５】第３の実施の形態の仮想マシンの例を示す図である。
【図１６】ＶＭ管理テーブルの例を示す図である。
【図１７】ＶＭ監視の例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１５】
図１は、第１の実施の形態のクラスタシステムを示す図である。
クラスタシステム１は、オートスケールサーバ監視装置１０、オートスケールサーバ２０および物理サーバ３０，４０を有する。オートスケールサーバ監視装置１０、オートスケールサーバ２０および物理サーバ３０，４０は、ネットワーク５０に接続されている。
【００１６】
物理サーバ３０，４０は、複数の仮想マシンを実行可能である。例えば、物理サーバ３０は、仮想マシン３１，３２を実行可能である。物理サーバ４０は、仮想マシン４１，４２を実行可能である。仮想マシンは、スケールアウトやスケールインが可能である。
【００１７】
オートスケールサーバ２０は、各仮想マシンの負荷を収集し、各仮想マシンの負荷に基づいて、仮想マシンのスケールアウトやスケールインを制御する。例えば、オートスケールサーバ２０は、仮想マシン３２が停止しているときに、仮想マシン３１の負荷が第１の閾値を超えた状態が継続すると、物理サーバ３０上で仮想マシン３２を起動させ、仮想マシン３１だけでなく仮想マシン３２にも負荷を分散させる。また、オートスケールサーバ２０は、仮想マシン３１，３２が稼動しているときに、仮想マシン３１，３２の負荷（平均の負荷または一方の負荷）が第２の閾値（第２の閾値＜第１の閾値）を下回ると、仮想マシン３２を停止させ、リソース使用量を減少させる。オートスケールサーバ２０は、物理サーバ４０における仮想マシン４１，４２のスケールアウトやスケールインも同様に制御する。負荷の判定を行う仮想マシンのグループは、運用に応じて決定される（例えば、仮想マシン３１，４１，４２の負荷に応じて、仮想マシン３２を起動させてもよい）。
【００１８】
オートスケールサーバ監視装置１０は、オートスケールサーバ２０を監視する。また、オートスケールサーバ監視装置１０は、オートスケール対象である仮想マシン３１，３２，４１，４２を監視する。具体的には、オートスケールサーバ監視装置１０は、稼働中の仮想マシンと定期的に通信することで、該当の仮想マシンの死活監視を行う。オートスケールサーバ監視装置１０は、何れかの仮想マシンの異常を検知すると、異常を検知したことをユーザに通知する。
【００１９】
ただし、オートスケール対象の仮想マシンは、オートスケールサーバ２０によるオートスケール制御によって起動されたり、停止されたりする。このため、オートスケールサーバ監視装置１０は、オートスケール対象の仮想マシンの何れかで定期通信の途絶を検知したとき、当該仮想マシンがスケールインによって停止されたか否かを、オートスケールサーバ２０に問い合わせる。定期通信の途絶がスケールインに起因するのであれば、当該途絶は異常ではない。一方、定期通信の途絶がスケールインに起因するのでなければ、当該途絶は異常とみなされる。ただし、オートスケールサーバ２０が異常などにより停止することもある。オートスケールサーバ監視装置１０は、オートスケールサーバ２０の稼動状態を監視し、オートスケールサーバ２０の復旧を支援する機能を提供する。
【００２０】
オートスケールサーバ監視装置１０は、記憶部１１および処理部１２を有する。また、オートスケールサーバ２０は、記憶部２１および処理部２２を有する。
記憶部１１，２１は、ＲＡＭなどの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部１２，２２は、ＣＰＵ、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。処理部１２，２２はプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００２１】
記憶部１１は、オートスケールサーバ２０が管理する仮想マシン３１，３２，４１，４２の情報を記憶する。例えば、記憶部１１は、テーブル６１を記憶する。テーブル６１は、オートスケールサーバ監視装置１０による仮想マシン３１，３２，４１，４２それぞれの死活監視の状況（定期通信の成否）を示す。ここで、仮想マシン３１の識別情報は「ＶＭ（Virtual Machine）１」である。仮想マシン３２の識別情報は「ＶＭ２」である。仮想マシン４１の識別情報は「ＶＭ３」である。仮想マシン４２の識別情報は「ＶＭ４」である。また、テーブル６１では、（例えば、最新の定期通信のタイミングにおいて）該当の仮想マシンと定期通信を行えたことを「ＯＮ」、定期通信を行えなかったことを「ＯＦＦ」で表す。
【００２２】
ここで、記憶部２１も、仮想マシン３１，３２，４１，４２の状態を示す情報を記憶する。例えば、記憶部２１は、テーブル７１を記憶する。テーブル７１は、記憶部２１のうち、不揮発性の記憶領域に格納される。テーブル７１は、オートスケール制御に用いられる情報であり、仮想マシン３１，３２，４１，４２それぞれの状態を示す状態情報である。例えば、「ｎｏｒｍａｌ」は正常稼働中を示す。「ｓｃａｌｅ−ｉｎ」は、スケールインにより停止されていることを示す。「ｅｒｒｏｒ」は、異常により停止されていることを示す。処理部２２は、仮想マシン３１，３２，４１，４２の稼動状態の収集やオートスケールの結果に応じて、テーブル７１の各仮想マシンの状態を更新する。
【００２３】
処理部１２は、オートスケール対象の仮想マシンを示す情報をオートスケールサーバ２０から取得してテーブル６１を生成し、オートスケールサーバ監視装置１０による死活監視の対象の仮想マシンを決定してもよい。
【００２４】
処理部１２は、オートスケールサーバ２０と定期的に通信し、オートスケールサーバ２０が停止したことを検知すると、オートスケールサーバ２０の要求に応じて、仮想マシンの情報をオートスケールサーバ２０に送信する。
【００２５】
まず、オートスケールサーバ２０が稼働中の場合を考える（ステップＳＴ１）。このとき、処理部１２は、仮想マシン３１，４１，４２との定期通信を行えたが、仮想マシン３２との定期通信を行えなかった（通信不可になった）とする。処理部１２は、仮想マシン３１，４１，４２（「ＶＭ１，ＶＭ３，ＶＭ４」）について「ＯＮ」、仮想マシン３２（「ＶＭ２」）について、「ＯＦＦ」をテーブル６１に記録する。処理部１２は、仮想マシン３２のオートスケールの状況を、オートスケールサーバ２０に問い合わせる。
【００２６】
このとき、オートスケールサーバ２０では、テーブル７１に示されるように、仮想マシン３１，４１，４２については「ｎｏｒｍａｌ」であり、仮想マシン３２については「ｓｃａｌｅ−ｉｎ」と管理されている。すなわち、仮想マシン３２は、スケールインによって停止された状態である。このため、処理部２２は、仮想マシン３２がスケールインによって停止された状態である旨をオートスケールサーバ監視装置１０に応答する。
【００２７】
処理部１２は、オートスケールサーバ２０による応答を受信し、当該応答により、仮想マシン３２がスケールインによって停止された状態であることを検知する。このため、処理部１２は、仮想マシン３２との通信不可（定期通信の途絶）を異常とみなさない。処理部１２は、仮想マシン３１，４１，４２に対する死活監視を継続する。
【００２８】
次に、オートスケールサーバ２０が異常などによって停止中の場合を考える（ステップＳＴ２）。処理部１２は、オートスケールサーバ２０との定期通信を正常に行えなかった場合に、オートスケールサーバ２０が停止中であることを検知する。処理部１２は、オートスケールサーバ２０が停止中である間も、稼働中の仮想マシン３１，４１，４２と定期的に通信し、仮想マシン３１，４１，４２の死活監視を継続する。そして、処理部１２は、仮想マシン４２（「ＶＭ４」）との通信不可（定期通信の途絶）を検出する。すると、処理部１２は、テーブル６１をテーブル６２に更新する。具体的には、処理部１２は、「ＶＭ４」を「ＯＮ」から「ＯＦＦ」に変更する。
【００２９】
次に、オートスケールサーバ２０が停止中の状態から復旧した場合を考える（ステップＳＴ３）。処理部１２は、オートスケールサーバ２０からの要求を受け付けると、オートスケールサーバ２０が起動したことを検知する。オートスケールサーバ２０からの要求は、仮想マシンの情報の要求でもよいし、オートスケールサーバ監視装置１０に対する定期通信に関する所定の要求（あるいは応答）でもよい。すると、処理部１２は、テーブル６２に基づいて、オートスケールサーバ２０が停止していた間に、仮想マシン４２との定期通信の途絶を検知したことをオートスケールサーバ２０に送信する。仮想マシン４２との定期通信の途絶は、オートスケールサーバ２０の停止中に発生している。このため、当該途絶は、仮想マシン４２のスケールインに起因するものではない。したがって、処理部２２は、オートスケールサーバ監視装置１０から仮想マシン４２の定期通信の途絶の通知を受信すると、テーブル７１をテーブル７２に更新する。具体的には、処理部２２は、「ＶＭ４」を「ｎｏｒｍａｌ」から「ｅｒｒｏｒ」に変更する。
【００３０】
処理部１２は、仮想マシン４２が「ｅｒｒｏｒ」として管理されていることをオートスケールサーバ２０から取得して、仮想マシン４２の異常をユーザに通知してもよい。
なお、ステップＳＴ３では、処理部１２は、テーブル６２における各仮想マシンの情報を、オートスケールサーバ２０に送信してもよい。処理部２２は、テーブル６２の仮想マシンの情報と、テーブル７２の仮想マシンの情報とを照合することで、何れの仮想マシンで異常が生じているかを判定できる。例えば、処理部２２は、テーブル６２で「ＯＦＦ」かつテーブル７１で「ｎｏｒｍａｌ」である仮想マシンを異常（「ｅｒｒｏｒ」）と判定し、それ以外の仮想マシンを異常なし（「ｎｏｒｍａｌ」や「ｓｃａｌｅ−ｉｎ」など）と判定してもよい。
【００３１】
オートスケールサーバ監視装置１０によれば、オートスケールサーバ２０と定期的に通信され、オートスケールサーバ２０が管理する仮想マシンの情報が記憶される。オートスケールサーバ２０が停止したことが検知されると、オートスケールサーバ２０の要求に応じて、仮想マシンの情報が送信される。
【００３２】
これにより、オートスケールサーバ２０が停止し、復旧したときに仮想マシンの最新の情報を基に復旧することができる。
ここで、オートスケールサーバ監視装置１０の機能を用いない場合を考える。この場合、オートスケールサーバ２０の停止中に、仮に、仮想マシン４１が異常などによって停止しても、オートスケールサーバ２０が起動した後に、オートスケールサーバ２０は当該仮想マシンの停止を把握できていない。オートスケールサーバ２０は、テーブル７１によって各仮想マシンのオートスケール制御を行うことになる。すなわち、オートスケールサーバ２０が管理する仮想マシンの情報と、現実の仮想マシンの稼働状況とに不整合が生じた状態になる。この場合、オートスケールサーバ２０は、仮想マシン４１，４２に対する適切なオートスケール制御を行えない。また、オートスケールサーバ２０が仮想マシン４２の停止を検知するまでに、比較的長い時間（例えば、１０分から数十分など）を要することもある。この間に、仮想マシン４１の負荷が高まると、オートスケール制御を適切に行えずに、仮想マシン４１で実行されるアプリケーションなどの処理に影響を及ぼす可能性もある。
【００３３】
そこで、オートスケールサーバ監視装置１０により、オートスケールサーバ２０の停止中の仮想マシンの情報を取得し、オートスケールサーバ２０の復旧時に、当該仮想マシンの情報をオートスケールサーバ２０に提供する。これにより、オートスケールサーバ２０において管理されている仮想マシンの情報と、現実の仮想マシンの稼働状況との不整合を解消した状態で、オートスケールサーバ２０を復旧させることができる。このため、オートスケールサーバ２０は、復旧した直後から、オートスケール制御を正常に再開することができる。その結果、各仮想マシンの負荷をオートスケール制御により適切に分散でき、各仮想マシンで実行されるアプリケーションなどの処理への影響を抑えられる。
【００３４】
なお、クラスタシステム１の例では、オートスケールサーバ監視装置１０による監視の対象を、オートスケールサーバ２０およびオートスケールサーバ２０によるオートスケール対象の仮想マシン（仮想マシン３１，３２，４１，４２）とした。一方、オートスケールサーバ監視装置１０による監視対象の仮想マシンはこれに限られない。オートスケールサーバ監視装置１０は、オートスケール対象の仮想マシンおよびオートスケール対象ではない仮想マシンの死活監視を行ってもよい。オートスケールサーバ監視装置１０は、オートスケール対象ではない仮想マシンについて定期通信の途絶を検出すると、オートスケールサーバ２０への問い合わせを省略して、当該仮想マシンで異常が発生したことをユーザに通知することができる。
【００３５】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態のクラスタシステムの例を示す図である。
【００３６】
第２の実施の形態のクラスタシステムは、ユーザに対して仮想マシンの利用環境を提供する情報処理システムである。第２の実施の形態のクラスタシステムは、監視サーバ１００、オートスケールサーバ２００および物理サーバ３００，４００を有する。
【００３７】
監視サーバ１００、オートスケールサーバ２００および物理サーバ３００，４００は、ネットワーク６０に接続される。ネットワーク６０は、例えば、データセンタなどに敷設されたＬＡＮ（Local Area Network）である。ネットワーク６０は、ネットワーク７０に接続される。ネットワーク７０は、例えば、インターネットやＷＡＮ（Wide Area Network）である。ネットワーク７０には、ユーザ端末５００，６００が接続される。
【００３８】
監視サーバ１００は、オートスケールサーバ２００の監視を行うサーバコンピュータである。また、監視サーバ１００は、物理サーバ３００，４００で動作する仮想マシンの監視を行う。監視サーバ１００は、第１の実施の形態のオートスケールサーバ監視装置１０の一例である。
【００３９】
オートスケールサーバ２００は、物理サーバ３００，４００で動作する仮想マシンのオートスケール（自動スケール）制御を行うサーバコンピュータである。オートスケールサーバ２００は、第１の実施の形態のオートスケールサーバ２０の一例である。
【００４０】
物理サーバ３００，４００は、複数の仮想マシンを実行可能なサーバコンピュータである。例えば、物理サーバ３００は、ハイパーバイザと呼ばれるソフトウェアを実行し、物理サーバ３００におけるＣＰＵやＲＡＭなどのハードウェアリソースを物理サーバ３００上の仮想マシンに割り振る。同様に、物理サーバ４００は、ハイパーバイザを実行し、物理サーバ４００におけるＣＰＵやＲＡＭなどのハードウェアリソースを物理サーバ４００上の仮想マシンに割り振る。物理サーバ３００，４００は、第１の実施の形態の物理サーバ３０，４０の一例である。
【００４１】
ユーザ端末５００，６００は、ユーザが利用するクライアントコンピュータである。ユーザ端末５００，６００は、物理サーバ３００，４００上の仮想マシンで実行されるアプリケーションに対する処理要求を送信する。また、ユーザ端末５００，６００は、仮想マシンによる処理結果を受信する。
【００４２】
第２の実施の形態のクラスタシステムでは、ユーザにより円滑に仮想マシンを利用できるように、オートスケールサーバ２００による仮想マシンのオートスケール制御が行われる。ただし、オートスケールサーバ２００が、異常などによって停止することもある。そこで、監視サーバ１００により、オートスケールサーバ２００が停止した場合でも、オートスケール制御への影響を低減する機能を提供する。以下の説明では、仮想マシンを、ＶＭと略記することがある。また、オートスケールを、ＡＳ（Auto Scaling）と略記することがある。
【００４３】
図３は、監視サーバのハードウェア例を示すブロック図である。
監視サーバ１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６およびＮＩＣ（Network Interface Card）１０７を有する。なお、ＣＰＵ１０１は、第１の実施の形態の処理部１２に対応する。ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１に対応する。
【００４４】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを含んでもよい。また、監視サーバ１００は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００４５】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、監視サーバ１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００４６】
ＨＤＤ１０３は、ＯＳやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、監視サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４７】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、監視サーバ１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを用いることができる。
【００４８】
入力信号処理部１０５は、監視サーバ１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、監視サーバ１００に、複数の種類の入力デバイスが接続されていてもよい。
【００４９】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００５０】
媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体１１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１１３やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００５１】
ＮＩＣ１０７は、ネットワーク６０に接続され、ネットワーク６０を介して他のコンピュータと通信を行うインタフェースである。ＮＩＣ１０７は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
【００５２】
図４は、スケールアウトおよびスケールインの例を示す図である。
図４（Ａ）は、スケールアウトを例示する。物理サーバ３００が仮想マシン３１０，３２０を実行し、物理サーバ４００が仮想マシン４１０，４２０を実行している場合を考える。例えば、仮想マシン３１０，３２０，４１０，４２０は、オートスケールの対象となる仮想マシンの１つのグループに属し、ユーザが利用するアプリケーション（あるいはアプリケーション群）の処理を分散して実行する。
【００５３】
オートスケールサーバ２００は、仮想マシン３１０，３２０，４１０，４２０の負荷を定期的に収集する。例えば、オートスケールサーバ２００は、仮想マシン３１０，３２０，４１０，４２０の平均の負荷が所定期間継続して第１閾値を上回った場合、仮想マシン３１０，３２０，４１０，４２０の負荷が高まっていると判断し、仮想マシンのスケールアウトを行う。例えば、オートスケールサーバ２００は、物理サーバ３００により仮想マシン３３０を起動させ、仮想マシン３１０，３２０，４１０，４２０の負荷の一部を、仮想マシン３３０に分散させる。
【００５４】
図４（Ｂ）は、スケールインを例示する。物理サーバ３００が仮想マシン３１０，３２０を実行し、物理サーバ４００が仮想マシン４１０，４２０を実行している場合を考える。オートスケールサーバ２００は、仮想マシン３１０，３２０，４１０，４２０の負荷を定期的に収集する。例えば、オートスケールサーバ２００は、仮想マシン３１０，３２０，４１０，４２０の平均の負荷が所定期間継続して第２閾値を下回った場合、仮想マシン３１０，３２０，４１０，４２０の負荷が低くなっていると判断し、仮想マシンのスケールインを行う。ここで、第２閾値は、第１閾値よりも小さい。例えば、オートスケールサーバ２００は、物理サーバ４００における仮想マシン４２０を停止させ、仮想マシン４２０に割り当てていたリソースを解放する。
【００５５】
図５は、クラスタシステムの機能例を示すブロック図である。
監視サーバ１００は、記憶部１２０および監視部１３０を有する。記憶部１２０は、ＲＡＭ１０２やＨＤＤ１０３の記憶領域により実現される。監視部１３０は、ＣＰＵ１０１がＲＡＭ１０２に記憶されたプログラムを実行することで実現される。
【００５６】
記憶部１２０は、オートスケールサーバ管理テーブルおよびＶＭ管理テーブルを記憶する。オートスケールサーバ管理テーブルは、オートスケールサーバ２００の稼動状態を示す情報である。ＶＭ管理テーブルは、各仮想マシンに対する定期通信の成否を示す情報である。
【００５７】
監視部１３０は、物理サーバ３００，４００上の各仮想マシンおよびオートスケールサーバ２００の監視を行う。監視部１３０は、ＶＭ監視部１３１およびＡＳサーバ連携部１３２を有する。
【００５８】
ＶＭ監視部１３１は、物理サーバ３００，４００上の各仮想マシンと定期的に通信し、各仮想マシンとの疎通確認を行う。例えば、ＶＭ監視部１３１は、各仮想マシンから疎通確認用のパケットを受信することで、疎通確認を行う。疎通確認用のパケットは、例えば、ＩＣＭＰ（Internet Control Message Protocol）のエコー要求でもよいし、ＶＭ監視部１３１により送信されたエコー要求に対する仮想マシンからのエコー応答でもよい。あるいは、ＶＭ監視部１３１は、ＳＮＭＰ（Simple Network Management Protocol）などのその他のプロトコルを用いて疎通確認を行ってもよい。ＶＭ監視部１３１による監視対象の仮想マシンは、何れもオートスケールの制御対象の仮想マシンである。ＶＭ監視部１３１は、監視対象とする仮想マシンを、オートスケールサーバ２００に問い合わせてもよい。
【００５９】
ＡＳサーバ連携部１３２は、オートスケールサーバ（ＡＳサーバ）２００と連携する。ＡＳサーバ連携部１３２は、オートスケールサーバ２００と定期的に通信し、オートスケールサーバ２００の死活監視を行う。例えば、ＡＳサーバ連携部１３２は、オートスケールサーバ２００に対して、定期的に仮想マシンの状態を問い合わせることで、オートスケールサーバ２００の死活監視を行ってもよい。問い合わせに対してオートスケールサーバ２００から応答があれば、オートスケールサーバ２００は稼動している。一方、問い合わせに対してオートスケールサーバ２００から応答がなければ、オートスケールサーバ２００は停止している。
【００６０】
オートスケールサーバ２００が稼動している場合、ＡＳサーバ連携部１３２は、監視対象の仮想マシンのうち、疎通確認を行えなかった仮想マシンがスケールインにより停止されたか否かを、オートスケールサーバ２００に問い合わせる。該当の仮想マシンがスケールインにより停止された場合、ＡＳサーバ連携部１３２は、疎通確認を行えなかったことを異常としない。該当の仮想マシンがスケールインにより停止されていない場合、ＡＳサーバ連携部１３２は、疎通確認を行えなかった仮想マシンを異常と判断し、システム管理者に通知する。例えば、ＡＳサーバ連携部１３２は、該当の仮想マシンの異常発生を示す画面をディスプレイ１１１に表示させてもよい。または、ＡＳサーバ連携部１３２は、該当の仮想マシンの異常発生を示すメッセージを、ネットワーク５０に接続された、システム管理者が使用する端末装置（図示を省略している）に送信してもよい。
【００６１】
オートスケールサーバ２００が停止している場合、ＡＳサーバ連携部１３２は、疎通確認を行えなかった仮想マシンがスケールインにより停止されたか否かを、オートスケールサーバ２００に問い合わせることはできない。このため、ＡＳサーバ連携部１３２は、問い合わせを保留する。その後、オートスケールサーバ２００が起動すると、疎通確認の再開により、ＡＳサーバ連携部１３２は、オートスケールサーバ２００の起動を検知する。そして、ＡＳサーバ連携部１３２は、オートスケールサーバ２００の停止中に、疎通確認が途絶えた仮想マシンが存在する場合、当該仮想マシンの情報を、オートスケールサーバ２００に送信する。
【００６２】
オートスケールサーバ２００は、記憶部２１０およびＡＳ制御部２２０を有する。記憶部２１０は、オートスケールサーバ２００のＲＡＭやＨＤＤの記憶領域を用いて実現される。ＡＳ制御部２２０は、オートスケールサーバ２００のＣＰＵがオートスケールサーバ２００のＲＡＭに記憶されたプログラムを実行することで実現される。
【００６３】
記憶部２１０は、オートスケール制御に用いられる情報を記憶する。具体的には、記憶部２１０は、オートスケールグループテーブル、ＶＭテーブルおよびオートスケールポリシーテーブルを記憶する。
【００６４】
オートスケールグループテーブルは、オートスケールグループを示す情報である。オートスケールグループは、オートスケール制御の対象となる仮想マシンのグループである。１つのオートスケールグループに属する仮想マシンの負荷に応じて、当該オートスケールグループに属する仮想マシンのオートスケール制御が行われる。ＶＭテーブルは、オートスケール制御の対象の仮想マシンを示す情報である。ＶＭテーブルは、仮想マシンの状態を含む。仮想マシンの状態には、（１）仮想マシンが正常に稼動している、（２）仮想マシンに異常あり、（３）スケールインにより縮退している（スケールインのために停止している）、（４）スケールアウトのために起動中、などが考えられる。オートスケールポリシーテーブルは、オートスケール制御のポリシー（スケールインやスケールアウトを行うための条件）を示す情報である。
【００６５】
ここで、オートスケールグループテーブル、ＶＭテーブルおよびオートスケールポリシーテーブルは、記憶部２１０のうち、不揮発性の記憶領域（例えば、ＨＤＤの記憶領域）に格納される。また、オートスケールグループテーブル、ＶＭテーブルおよびオートスケールポリシーテーブルは、オートスケール制御に用いられる場合、複製されて、記憶部２１０のうち、揮発性の記憶領域（例えば、ＲＡＭの記憶領域）に一時的に格納されることもある。この場合、揮発性の記憶領域に保持されているときの各テーブルの更新内容は、ＡＳ制御部２２０により不揮発性の記憶領域に格納された複製元の各テーブルにも反映される。
【００６６】
ＡＳ制御部２２０は、物理サーバ３００，４００上の仮想マシン（例えば、仮想マシン３１０，３２０，４１０，４２０を含む複数の仮想マシン）のオートスケール制御（ＡＳ制御）を行う。ＡＳ制御部２２０は、仮想マシンの負荷の情報を定期的に収集する。例えば、ＡＳ制御部２２０は、ＳＮＭＰなどのプロトコルを用いて仮想マシンの負荷を収集してもよい。ＡＳ制御部２２０は、収集した負荷と、当該仮想マシンが属するオートスケールグループのオートスケールポリシーとに基づいて、スケールインやスケールアウトを物理サーバ３００，４００に指示する。
【００６７】
ここで、障害などによりオートスケールサーバ２００が停止することがある。オートスケールサーバ２００の停止中は、ＡＳ制御部２２０によるオートスケール制御も停止する。ＡＳ制御部２２０は、オートスケールサーバ２００の停止後、オートスケールサーバ２００が起動した際に、オートスケールサーバ２００が停止していた間の疎通確認に応じた仮想マシンの情報を監視サーバ１００から取得する。ＡＳ制御部２２０は、取得した仮想マシンの情報に基づいて、記憶部２１０に記憶されたＶＭテーブルにおける仮想マシンの状態を更新する。ＡＳ制御部２２０は、更新後のＶＭテーブルに基づいて、仮想マシンの負荷の収集を再開し、オートスケール制御を再開する。
【００６８】
図６は、オートスケールサーバ管理テーブルの例を示す図である。
オートスケールサーバ管理テーブル１２１は、記憶部１２０に格納される。オートスケールサーバ管理テーブル１２１は、オートスケールサーバＩＤ（IDentifier）および稼働中フラグの項目を含む。
【００６９】
オートスケールサーバＩＤの項目には、オートスケールサーバ２００の識別情報（オートスケールサーバＩＤ）が登録される。オートスケールサーバ２００のオートスケールサーバＩＤは、例えば、「装置Ａ」である。稼働中フラグの項目には、オートスケールサーバ２００が稼働しているか否かを示す稼働中フラグが登録される。稼働中フラグ「Ｔｒｕｅ」は稼働していることを示す。稼働中フラグ「Ｆａｌｓｅ」は稼動していない（すなわち、停止している）ことを示す。例えば、オートスケールサーバ管理テーブル１２１には、オートスケールサーバＩＤが「装置Ａ」、稼働中フラグが「Ｔｒｕｅ」というレコードが登録される。
【００７０】
図７は、ＶＭ管理テーブルの例を示す図である。
ＶＭ管理テーブル１２２は、記憶部１２０に格納される。ＶＭ管理テーブル１２２は、ＶＭ名、通信用ＩＰ（Internet Protocol）アドレス、オートスケールＶＭ動作中フラグおよびオートスケール情報更新フラグの項目を含む。
【００７１】
ＶＭ名の項目には、仮想マシンの名称（仮想マシンのＩＤ）が登録される。通信用ＩＰアドレスの項目には、仮想マシンのＩＰアドレスが登録される。オートスケールＶＭ動作中フラグの項目には、死活監視の成否（すなわち、該当の仮想マシンが動作しているか否か）を示すオートスケールＶＭ動作中フラグが登録される。オートスケールＶＭ動作中フラグ「Ｔｒｕｅ」は、該当の仮想マシンとの定期通信が正常に行われた（すなわち、該当の仮想マシンが動作している）ことを示す。オートスケールＶＭ動作中フラグ「Ｆａｌｓｅ」は、該当の仮想マシンとの定期通信が正常に行われなかった（すなわち、該当の仮想マシンが停止している）ことを示す。オートスケール情報更新フラグの項目には、オートスケールサーバ２００の停止中に、該当の仮想マシンに関してオートスケールＶＭ動作中フラグの更新が発生したか否かを示すオートスケール情報更新フラグが登録される。オートスケール情報更新フラグ「Ｔｒｕｅ」は、当該更新が発生したことを示す。オートスケール情報更新フラグ「Ｆａｌｓｅ」は、当該更新が発生しなかったことを示す。オートスケール情報更新フラグの初期値は「Ｆａｌｓｅ」である。
【００７２】
例えば、ＶＭ管理テーブル１２２には、ＶＭ名が「Ｇｒｐ１＿ＶＭ１」、通信用ＩＰアドレスが「１００．１０．９９．１」、オートスケールＶＭ動作中フラグが「Ｔｒｕｅ」、オートスケール情報更新フラグが「Ｆａｌｓｅ」というレコードが登録される。このレコードは、ＶＭ名「Ｇｒｐ１＿ＶＭ１」の仮想マシンの通信用ＩＰアドレスが「１００．１０．９９．１」であることを示す。また、当該仮想マシンが稼動しており、オートスケールサーバ２００の停止中におけるオートスケールＶＭ動作中フラグの更新が発生していないことを示す。
【００７３】
また、例えば、ＶＭ管理テーブル１２２には、ＶＭ名が「ＳａｍｐｌｅＶＭ」、通信用ＩＰアドレスが「２００．２００．２００．２」、オートスケールＶＭ動作中フラグが「Ｆａｌｓｅ」、オートスケール情報更新フラグが「Ｔｒｕｅ」というレコードが登録される。このレコードは、ＶＭ名「ＳａｍｐｌｅＶＭ」の仮想マシンの通信用ＩＰアドレスが「２００．２００．２００．２」であることを示す。また、当該仮想マシンが停止しており、オートスケールサーバ２００の停止中におけるオートスケールＶＭ動作中フラグの更新が発生したことを示す。
【００７４】
図８は、オートスケールグループテーブルの例を示す図である。
オートスケールグループテーブル２１１は、記憶部２１０に格納される。オートスケールグループテーブル２１１は、オートスケールグループＩＤ、利用可能ＣＩＤＲ（Classless Inter-Domain Routing）、オートスケールポリシーＩＤ、最小台数および最大台数の項目を含む。
【００７５】
オートスケールグループＩＤの項目には、オートスケールグループの識別情報（オートスケールグループＩＤ）が登録される。利用可能ＣＩＤＲの項目には、利用可能なＣＩＤＲが登録される。オートスケールポリシーＩＤの項目には、該当のオートスケールグループに対して適用されるオートスケールポリシーの識別情報（オートスケールポリシーＩＤ）が登録される。ここで、オートスケールポリシーＩＤに対応するオートスケールポリシーの具体的な内容は、後述するオートスケールポリシーテーブルに予め登録されている。最小台数の項目には、該当のオートスケールグループにおける仮想マシンの最小数が登録される。最大台数の項目には、該当のオートスケールグループにおける仮想マシンの最大数が登録される。
【００７６】
例えば、オートスケールグループテーブル２１１には、オートスケールグループＩＤが「グループ１」、利用可能ＣＩＤＲが「１００．１０．９９．０／２４」、オートスケールポリシーＩＤが「ルール１，３」、最小台数が「１」、最大台数が「１０」というレコードが登録される。このレコードは、オートスケールグループＩＤ「グループ１」のオートスケールグループでは、利用可能ＣＩＤＲが「１００．１０．９９．０／２４」であり、オートスケールポリシーＩＤ「ルール１，３」のオートスケールポリシーが適用され、仮想マシンの最小数が１個、最大数が１０個であることを示す。
【００７７】
図９は、ＶＭテーブルの例を示す図である。
ＶＭテーブル２１２は、記憶部２１０に格納される。ＶＭテーブル２１２は、ＶＭ名、オートスケールグループＩＤ、通信用ＩＰアドレスおよびＶＭ状態の項目を含む。
【００７８】
ＶＭ名の項目には、仮想マシンのＶＭ名が登録される。オートスケールグループＩＤの項目には、当該仮想マシンが属するオートスケールグループのオートスケールグループＩＤが登録される。通信用ＩＰアドレスの項目には、仮想マシンのＩＰアドレスが登録される。ＶＭ状態の項目には、仮想マシンの状態が登録される。前述のように、仮想マシンの状態には、仮想マシンが正常に稼動している、仮想マシンに異常あり（ＥＲＲＯＲ）、スケールインにより縮退している（スケールインのために停止している）、スケールアウトのために起動中、などが考えられる。
【００７９】
例えば、ＶＭテーブル２１２には、ＶＭ名が「Ｇｒｐ１＿ＶＭ１」、オートスケールグループＩＤが「グループ１」、通信用ＩＰアドレスが「１００．１０．９９．１」、ＶＭ状態が「正常」というレコードが登録される。このレコードは、ＶＭ名「Ｇｒｐ１＿ＶＭ１」の仮想マシンがオートスケールグループＩＤ「グループ１」のオートスケールグループに属し、当該仮想マシンのＩＰアドレスが「１００．１０．９９．１」であり、当該仮想マシンが正常に稼動していることを示す。
【００８０】
また、例えば、ＶＭテーブル２１２には、ＶＭ名が「Ｇｒｐ１＿ＶＭ２」、オートスケールグループＩＤが「グループ１」、通信用ＩＰアドレスが「１００．１０．９９．２」、ＶＭ状態が「ＥＲＲＯＲ」というレコードが登録される。このレコードは、ＶＭ名「Ｇｒｐ１＿ＶＭ２」の仮想マシンがオートスケールグループＩＤ「グループ１」のオートスケールグループに属し、当該仮想マシンのＩＰアドレスが「１００．１０．９９．２」であり、当該仮想マシンで異常が発生していることを示す。
【００８１】
また、例えば、ＶＭテーブル２１２には、ＶＭ名が「Ｇｒｐ１＿ＶＭ３」、オートスケールグループＩＤが「グループ１」、通信用ＩＰアドレスが「１００．１０．９９．３」、ＶＭ状態が「スケールイン縮退」というレコードが登録される。このレコードは、ＶＭ名「Ｇｒｐ１＿ＶＭ３」の仮想マシンがオートスケールグループＩＤ「グループ１」のオートスケールグループに属し、当該仮想マシンのＩＰアドレスが「１００．１０．９９．３」であり、スケールインにより停止していることを示す。
【００８２】
また、例えば、ＶＭテーブル２１２には、ＶＭ名が「Ｇｒｐ２＿ＶＭ３」、オートスケールグループＩＤが「グループ２」、通信用ＩＰアドレスが「１００．１１．０．３２」、ＶＭ状態が「スケールアウト中」というレコードが登録される。このレコードは、ＶＭ名「Ｇｒｐ２＿ＶＭ３」の仮想マシンがオートスケールグループＩＤ「グループ２」のオートスケールグループに属し、当該仮想マシンのＩＰアドレスが「１００．１１．０．３２」であり、スケールアウトのため起動中であることを示す。
【００８３】
図１０は、オートスケールポリシーテーブルの例を示す図である。オートスケールポリシーテーブル２１３は、記憶部２１０に格納される。オートスケールポリシーテーブル２１３は、オートスケールポリシーＩＤ、トリガーおよびトリガー詳細の項目を含む。
【００８４】
オートスケールポリシーＩＤの項目には、オートスケールポリシーの識別情報（オートスケールポリシーＩＤ）が登録される。トリガーの項目には、オートスケール制御のトリガーとなる監視対象のリソース（仮想マシンにより認識される論理的なリソースでもよい）が登録される。トリガー詳細の項目には、オートスケール制御のトリガーに関する条件が登録される。
【００８５】
例えば、オートスケールポリシーテーブル２１３には、オートスケールポリシーＩＤが「ルール１」、トリガーが「ＣＰＵ使用率」、トリガー詳細が「１分毎のＣＰＵ平均使用率を取得し、連続５回８０％を上回るとスケールアウト」というレコードが登録される。
【００８６】
このレコードは、オートスケールポリシーＩＤ「ルール１」のオートスケールポリシーでは、仮想マシンのＣＰＵ使用率をトリガーとしており、１分毎のＣＰＵ平均使用率が連続５回８０％を上回った場合に、スケールアウトを行うことを示す。ここで、「１分毎のＣＰＵ平均使用率」は、該当のオートスケールグループに属する複数の仮想マシンに関する平均でもよいし、該当のオートスケールグループに属する仮想マシン単位の平均でもよい。後者の場合、該当のオートスケールグループに属する少なくとも何れかの仮想マシンにおいて、１分毎のＣＰＵ平均使用率が連続５回８０％を上回るとスケールアウトを行う。なお、所定時間毎の「ＣＰＵ平均使用率」（あるいは、「メモリ平均使用率」）の考え方は、他のオートスケールポリシーについても同様である。
【００８７】
また、例えば、オートスケールポリシーテーブル２１３には、オートスケールポリシーＩＤが「ルール２」、トリガーが「メモリ使用率」、トリガー詳細が「５分毎のメモリ平均使用率を取得し、連続３回９５％を上回るとスケールアウト」というレコードが登録される。このレコードは、オートスケールポリシーＩＤ「ルール２」のオートスケールポリシーでは、仮想マシンのメモリ使用率をトリガーとしており、５分毎のメモリ平均使用率が連続３回９５％を上回った場合に、スケールアウトを行うことを示す。
【００８８】
また、例えば、オートスケールポリシーテーブル２１３には、オートスケールポリシーＩＤが「ルール３」、トリガーが「ＣＰＵ使用率」、トリガー詳細が「１分毎のＣＰＵ平均使用率を取得し、連続５回１０％を下回るとスケールイン」というレコードが登録される。このレコードは、オートスケールポリシーＩＤ「ルール３」のオートスケールポリシーでは、仮想マシンのＣＰＵ使用率をトリガーとしており、１分毎のＣＰＵ平均使用率が連続５回１０％を下回った場合に、スケールインを行うことを示す。
【００８９】
また、例えば、オートスケールポリシーテーブル２１３には、オートスケールポリシーＩＤが「ルール４」、トリガーが「メモリ使用率」、トリガー詳細が「５分毎のメモリ平均使用率を取得し、連続５回３０％を下回るとスケールイン」というレコードが登録される。このレコードは、オートスケールポリシーＩＤ「ルール４」のオートスケールポリシーでは、仮想マシンのメモリ使用率をトリガーとしており、５分毎のメモリ平均使用率が連続５回３０％を下回った場合に、スケールインを行うことを示す。
【００９０】
次に、上記のクラスタシステムにおける監視サーバ１００の処理手順を説明する。
図１１は、ＶＭ監視の例を示すフローチャートである。
ＶＭ監視部１３１は下記の処理を定期的に実行する。実行の周期は、運用に応じて定められる。周期は、数秒から数十秒程度でもよいし、１分から数分程度でもよい。
【００９１】
（Ｓ１０）ＶＭ監視部１３１は、監視対象の仮想マシン（監視対象ＶＭ）の監視情報を収集する。例えば、ＶＭ監視部１３１は、監視対象の仮想マシンから死活監視用の所定のパケットを受信することで、監視情報を収集する。
【００９２】
（Ｓ１１）ＶＭ監視部１３１は、監視対象ＶＭの動作状況を更新する。具体的には、ＶＭ監視部１３１は、ステップＳ１０の監視情報の収集結果に基づいて、ＶＭ管理テーブル１２２を更新する。すなわち、ＶＭ監視部１３１は、監視情報を収集できた（死活監視用のパケットを受信できた）仮想マシンのオートスケールＶＭ動作中フラグを「Ｔｒｕｅ」に設定する。なお、元々「Ｔｒｕｅ」の場合はそのままでよい。
【００９３】
（Ｓ１２）ＶＭ監視部１３１は、前回の監視情報の収集時から所定時間内に監視情報が届いていない監視対象ＶＭがあるか否かを判定する。所定時間とは、当該監視の周期、または、当該周期に比較的短い時間（当該周期よりも短い時間）を加算した時間である。所定時間内に監視情報が届いていない監視対象ＶＭがある場合、ステップＳ１３に処理が進む。所定時間内に監視情報が届いていない監視対象ＶＭがない場合、ステップＳ１６に処理が進む。
【００９４】
（Ｓ１３）ＶＭ監視部１３１は、ステップＳ１２で前回の監視情報の収集時から所定時間内に監視情報が届いていないと判断された監視対象ＶＭについて、ＶＭ管理テーブル１２２のオートスケールＶＭ動作中フラグを「Ｆａｌｓｅ」に設定する。なお、元々「Ｆａｌｓｅ」の場合はそのままでよい。
【００９５】
（Ｓ１４）ＶＭ監視部１３１は、オートスケールサーバ管理テーブル１２１を参照して、稼働中フラグが「Ｔｒｕｅ」であるか否かを判定する。稼働中フラグが「Ｔｒｕｅ」の場合、ステップＳ１６に処理が進む。稼働中フラグが「Ｆａｌｓｅ」の場合、ステップＳ１５に処理が進む。
【００９６】
（Ｓ１５）ＶＭ監視部１３１は、ステップＳ１３でオートスケールＶＭ動作中フラグを「Ｆａｌｓｅ」に設定した監視対象ＶＭについて、ＶＭ管理テーブル１２２のオートスケール情報更新フラグを「Ｔｒｕｅ」に設定する。
【００９７】
（Ｓ１６）ＶＭ監視部１３１は、監視を継続するか否を判定する。監視を継続する場合、監視の周期の分だけ待機して、ステップＳ１０に処理が進む。監視を継続しない場合、ＶＭ監視の処理が終了する。例えば、ＶＭ監視部１３１は、システム管理者による監視の終了の入力を受け付けた場合、監視を継続しないと判定し、それ以外の場合に監視を継続すると判定する。
【００９８】
図１２は、オートスケールサーバ監視の例を示すフローチャートである。
ＡＳサーバ連携部１３２は下記の処理を定期的に実行する。実行の周期は、運用に応じて定められる。周期は、数秒から数十秒程度でもよいし、１分から数分程度でもよい。
【００９９】
（Ｓ２０）ＡＳサーバ連携部１３２は、オートスケールサーバ２００のＶＭ状態を参照する。具体的には、ＡＳサーバ連携部１３２は、オートスケールサーバ２００に、ＶＭテーブル２１２における各仮想マシンのＶＭ状態を問い合わせる。
【０１００】
（Ｓ２１）ＡＳサーバ連携部１３２は、オートスケールサーバ２００が動作中であるか否かを判定する。オートスケールサーバ２００が動作中である場合、ステップＳ２３に処理が進む。オートスケールサーバ２００が動作中でない、すなわち、停止している場合、ステップＳ２２に処理が進む。例えば、ＡＳサーバ連携部１３２は、ステップＳ２０の問い合わせに対するオートスケールサーバ２００の応答がある場合、オートスケールサーバ２００が動作中であると判定する。また、ＡＳサーバ連携部１３２は、ステップＳ２０の問い合わせに対するオートスケールサーバ２００の応答がない場合、オートスケールサーバ２００が停止していると判定する。
【０１０１】
（Ｓ２２）ＡＳサーバ連携部１３２は、オートスケールサーバ管理テーブル１２１の稼働中フラグを「Ｆａｌｓｅ」に設定する。元々「Ｆａｌｓｅ」の場合はそのままでよい。そして、ステップＳ２７に処理が進む。
【０１０２】
（Ｓ２３）ＡＳサーバ連携部１３２は、オートスケールサーバ管理テーブル１２１の稼働中フラグを「Ｔｒｕｅ」に設定する。元々「Ｔｒｕｅ」の場合はそのままでよい。
（Ｓ２４）ＡＳサーバ連携部１３２は、ＶＭ管理テーブル１２２のオートスケール情報更新フラグが「Ｔｒｕｅ」である監視対象ＶＭがあるか否かを判定する。オートスケール情報更新フラグが「Ｔｒｕｅ」である監視対象ＶＭがある場合、ステップＳ２５に処理が進む。オートスケール情報更新フラグが「Ｔｒｕｅ」である監視対象ＶＭがない場合、ステップＳ２７に処理が進む。
【０１０３】
（Ｓ２５）ＡＳサーバ連携部１３２は、オートスケールサーバ２００が管理するＶＭ状態を、監視サーバ１００のＶＭ管理テーブル１２２におけるオートスケールＶＭ動作中フラグを基に更新する。具体的には、ＡＳサーバ連携部１３２は、オートスケール情報更新フラグが「Ｔｒｕｅ」である監視対象ＶＭの情報（オートスケールＶＭ動作中フラグ「Ｆａｌｓｅ」を示す情報）を、オートスケールサーバ２００に送信する。
【０１０４】
（Ｓ２６）ＡＳサーバ連携部１３２は、ＶＭ管理テーブル１２２におけるオートスケール情報更新フラグを「Ｆａｌｓｅ」に設定する。具体的には、ＡＳサーバ連携部１３２は、ステップＳ２４でオートスケール情報更新フラグが「Ｔｒｕｅ」であった箇所を、「Ｆａｌｓｅ」に変更する。
【０１０５】
（Ｓ２７）ＡＳサーバ連携部１３２は、オートスケールサーバ２００から取得した各監視対象ＶＭのＶＭ状態に応じて異常の発生を検知し、システム管理者に異常を通知する。例えば、ＡＳサーバ連携部１３２は、ＶＭ管理テーブル１２２においてオートスケールＶＭ動作中フラグが「Ｆａｌｓｅ」で、かつ、オートスケールサーバ２００に確認したＶＭ状態が「スケールインによる停止」でない仮想マシンを異常と判定する。例えば、ＡＳサーバ連携部１３２は、ディスプレイ１１１に異常を示す画像を表示させてもよい。あるいは、ＡＳサーバ連携部１３２は、システム管理者が利用する端末装置に、異常を示すメッセージを送信してもよい。なお、ステップＳ２２を経由してステップＳ２７が実行される場合、ＡＳサーバ連携部１３２はオートスケールサーバ２００からＶＭ状態を取得できないことになる。この場合、ＡＳサーバ連携部１３２は、ステップＳ２７をスキップしてステップＳ２８を実行してもよい。あるいは、ＡＳサーバ連携部１３２は、例外的にオートスケールサーバ２００への確認なしに、オートスケールＶＭ動作中フラグが「Ｆａｌｓｅ」の仮想マシンを異常とみなして、システム管理者に当該仮想マシンの異常を通知してもよい。
【０１０６】
（Ｓ２８）ＡＳサーバ連携部１３２は、監視を継続するか否かを判定する。監視を継続する場合、監視の周期の分だけ待機して、ステップＳ２０に処理が進む。監視を継続しない場合、オートスケールサーバ監視の処理が終了する。例えば、ＡＳサーバ連携部１３２は、システム管理者による監視の終了の入力を受け付けた場合、監視を継続しないと判定し、それ以外の場合に監視を継続すると判定する。
【０１０７】
次に、監視サーバ１００による監視の例を説明する。
図１３は、監視サーバによる監視の例を示す図である。
説明を簡単にするため、ＶＭ管理テーブル１２２の各項目のうち、ＶＭ名とＶＭ動作中フラグ（オートスケールＶＭ動作中フラグに相当）とを図示し、他の項目の図示を省略する。また、ＶＭテーブル２１２の各項目のうち、ＶＭ名とＶＭ状態とを図示し、他の項目の図示を省略する。また、ＶＭ名「ＶＭ１」の仮想マシンを、仮想マシンＶＭ１のように表記する（他のＶＭ名についても同様に表記する）。
【０１０８】
まず、オートスケールサーバ２００が稼働中の場合を考える（ステップＳＴ１１）。ＶＭ管理テーブル１２２によれば、この段階において、仮想マシンＶＭ１のＶＭ動作中フラグは「Ｔｒｕｅ」である。仮想マシンＶＭ２のＶＭ動作中フラグは「Ｆａｌｓｅ」である。仮想マシンＶＭ３のＶＭ動作中フラグは「Ｔｒｕｅ」である。仮想マシンＶＭ４のＶＭ動作中フラグは「Ｔｒｕｅ」である。一方、ＶＭテーブル２１２によれば、仮想マシンＶＭ１のＶＭ状態は「正常」である。仮想マシンＶＭ２のＶＭ状態は「スケールイン縮退」である。仮想マシンＶＭ３のＶＭ状態は「正常」である。仮想マシンＶＭ４のＶＭ状態は「正常」である。ＶＭ管理テーブル１２２で、仮想マシンＶＭ２のＶＭ動作中フラグが「Ｆａｌｓｅ」なので、監視サーバ１００は、オートスケールサーバ２００に仮想マシンＶＭ２のＶＭ状態を問い合わせる。オートスケールサーバ２００は、ＶＭテーブル２１２に基づいて、仮想マシンＶＭ２のＶＭ状態「スケールイン縮退」を監視サーバ１００に応答する。この場合、監視サーバ１００は、仮想マシンＶＭ２から監視情報を取得できなかったことを異常とみなさない。
【０１０９】
その後、オートスケールサーバ２００が停止した場合を考える（ステップＳＴ１２）。ＶＭテーブル２１２は、オートスケールサーバ２００が停止している間も、オートスケールサーバ２００の不揮発性の記憶装置（例えば、ＨＤＤ）に保持されている。監視サーバ１００は、オートスケールサーバ２００に対するＶＭ状態の定期的な問い合わせに対して、オートスケールサーバ２００からの応答がないことを検知することで、オートスケールサーバ２００が停止したことを検知する。
【０１１０】
監視サーバ１００は、仮想マシンＶＭ４との通信不可を検知する。すると、監視サーバ１００は、ＶＭ管理テーブル１２２において、仮想マシンＶＭ４のＶＭ動作中フラグを「Ｆａｌｓｅ」に変更することで、ＶＭ管理テーブル１２２をＶＭ管理テーブル１２３に更新する。監視サーバ１００は、仮想マシンＶＭ４について、オートスケールサーバ２００が停止している間にＶＭ動作中フラグを「Ｔｒｕｅ」から「Ｆａｌｓｅ」に変更したので、オートスケール情報更新フラグ（図１３では図示を省略している）を「Ｔｒｕｅ」に設定する。
【０１１１】
更にその後、オートスケールサーバ２００が復旧した場合を考える（ステップＳＴ１３）。例えば、監視サーバ１００は、オートスケールサーバ２００に対するＶＭ状態の定期的な問い合わせに対してオートスケールサーバ２００からの応答が再開されたことを検知することで、オートスケールサーバ２００の起動を検知する。当該応答は、仮想マシンＶＭ４が「正常」（ただし、実際の状態とは異なる）である旨を含む。監視サーバ１００は、オートスケールサーバ２００からＶＭ状態の応答を受け付けると、仮想マシンＶＭ４の停止がスケールインによる停止ではないことを検知し、仮想マシンＶＭ４の異常をシステム管理者に通知する。
【０１１２】
そして、監視サーバ１００は、ＶＭ管理テーブル１２３に基づいて、オートスケールサーバ２００が停止している間に仮想マシンＶＭ４との通信不可を検知したことを、オートスケールサーバ２００に通知する。オートスケールサーバ２００は、当該通知に応じて、ＶＭテーブル２１２の仮想マシンＶＭ４のＶＭ状態を「ＥＲＲＯＲ」に変更することで、ＶＭテーブル２１２をＶＭテーブル２１４に更新する。そして、オートスケールサーバ２００は、ＶＭテーブル２１４により各仮想マシンのオートスケール制御を再開する。
【０１１３】
なお、監視サーバ１００は、オートスケールサーバ２００の起動を検知したタイミングではなく、オートスケールサーバ２００から仮想マシンＶＭ４のＶＭ状態として「ＥＲＲＯＲ」を取得したタイミングで仮想マシンＶＭ４の異常を検知し、システム管理者に通知してもよい。
【０１１４】
次に、監視の比較例を説明する。
図１４は、監視の比較例を示す図である。
比較例では、仮想マシンを監視する監視サーバ７００と、仮想マシンに対するオートスケール制御を行うオートスケールサーバ８００とを含むシステムを考える。ただし、監視サーバ７００は、オートスケールサーバ８００と連携する機能を有していない。
【０１１５】
監視サーバ７００は、各仮想マシンの死活監視の状況を管理するＶＭ監視テーブル７０１を記憶する。ＶＭ監視テーブル７０１には、ＶＭ名とＶＭ動作フラグとが記録される。ＶＭ動作フラグは、「Ｔｒｕｅ」が動作中、「Ｆａｌｓｅ」が停止を示す。
【０１１６】
オートスケールサーバ８００は、各仮想マシンの状態を管理するＶＭ状態テーブル８０１を記憶する。ＶＭ状態テーブル８０１には、ＶＭ名とＶＭ状態とが記録される。
まず、オートスケールサーバ８００が稼働中の場合を考える（ステップＳＴ２１）。ＶＭ監視テーブル７０１によれば、この段階において、仮想マシンＶＭ１のＶＭ動作中フラグは「Ｔｒｕｅ」である。仮想マシンＶＭ２のＶＭ動作中フラグは「Ｆａｌｓｅ」である。仮想マシンＶＭ３のＶＭ動作中フラグは「Ｔｒｕｅ」である。仮想マシンＶＭ４のＶＭ動作中フラグは「Ｔｒｕｅ」である。一方、ＶＭ状態テーブル８０１によれば、仮想マシンＶＭ１のＶＭ状態は「正常」である。仮想マシンＶＭ２のＶＭ状態は「スケールイン縮退」である。仮想マシンＶＭ３のＶＭ状態は「正常」である。仮想マシンＶＭ４のＶＭ状態は「正常」である。ＶＭ監視テーブル７０１で、仮想マシンＶＭ２のＶＭ動作中フラグが「Ｆａｌｓｅ」なので、監視サーバ７００は、オートスケールサーバ８００に仮想マシンＶＭ２のＶＭ状態を問い合わせる。オートスケールサーバ８００は、ＶＭ状態テーブル８０１に基づいて、仮想マシンＶＭ２のＶＭ状態「スケールイン縮退」を監視サーバ７００に応答する。この場合、監視サーバ７００は、仮想マシンＶＭ２から監視情報を取得できなかったことを異常とみなさない。
【０１１７】
その後、オートスケールサーバ８００が停止した場合を考える（ステップＳＴ２２）。ＶＭ状態テーブル８０１は、オートスケールサーバ８００が停止している間も、オートスケールサーバ８００の不揮発性の記憶装置（例えば、ＨＤＤ）に保持されている。監視サーバ７００は、オートスケールサーバ８００に対するＶＭ状態の定期的な問い合わせに対して、オートスケールサーバ８００からの応答がないことを検知することで、オートスケールサーバ８００が停止したことを検知する。
【０１１８】
監視サーバ７００は、仮想マシンＶＭ４との通信不可を検知する。すると、監視サーバ７００は、ＶＭ監視テーブル７０１において、仮想マシンＶＭ４のＶＭ動作中フラグを「Ｆａｌｓｅ」に変更することで、ＶＭ監視テーブル７０１をＶＭ監視テーブル７０２に更新する。
【０１１９】
更にその後、オートスケールサーバ８００が復旧した場合を考える（ステップＳＴ２３）。例えば、監視サーバ７００は、オートスケールサーバ８００に対するＶＭ状態の定期的な問い合わせに対してオートスケールサーバ８００からの応答が再開されたことを検知することで、オートスケールサーバ８００の起動を検知する。監視サーバ７００は、ＶＭ状態の応答に基づいて、仮想マシンＶＭ４のＶＭ状態が「正常」（ただし、実際の状態とは異なる）であり、スケールインによる停止ではないことを検知すると、システム管理者に仮想マシンＶＭ４の異常を通知する。
【０１２０】
オートスケールサーバ８００は、ＶＭ状態テーブル８０１によりオートスケール制御を再開する。ＶＭ状態テーブル８０１は、仮想マシンＶＭ４が「正常」として管理されている。このため、オートスケールサーバ８００は、仮想マシンＶＭ４が属するオートスケールグループに関してオートスケール制御を適切に行うことができない。また、オートスケールサーバ８００が仮想マシンＶＭ４の異常を検知するまでに、１０分から数十分かかることもある。この間、ユーザが利用するアプリケーションなどの処理負荷が高まると、適切なスケールアウトを行えず、当該処理に遅延が生じるおそれがある。
【０１２１】
一方、第２の実施の形態のクラスタシステムによれば、監視サーバ１００とオートスケールサーバ２００とを連携させ、オートスケールサーバ２００が起動すると、監視サーバ１００により最新の仮想マシンの情報をオートスケールサーバ２００に提供する。このため、オートスケールサーバ２００は、最新の仮想マシンの情報で復旧し、オートスケール制御を再開することができる。このため、オートスケールサーバ２００が停止している間に停止した仮想マシンを、オートスケールサーバ２００に適切に把握させ、オートスケール制御を適切に再開させることができる。その結果、ユーザが利用するアプリケーションの処理への影響を抑えられる。
【０１２２】
［第３の実施の形態］
次に、第３の実施の形態を説明する。前述の第２の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【０１２３】
第２の実施の形態の例では、オートスケールサーバ２００によるオートスケールの制御対象の仮想マシンと、監視サーバ１００による監視対象の仮想マシンとが一致していたが、監視サーバ１００は、オートスケールの制御対象以外の仮想マシンの監視も行える。
【０１２４】
図１５は、第３の実施の形態の仮想マシンの例を示す図である。
例えば、物理サーバ３００が仮想マシン３１０，３２０を実行し、物理サーバ４００が仮想マシン４１０，４２０，４３０を実行することを考える。このうち、オートスケールサーバ２００によるオートスケールの制御対象は、仮想マシン３１０，３２０，４１０，４２０である。仮想マシン４３０は、オートスケールサーバ２００によるオートスケールの制御の対象外である。一方、監視サーバ１００による監視対象は、仮想マシン３１０，３２０，４１０，４２０，４３０である。
【０１２５】
このように、オートスケールサーバ２００によるオートスケールの制御対象の仮想マシンの範囲と、監視サーバ１００による監視対象の仮想マシンの範囲とは一致していなくてもよい。監視サーバ１００は、オートスケールの制御対象でない仮想マシンに対する死活監視により、当該仮想マシンとの通信不可を検知すると、当該仮想マシンについてのオートスケール状況の確認を行わずに、当該仮想マシンの異常を検知し、システム管理者に通知する。監視サーバ１００は、監視対象の仮想マシンがオートスケールの制御対象であるか否かをＶＭ管理テーブルにより管理する。
【０１２６】
図１６は、ＶＭ管理テーブルの例を示す図である。
ＶＭ管理テーブル１２４は、記憶部１２０に格納される。ＶＭ管理テーブル１２４は、オートスケール可否フラグ、ＶＭ名、通信用ＩＰアドレス、オートスケールＶＭ動作中フラグおよびオートスケール情報更新フラグの項目を含む。
【０１２７】
オートスケール可否フラグの項目には、該当の仮想マシンがオートスケール制御の対象であるか否かを示す情報が登録される。該当の仮想マシンがオートスケール制御の対象の場合、オートスケール可否フラグは「対象」である。該当の仮想マシンがオートスケール制御の対象外の場合、オートスケール可否フラグは「対象外」である。
【０１２８】
ＶＭ名、通信用ＩＰアドレス、オートスケールＶＭ動作中フラグおよびオートスケール情報更新フラグの項目に登録される情報は、ＶＭ管理テーブル１２２における同名の項目に登録される情報と同様である。ただし、オートスケールＶＭ動作中フラグおよびオートスケール情報更新フラグの項目は、オートスケール可否フラグが「対象外」の場合、設定なし（図では設定なしをハイフン記号「−」で示す）となる。
【０１２９】
例えば、ＶＭ管理テーブル１２４には、オートスケール可否フラグが「対象外」、ＶＭ名が「ＶＭｎｏｒｍａｌ」、通信用ＩＰアドレスが「１１０．１０．１．１」、オートスケールＶＭ動作中フラグが設定なし（「−」）、オートスケール情報更新フラグが設定なし（「−」）というレコードが登録される。このレコードは、ＶＭ名「ＶＭｎｏｒｍａｌ」の仮想マシンがオートスケールの制御対象外であり、当該仮想マシンのＩＰアドレスが「１１０．１０．１．１」であることを示す。
【０１３０】
また、例えば、ＶＭ管理テーブル１２４には、オートスケール可否フラグが「対象」、ＶＭ名が「Ｇｒｐ１＿ＶＭ１」、通信用ＩＰアドレスが「１００．１０．９９．１」、オートスケールＶＭ動作中フラグが「Ｔｒｕｅ」、オートスケール情報更新フラグが「Ｆａｌｓｅ」というレコードが登録される。このレコードは、ＶＭ名「Ｇｒｐ１＿ＶＭ１」の仮想マシンがオートスケールの制御対象であることを示す。また、当該仮想マシンの通信用ＩＰアドレスが「１００．１０．９９．１」であることを示す。更に、当該仮想マシンが稼動しており、オートスケールサーバ２００の停止中におけるオートスケールＶＭ動作中フラグの更新が発生していないことを示す。
【０１３１】
次に、ＶＭ管理テーブル１２４を用いた、ＶＭ監視部１３１によるＶＭ監視の処理手順を説明する。第３の実施の形態では、ＶＭ監視部１３１は、図１１で説明したＶＭ監視の手順に代えて、下記の手順を実行する。
【０１３２】
図１７は、ＶＭ監視の例を示すフローチャートである。
ＶＭ監視部１３１は下記の処理を定期的に実行する。実行の周期は、運用に応じて定められる。周期は、数秒から数十秒程度でもよいし、１分から数分程度でもよい。
【０１３３】
（Ｓ３０）ＶＭ監視部１３１は、監視対象の仮想マシン（監視対象ＶＭ）の監視情報を収集する。例えば、ＶＭ監視部１３１は、監視対象の仮想マシンから死活監視用の所定のパケットを受信することで、監視情報を収集する。
【０１３４】
（Ｓ３１）ＶＭ監視部１３１は、監視対象ＶＭの動作状況を更新する。具体的には、ＶＭ監視部１３１は、ステップＳ３０の監視情報の収集結果に基づいて、ＶＭ管理テーブル１２４を更新する。すなわち、ＶＭ監視部１３１は、監視情報を収集できた（死活監視用のパケットを受信できた）仮想マシンのオートスケールＶＭ動作中フラグを「Ｔｒｕｅ」に設定する。なお、元々「Ｔｒｕｅ」の場合はそのままでよい。
【０１３５】
（Ｓ３２）ＶＭ監視部１３１は、前回の監視情報の収集時から所定時間内に監視情報が届いていない監視対象ＶＭがあるか否かを判定する。所定時間とは、当該監視の周期、または、当該周期に比較的短い時間（当該周期よりも短い時間）を加算した時間である。所定時間内に監視情報が届いていない監視対象ＶＭがある場合、ステップＳ３３に処理が進む。所定時間内に監視情報が届いていない監視対象ＶＭがない場合、ステップＳ３８に処理が進む。
【０１３６】
（Ｓ３３）ＶＭ監視部１３１は、ＶＭ管理テーブル１２４を参照して、前回の監視情報の収集時から所定時間内に監視情報が届いていない監視対象ＶＭのオートスケール可否フラグが「対象」であるか否かを判定する。「対象」である場合、ステップＳ３５に処理が進む。「対象」でない場合（すなわち、「対象外」である場合）、ステップＳ３４に処理が進む。
【０１３７】
（Ｓ３４）ＶＭ監視部１３１は、該当の仮想マシンの異常をシステム管理者に通知する。例えば、ＶＭ監視部１３１は、ディスプレイ１１１に異常を示す画像を表示させてもよい。あるいは、ＶＭ監視部１３１は、システム管理者が利用する端末装置に、異常を示すメッセージを送信してもよい。そして、ステップＳ３８に処理が進む。
【０１３８】
（Ｓ３５）ＶＭ監視部１３１は、ステップＳ３２で前回の監視情報の収集時から所定時間内に監視情報が届いていないと判断された監視対象ＶＭについて、ＶＭ管理テーブル１２４のオートスケールＶＭ動作中フラグを「Ｆａｌｓｅ」に設定する。なお、元々「Ｆａｌｓｅ」の場合はそのままでよい。
【０１３９】
（Ｓ３６）ＶＭ監視部１３１は、オートスケールサーバ管理テーブル１２１を参照して、稼働中フラグが「Ｔｒｕｅ」であるか否かを判定する。稼働中フラグが「Ｔｒｕｅ」の場合、ステップＳ３８に処理が進む。稼働中フラグが「Ｆａｌｓｅ」の場合、ステップＳ３７に処理が進む。
【０１４０】
（Ｓ３７）ＶＭ監視部１３１は、ステップＳ３５でオートスケールＶＭ動作中フラグを「Ｆａｌｓｅ」に設定した監視対象ＶＭについて、ＶＭ管理テーブル１２４のオートスケール情報更新フラグを「Ｔｒｕｅ」に設定する。
【０１４１】
（Ｓ３８）ＶＭ監視部１３１は、監視を継続するか否を判定する。監視を継続する場合、監視の周期の分だけ待機して、ステップＳ３０に処理が進む。監視を継続しない場合、ＶＭ監視の処理が終了する。例えば、ＶＭ監視部１３１は、システム管理者による監視の終了の入力を受け付けた場合、監視を継続しないと判定し、それ以外の場合に監視を継続すると判定する。
【０１４２】
なお、第３の実施の形態でもＡＳサーバ連携部１３２は、図１２のオートスケールサーバ監視の手順により、オートスケールサーバ２００と連携する。
これにより、オートスケールサーバ２００が停止し、復旧したときに仮想マシンの最新の情報を基にオートスケールサーバ２００を復旧することができる。
【０１４３】
更に、監視サーバ１００は、ＶＭ管理テーブル１２４のオートスケール可否フラグに基づいて、オートスケール制御の対象の仮想マシンと、オートスケール制御の対象外の仮想マシンとを区別した監視を行うことができる。監視サーバ１００は、オートスケール制御の対象外の仮想マシンについては、オートスケールサーバ２００に対するオートスケールに関する問い合わせを省略して、当該仮想マシンの異常を迅速に通知することができる。
【０１４４】
なお、第１の実施の形態の情報処理は、処理部１２にプログラムを実行させることで実現できる。また、第２，第３の実施の形態の情報処理は、ＣＰＵ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１１３に記録できる。
【０１４５】
例えば、プログラムを記録した記録媒体１１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１４６】
１  クラスタシステム
１０  オートスケールサーバ監視装置
１１，２１  記憶部
１２，２２  処理部
２０  オートスケールサーバ
３０，４０  物理サーバ
３１，３２，４１，４２  仮想マシン
５０  ネットワーク
６１，６２，７１，７２  テーブル
【図１】
2019185511.tif 000003
【図２】
2019185511.tif 000004
【図３】
2019185511.tif 000005
【図４】
2019185511.tif 000006
【図５】
2019185511.tif 000007
【図６】
2019185511.tif 000008
【図７】
2019185511.tif 000009
【図８】
2019185511.tif 000010
【図９】
2019185511.tif 000011
【図１０】
2019185511.tif 000012
【図１１】
2019185511.tif 000013
【図１２】
2019185511.tif 000014
【図１３】
2019185511.tif 000015
【図１４】
2019185511.tif 000016
【図１５】
2019185511.tif 000017
【図１６】
2019185511.tif 000018
【図１７】
2019185511.tif 000019