(57)【要約】【課題】特定のコンピュータ装置に処理負荷が集中することを防ぎ、可用性を向上させる階層構造のコンピュータリソース提供システムを提供する。【解決手段】仮想マシン起動端末が、コンピュータリソース提供システムを構成する複数の仮想マシン起動端末毎に仮想マシン起動端末が属するクラスタを識別するクラスタ識別情報を対応付けて記憶し、複数のクラスタ毎にクラスタに属する仮想マシン起動端末が有するコンピュータリソースの利用量を記憶し、ネットワークを介して接続されたユーザ端末から送信されロードバランサによって複数の仮想マシン起動端末のうちから自身に割り振られた仮想マシン起動要求に応じて、仮想マシンを起動させる仮想マシン起動端末を判定して仮想マシン起動要求を送信し、自身または他の仮想マシン起動端末から送信される仮想マシン起動要求に応じて、コンピュータリソースに仮想マシンを起動する。【選択図】図１
2011028547.tif 000002
【特許請求の範囲】
【請求項１】
自身のコンピュータリソースを仮想化して定められた仮想マシンを起動する複数の仮想マシン起動端末を備えたコンピュータリソース提供システムにおける前記仮想マシン起動端末であって、
前記複数の仮想マシン起動端末毎に、当該仮想マシン起動端末が属して管理される単位であるクラスタを識別するクラスタ識別情報が対応付けられて記憶されるクラスタ構成端末記憶テーブルと、
複数の前記クラスタ毎に、当該クラスタに属する前記仮想マシン起動端末が有する前記コンピュータリソースのうち、前記仮想マシンが起動され利用されているコンピュータリソースの利用量が記憶されるクラスタ管理テーブルと、
ネットワークを介して接続されたユーザ端末から送信され、定められたロードバランサによって前記複数の仮想マシン起動端末のうちから自身に割り振られた仮想マシン起動要求に応じて、当該仮想マシン起動要求に応じた前記仮想マシンを、複数の前記クラスタのうちいずれのクラスタに属する仮想マシン起動端末に起動させるかを、前記クラスタ管理テーブルに記憶された前記コンピュータリソースの利用量に基づいて判定し、仮想マシンを起動させると判定した前記仮想マシン起動端末に、前記仮想マシン起動要求を送信する制御部と、
自身または他の前記仮想マシン起動端末が有する前記制御部から送信される前記仮想マシン起動要求に応じて、自身が有する前記コンピュータリソースに前記仮想マシンを起動するノード制御部と、
を備えることを特徴とする仮想マシン起動端末。
【請求項２】
前記クラスタ構成端末記憶テーブルおよび前記クラスタ管理テーブルを、前記他の仮想マシン起動端末との間で共有する分散ハッシュテーブルと、
前記クラスタ構成端末記憶テーブルおよび前記クラスタ管理テーブルを、前記分散ハッシュテーブルに記憶させて前記他の仮想マシン起動端末との間で共有する分散メモリ制御部と、
を備えることを特徴とする請求項１に記載の仮想マシン起動端末。
【請求項３】
前記クラスタ構成端末記憶テーブルには、前記仮想マシン起動端末毎に、当該仮想マシン起動端末の状態を示す情報であって、前記仮想マシン起動要求を受信した場合に当該仮想マシン起動要求に応じて前記仮想マシンを起動させる状態であることを示す通常状態と、前記仮想マシン起動要求を受信した場合に当該仮想マシン起動要求に応じて前記仮想マシンを起動させない状態であることを示す予閉塞状態と、前記予閉塞状態であってかつ自身が有する前記コンピュータリソースに前記仮想マシンが起動されていない状態であることを示す閉塞状態とのいずれかの状態を示す情報が記憶され、
自身の状態を示す情報が通常状態を示す場合に送信される停止要求に応じて、前記クラスタ構成端末記憶テーブルに記憶された前記状態を示す情報を予閉塞に書き換えて記憶させ、前記予閉塞状態である場合に自身が有する前記コンピュータリソースに前記仮想マシンが起動されていないと判定すると、前記クラスタ構成端末記憶テーブルに記憶された前記状態を示す情報を閉塞に書き換えて記憶させる状態更新部を備え、
前記制御部は、前記状態が予閉塞または閉塞を示す情報に対応付けられた前記仮想マシン起動端末以外の前記仮想マシン起動端末を、前記仮想マシン起動要求の送信先として判定し、
前記ノード制御部は、前記クラスタ構成端末記憶テーブルに記憶された自身の状態が予閉塞を示す場合、自身のコンピュータリソースに起動された前記仮想マシンを他の前記仮想マシン起動端末に移動させる
ことを特徴とする請求項１または請求項２に記載の仮想マシン起動端末。
【請求項４】
自身のコンピュータリソースを仮想化して定められた仮想マシンを起動する複数の仮想マシン起動端末を備えたコンピュータリソース提供システムにおいて、前記複数の仮想マシン起動端末毎に、当該仮想マシン起動端末が属して管理される単位であるクラスタを識別するクラスタ識別情報が対応付けられて記憶されるクラスタ構成端末記憶テーブルと、複数の前記クラスタ毎に、当該クラスタに属する前記仮想マシン起動端末が有する前記コンピュータリソースのうち、前記仮想マシンが起動され利用されているコンピュータリソースの利用量が記憶されるクラスタ管理テーブルとを備えた前記仮想マシン起動端末のコンピュータに、
ネットワークを介して接続されたユーザ端末から送信され、定められたロードバランサによって前記複数の仮想マシン起動端末のうちから自身に割り振られた仮想マシン起動要求に応じて、当該仮想マシン起動要求に応じた前記仮想マシンを、複数の前記クラスタのうちいずれのクラスタに属する仮想マシン起動端末に起動させるかを、前記クラスタ管理テーブルに記憶された前記コンピュータリソースの利用量に基づいて判定し、仮想マシンを起動させると判定した前記仮想マシン起動端末に、前記仮想マシン起動要求を送信するステップと、
自身または他の前記仮想マシン起動端末が有する前記制御部から送信される前記仮想マシン起動要求に応じて、自身が有する前記コンピュータリソースに前記仮想マシンを起動するステップと、
を実行させる仮想マシン起動プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自身のコンピュータリソースを仮想化して定められた仮想マシンを起動する仮想マシン起動端末および仮想マシン起動プログラムに関する。
【背景技術】
【０００２】
近年、ネットワークを介してユーザ端末から送信される仮想マシン起動要求に応じて、コンピュータ装置のコンピュータリソースに仮想マシンを起動させ、ユーザ端末に利用させるコンピュータの利用形態が普及し始めている。このようにコンピュータリソースを提供するシステムはクラウドサービスシステムなどとも呼ばれ、クラウド制御装置と、クラウド制御装置の下位に当たる複数のクラスタ制御装置と、クラスタ制御装置の下位に当たり、クラスタ制御装置が管理するクラスタに属すノード制御装置とが含まれる階層構造の装置群を備えている。クラウド制御装置は、クラスタ制御装置毎にそのクラスタに属するノード制御装置によって起動されている仮想マシンのコンピュータリソースの利用量を定期的に取得して記憶する。クラスタ制御装置は、自身のクラスタに属するノード制御装置毎にコンピュータリソースの利用量を定期的に取得して記憶する。
【０００３】
仮想マシンを起動する際には、クラウド制御装置が、ユーザ端末から送信された仮想マシン起動要求を受信し、コンピュータリソースに空きがあるノード制御装置が属するクラスタを判定して、そのクラスタを管理するクラスタ制御装置に仮想マシン起動要求を送信する。クラスタ制御装置は、クラウド制御装置から送信される仮想マシン起動要求に応じて、自身に属するノード制御装置のうち、コンピュータリソースに空きがあるノード制御装置に仮想マシン起動要求を送信する。ノード制御装置は、クラスタ制御装置から送信された仮想マシン起動要求に応じて、自身のコンピュータリソースに仮想マシンを起動させる。このような階層構造によるクラウドサービスシステムにより、大量の仮想マシン起動要求に応じて仮想マシンを提供することが可能である。
ところで、特許文献１には、Ｐ２Ｐネットワークにおける分散ハッシュテーブルにより情報を共有する技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２７６５５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このようなクラウドサービスシステムでは、クラウドサービスシステムを構成するコンピュータ装置のうち特定のクラウド制御装置またはクラスタ制御装置に仮想マシン起動要求が集中して送信される場合がある。このような場合、特定のクラウド制御装置またはクラスタ制御装置に過剰な負荷がかかり、クラウドサービスシステムとしての可用性が低減する場合があると考えられる。ここで、このような階層構造によるクラウドサービスシステムを稼動させる場合に、特定のコンピュータ装置に処理負荷が集中することを防ぎ、可用性を向上させることが望ましい。
【０００６】
本発明は、このような状況に鑑みてなされたもので、特定のコンピュータ装置に処理負荷が集中することを防ぎ、可用性を向上させる階層構造のコンピュータリソース提供システムを提供する仮想マシン起動端末および仮想マシン起動プログラムを提供する。
【課題を解決するための手段】
【０００７】
上述した課題を解決するために、本発明は、自身のコンピュータリソースを仮想化して定められた仮想マシンを起動する複数の仮想マシン起動端末を備えたコンピュータリソース提供システムにおける仮想マシン起動端末であって、複数の仮想マシン起動端末毎に、仮想マシン起動端末が属して管理される単位であるクラスタを識別するクラスタ識別情報が対応付けられて記憶されるクラスタ構成端末記憶テーブルと、複数のクラスタ毎に、クラスタに属する仮想マシン起動端末が有するコンピュータリソースのうち、仮想マシンが起動され利用されているコンピュータリソースの利用量が記憶されるクラスタ管理テーブルと、ネットワークを介して接続されたユーザ端末から送信され、定められたロードバランサによって複数の仮想マシン起動端末のうちから自身に割り振られた仮想マシン起動要求に応じて、仮想マシン起動要求に応じた仮想マシンを、複数のクラスタのうちいずれのクラスタに属する仮想マシン起動端末に起動させるかを、クラスタ管理テーブルに記憶されたコンピュータリソースの利用量に基づいて判定し、仮想マシンを起動させると判定した仮想マシン起動端末に、仮想マシン起動要求を送信する制御部と、自身または他の仮想マシン起動端末が有する制御部から送信される仮想マシン起動要求に応じて、自身が有するコンピュータリソースに仮想マシンを起動するノード制御部と、を備えることを特徴とする。
【０００８】
また、本発明は、クラスタ構成端末記憶テーブルおよびクラスタ管理テーブルを、他の仮想マシン起動端末との間で共有する分散ハッシュテーブルと、クラスタ構成端末記憶テーブルおよびクラスタ管理テーブルを、分散ハッシュテーブルに記憶させて他の仮想マシン起動端末との間で共有する分散メモリ制御部と、を備えることを特徴とする。
【０００９】
また、本発明は、クラスタ構成端末記憶テーブルには、仮想マシン起動端末毎に、仮想マシン起動端末の状態を示す情報であって、仮想マシン起動要求を受信した場合に仮想マシン起動要求に応じて仮想マシンを起動させる状態であることを示す通常状態と、仮想マシン起動要求を受信した場合に仮想マシン起動要求に応じて仮想マシンを起動させない状態であることを示す予閉塞状態と、予閉塞状態であってかつ自身が有するコンピュータリソースに仮想マシンが起動されていない状態であることを示す閉塞状態とのいずれかの状態を示す情報が記憶され、自身の状態を示す情報が通常状態を示す場合に送信される停止要求に応じて、クラスタ構成端末記憶テーブルに記憶された状態を示す情報を予閉塞に書き換えて記憶させ、予閉塞状態である場合に自身が有するコンピュータリソースに仮想マシンが起動されていないと判定すると、クラスタ構成端末記憶テーブルに記憶された状態を示す情報を閉塞に書き換えて記憶させる状態更新部を備え、制御部は、状態が予閉塞または閉塞を示す情報に対応付けられた仮想マシン起動端末以外の仮想マシン起動端末を、仮想マシン起動要求の送信先として判定し、ノード制御部は、クラスタ構成端末記憶テーブルに記憶された自身の状態が予閉塞を示す場合、自身のコンピュータリソースに起動された仮想マシンを他の仮想マシン起動端末に移動させることを特徴とする。
【００１０】
また、本発明は、自身のコンピュータリソースを仮想化して定められた仮想マシンを起動する複数の仮想マシン起動端末を備えたコンピュータリソース提供システムにおいて、複数の仮想マシン起動端末毎に、仮想マシン起動端末が属して管理される単位であるクラスタを識別するクラスタ識別情報が対応付けられて記憶されるクラスタ構成端末記憶テーブルと、複数のクラスタ毎に、クラスタに属する仮想マシン起動端末が有するコンピュータリソースのうち、仮想マシンが起動され利用されているコンピュータリソースの利用量が記憶されるクラスタ管理テーブルとを備えた仮想マシン起動端末のコンピュータに、ネットワークを介して接続されたユーザ端末から送信され、定められたロードバランサによって複数の仮想マシン起動端末のうちから自身に割り振られた仮想マシン起動要求に応じて、仮想マシン起動要求に応じた仮想マシンを、複数のクラスタのうちいずれのクラスタに属する仮想マシン起動端末に起動させるかを、クラスタ管理テーブルに記憶されたコンピュータリソースの利用量に基づいて判定し、仮想マシンを起動させると判定した仮想マシン起動端末に、仮想マシン起動要求を送信するステップと、自身または他の仮想マシン起動端末が有する制御部から送信される仮想マシン起動要求に応じて、自身が有するコンピュータリソースに仮想マシンを起動するステップと、を実行させる仮想マシン起動プログラムである。
【発明の効果】
【００１１】
以上説明したように、本発明によれば、仮想マシン起動端末が、コンピュータリソース提供システムを構成する複数の仮想マシン起動端末毎に、仮想マシン起動端末が属するクラスタを識別するクラスタ識別情報を対応付けて記憶し、複数のクラスタ毎に、クラスタに属する仮想マシン起動端末が有するコンピュータリソースの利用量を記憶し、ネットワークを介して接続されたユーザ端末から送信され、定められたロードバランサによって複数の仮想マシン起動端末のうちから自身に割り振られた仮想マシン起動要求に応じて、仮想マシンを起動させる仮想マシン起動端末を判定して仮想マシン起動要求を送信し、自身または他の仮想マシン起動端末から送信される仮想マシン起動要求に応じて、自身が有するコンピュータリソースに仮想マシンを起動するようにしたので、従来のクラウド制御装置とクラスタ制御装置とノード制御装置との機能を１台のコンピュータ装置に備えて、ロードバランサによって振り分けられた仮想マシン起動要求を階層構造で処理することができる。これにより、ロードバランサによって同様の機能を持つ複数の仮想マシン起動端末に仮想マシン起動要求が振り分けられるため、特定のコンピュータ装置に処理負荷が集中することを防ぎ、可用性を向上させる階層構造のコンピュータリソース提供システムを提供することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態によるクラウドサービスシステムの構成例を示すブロック図である。
【図２】本発明の一実施形態によるロードバランサに記憶される負荷状況のデータ例を示す図である。
【図３】本発明の一実施形態によるクラスタ構成端末記憶テーブルのデータ例を示す図である。
【図４】本発明の一実施形態による仮想マシン起動端末の状態遷移を示す図である。
【図５】本発明の一実施形態によるクラスタ管理テーブルのデータ例を示す図である。
【図６】本発明の一実施形態によるノード管理テーブルのデータ例を示す図である。
【図７】本発明の一実施形態によるクラウドサービスシステムの動作例を示すシーケンス図である。
【図８】本発明の一実施形態によるクラウドサービスシステムの動作例を示すシーケンス図である。
【図９】本発明の一実施形態によるクラウドサービスシステムの動作例を示すシーケンス図である。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施形態について、図面を参照して説明する。
図１は、本実施形態によるクラウドサービスシステム１の構成を示すブロック図である。クラウドサービスシステム１は、ユーザ端末１００と、ロードバランサ２００と、複数の仮想マシン起動端末３００−Ｎ（仮想マシン起動端末３００−１、仮想マシン起動端末３００−２、仮想マシン起動端末３００−３、仮想マシン起動端末３００−４、仮想マシン起動端末３００−５、・・・）と、管理端末４００とを備えており、ユーザ端末１００からの要求に応じてコンピュータリソースを提供する情報システムである。ここでは、複数の仮想マシン起動端末３００−Ｎは同様の構成であるので、特に区別して説明する必要がない場合には仮想マシン起動端末３００として説明する。
【００１４】
ユーザ端末１００は、ユーザからの入力に応じて、ネットワークを介して接続された仮想マシン起動端末３００に対して、仮想マシンの提供要求を送信する。
ロードバランサ２００には、仮想マシン起動要求の送信先である複数の仮想マシン起動端末３００の情報が、自身の記憶領域に記憶されている。ロードバランサ２００は、複数の仮想マシン起動端末３００のうち、ユーザ端末１００から送信された仮想マシン起動要求を送信する仮想マシン起動端末３００を判定し、送信先として判定した仮想マシン起動端末３００に仮想マシン起動要求を送信する。例えば、ロードバランサ２００は、複数の各仮想マシン起動端末３００と定期的に通信を行って仮想マシン起動端末３００の負荷状況を取得し、取得した負荷状況を自身の記憶領域に記憶させる。図２は、ロードバランサ２００に記憶させる負荷状況のデータ例を示す図である。ロードバランサ２００には、仮想マシン起動端末３００を識別するノード番号と、ノード番号に対応する仮想マシン起動端末３００のＩＰ（Internet Protocol）アドレスと、仮想マシン起動端末３００の状態と、負荷レベルを示す情報とが対応付けられて記憶される。
【００１５】
ここで、状態は、例えば、対応する仮想マシン起動端末３００が正常に動作していることを示す「正常走行」や、対応する仮想マシン起動端末３００が過負荷等によりタイムアウトを起こしていることを示す「タイムアウト」などの情報である。ロードバランサ２００は、状態が「タイムアウト」である仮想マシン起動端末３００は、仮想マシン起動要求の送信先から除外する。負荷レベルは、対応する仮想マシン起動端末３００の負荷状況を数値化した情報である。例えば、負荷レベルの数値が大きいほど負荷が高いことを示す。ロードバランサ２００は、負荷レベルが低い仮想マシン起動端末３００を検出して、仮想マシン起動要求の送信先として判定する。
【００１６】
図１に戻り、仮想マシン起動端末３００は、自身のコンピュータリソースを仮想化して定められた仮想マシンを起動するコンピュータ装置である。仮想マシン起動端末３００は、送受信部３０１と、分散メモリ部３０２と、分散メモリ制御部３０３と、制御部３０４と、ノード制御部３０７と、コンピュータリソース３０８と、仮想化部３０９と、状態更新部３１０とを備えている。ここで、制御部３０４は、従来のクラウド制御装置と同様の機能を有するクラウド制御部３０５と、従来のクラスタ制御装置と同様の機能を有するクラスタ制御部３０６とを備えている。ノード制御部３０７は、ノード制御装置と同様の機能を有する。すなわち、仮想マシン起動端末３００は、従来のクラウド制御装置とクラスタ制御装置とノード制御装置との機能を、一台で有するものである。
【００１７】
送受信部３０１は、ロードバランサ２００を介してユーザ端末１００から送信された仮想マシンの起動要求を受信し、受信した仮想マシン起動要求をクラウド制御部３０５に転送する。また、送受信部３０１は、Ｗｅｂ  ＡＰＩ（Application Programming Interface）からの処理要求を内部インタフェースに変換し、処理要求に応じた処理の実行をクラウド制御部３０５に依頼し、クラウド制御部３０５による処理の実行結果をＷｅｂ  ＡＰＩに変換して返却する。
分散メモリ部３０２には、他の仮想マシン起動端末３００との間で情報を共有する分散ハッシュテーブルが記憶される。
【００１８】
ここでは、分散メモリ部３０２には、複数の仮想マシン起動端末毎に、仮想マシン起動端末３００が属するクラスタを識別するクラスタ識別情報が対応付けられて記憶されるクラスタ構成端末記憶テーブルと、複数のクラスタ毎に、クラスタに属する仮想マシン起動端末３００が有するコンピュータリソースの量が記憶されるクラスタ管理テーブルと、クラスタ毎にそのクラスタに属するノードの情報が記憶されるノード管理テーブルとが記憶される。
【００１９】
図３は、分散メモリ部３０２に記憶されるクラスタ構成端末記憶テーブルのデータ例を示す図である。クラスタ構成端末記憶テーブルには、ノード番号と、番号利用ノード有無と、ノード状態と、所属クラスタ番号と、クラウド制御部マスターフラグと、クラスタ制御部マスターフラグとが対応付けられて記憶される。ノード番号は、仮想マシン起動端末３００を識別する情報である。番号利用ノード有無は、対応するノード番号の仮想マシン起動端末３００が利用されているか否かを示す情報である。番号利用ノード有無が「有」である場合は、対応する仮想マシン起動端末３００が利用されており、動作していることを示す。番号利用ノード有無が「無」である場合は、対応する仮想マシン起動端末３００が利用されておらず、動作していないことを示す。ノード状態は、対応する仮想マシン起動端末３００の状態を示す。
【００２０】
ノード状態は、対応する仮想マシン起動端末３００の状態を示す情報であり、「通常」、「予閉塞」、「閉塞」のいずれかの情報である。「通常」は、仮想マシン起動要求を受信した場合に仮想マシン起動要求に応じて仮想マシンを起動させる状態であることを示す。「予閉塞」は、仮想マシン起動要求を受信した場合に仮想マシン起動要求に応じて仮想マシンを起動させない状態であることを示す。「閉塞」は、予閉塞状態であってかつ自身が有するコンピュータリソースに仮想マシンが起動されていない状態であることを示す。
【００２１】
ここで、本実施形態に示す複数の仮想マシン起動端末３００によって構成されるクラウドサービスシステム１においては、それぞれの仮想マシン起動端末３００が同様の機能を持つ。仮想マシン起動要求はロードバランサによっていずれかの仮想マシン起動端末３００に送信されるため、仮想マシン起動端末３００であるコンピュータ装置の増設や取り外しなどを柔軟に行なうことができるものである。ただ、仮想マシン起動端末３００をクラウドサービスシステム１から取り外す際には、取り外す対象となる仮想マシン起動端末３００が有するコンピュータリソース３０８上に仮想マシンが起動されていることが考えられ、この場合にはその仮想マシンを他の起動端末３００に待避させる必要がある。そのため、本実施形態では、上述のような状態遷移を制御することより、起動中の仮想マシンの待避処理を行う。
【００２２】
図４は、仮想マシン起動端末３００の状態遷移を示す図である。仮想マシン起動端末３００は、上述の「通常」、「予閉塞」、「閉塞」と、クラウドサービスシステム１のネットワークから切り離された状態である「停止」のいずれかの状態をとる。符号ａに示す「停止」状態のコンピュータ端末が、仮想マシン起動端末３００が備える各機能部のソフトウェアをロードしてクラウドサービスシステム１のネットワークに接続し、ロードバランサ２００に登録を行なうと、符号ｂに示す「通常」状態の仮想マシン起動端末３００となる。「通常」状態の仮想マシン起動端末３００は、ロードバランサ２００から送信される仮想マシン起動要求に応じて仮想マシンを起動し、コンピュータリソースの提供処理を行う。「通常」状態の仮想マシン起動端末３００を物理マシンのメンテナンス等のために停止する場合、物理マシンの管理者の管理端末４００から、仮想マシン起動端末３００に停止要求が送信される。仮想マシン起動端末３００が停止要求を受信すると、クラスタ構成端末記憶テーブルに「予閉塞」状態が記憶され、仮想マシン起動端末３００は符号ｃに示す「予閉塞」状態に遷移する。クラスタ制御部３０６は、「予閉塞」状態のノード制御部３０７に対しては仮想マシン起動要求を送信しない。仮想マシン起動端末３００が予閉塞状態になると、ノード制御部３０７が、コンピュータリソース３０８に起動された仮想マシンを他の仮想マシン起動端末３００に待避させる処理を行う。ノード制御部３０７による仮想マシンの待避処理が完了すると、仮想マシン起動端末３００は符号ｄに示す「閉塞」状態に遷移する。その後、仮想マシン起動端末３００がクラウドサービスシステム１のネットワークから切り離されると、仮想マシン起動端末３００は「停止」状態に遷移する。
【００２３】
図３に戻り、所属クラスタ番号は、対応する仮想マシン起動端末３００のノードが属するクラスタを識別する情報である。本実施形態では、複数のクラスタが存在する例を説明するが、クラスタ単位によりノードを管理する必要がない場合には、全てのノードが同一のクラスタに属するようにしても良い。クラウド制御部マスターフラグは、対応する仮想マシン起動端末３００が備えるクラウド制御部３０５がマスターであるか否かを示す。クラウド制御部マスターフラグが「ｙｅｓ」である場合には、対応する仮想マシン起動端末３００がクラウド制御部のマスターであることを示し、「ｎｏ」である場合には、対応する仮想マシン起動端末３００がクラウド制御部のマスターでないことを示す。クラウド制御部マスターフラグは、クラウド制御部３０５によって読み出され、クラウド制御部３０５は、クラウド制御部マスターフラグが「ｙｅｓ」である場合、複数の仮想マシン起動端末３００が備えるクラスタ制御部３０６から負荷状況を取得する状況把握処理を行い、「ｎｏ」である場合、状況把握処理を行わない。
【００２４】
クラスタ制御部マスターフラグは、対応する仮想マシン起動端末３００が備えるクラスタ制御部３０６がマスターであるか否かを示す。クラスタ制御部マスターフラグが「ｙｅｓ」である場合には、対応する仮想マシン起動端末３００がクラスタ制御部のマスターであることを示し、「ｎｏ」である場合には、対応する仮想マシン起動端末３００がクラスタ制御部のマスターでないことを示す。クラスタ制御部マスターフラグは、クラスタ制御部３０６によって読み出され、クラスタ制御部３０６は、クラスタ制御部マスターフラグが「ｙｅｓ」である場合、対応するクラスタに属する仮想マシン起動端末３００から負荷状況を取得する状況把握処理を行い、「ｎｏ」である場合、状況把握処理を行わない。
【００２５】
図５は、分散メモリ部３０２に記憶されるクラスタ管理テーブルのデータ例を示す図である。クラスタ管理テーブルには、クラスタ番号と、番号利用クラスタの有無と、全コア数と、利用コア数と、全メモリ量と、利用メモリ量とが記憶される。クラスタ番号は、対応するクラスタ制御部３０６が管理するクラスタを識別する情報である。番号利用クラスタの有無は、対応するクラスタが利用されているか否かを示す情報である。番号利用クラスタ有無が「有」である場合は、対応するクラスタが利用されており、動作していることを示す。番号利用クラスタ有無が「無」である場合は、対応するクラスタが利用されておらず、動作していないことを示す。全コア数は、対応するクラスタに属する全ての仮想マシン起動端末３００のコンピュータリソース３０８が有するＣＰＵ（Central Processing Unit）コアの数を示す。利用コア数は、全コア数のうち、仮想マシンに利用されているコアの数を示す。全メモリ量は、対応するクラスタに属する全ての仮想マシン起動端末３００のコンピュータリソース３０８が有するメモリの量を示す。利用メモリ量は、全メモリ量のうち、仮想マシンに利用されているメモリの量を示す。
【００２６】
図６は、分散メモリ部３０２に記憶されるノード管理テーブルのデータ例を示す図である。本実施形態では、クラスタ番号毎にノード管理テーブルが記憶される。ノード番号は、対応するクラスタに属するノード制御部３０７を識別する情報である。番号利用の有無は、対応するノードが利用されているか否かを示す情報である。番号利用の有無が「有」である場合は、対応するノードが利用されており、動作していることを示す。番号利用の有無が「無」である場合は、対応するノードが利用されておらず、動作していないことを示す。全コア数は、対応するノードのコンピュータリソース３０８が有するＣＰＵコアの数を示す。利用コア数は、全コア数のうち、仮想マシンに利用されているコアの数を示す。全メモリ量は、対応するノードのコンピュータリソース３０８が有するメモリの量を示す。利用メモリ量は、全メモリ量のうち、仮想マシンに利用されているメモリの量を示す。
【００２７】
図１に戻り、分散メモリ制御部３０３は、分散メモリ部３０２に記憶されたクラスタ構成端末記憶テーブル、クラスタ管理テーブル、ノード管理テーブルを、分散ハッシュテーブルとして他の仮想マシン起動端末３００が有する分散メモリ制御部３０３との間で共有する。
【００２８】
制御部３０４は、クラウド制御部３０５と、クラスタ制御部３０６とを備えており、ユーザ端末１００から送信される仮想マシン起動要求に応じて、ノード制御部３０７に仮想マシンを起動させる。
クラウド制御部３０５は、ネットワークを介して接続されたユーザ端末１００から送信され、ロードバランサ２００によって複数の仮想マシン起動端末３００のうちから自身に割り振られた仮想マシン起動要求に応じて、仮想マシン起動要求に応じた仮想マシンを、複数のクラスタのうちいずれのクラスタに属する仮想マシン起動端末３００に起動させるかを、クラスタ管理テーブルに記憶されたコンピュータリソースの利用量に基づいて判定し、判定したクラスタを管理するクラスタ制御部３０６を有する仮想マシン起動端末３００に対して仮想マシン起動要求を送信する。また、クラウド制御部３０５は、自身の仮想マシン起動端末３００に対応付けられてクラスタ構成端末記憶テーブルに記憶されたクラウド制御部マスターフラグが「ｙｅｓ」を示す場合は、複数の仮想マシン起動端末３００が備えるクラスタ制御部３０６から負荷状況を取得する状況把握処理を行う。
【００２９】
クラスタ制御部３０６は、仮想マシン起動要求に応じた仮想マシンを、自身に属する複数のノードのうちいずれのノードのコンピュータリソース３０８に起動させるかを、ノード管理テーブルに記憶されたコンピュータリソースの量に基づいて判定し、判定したノードを有する仮想マシン起動端末３００に対して仮想マシン起動要求を送信する。ここで、クラスタ制御部３０６は、クラスタ構成端末管理テーブルに記憶された状態が予閉塞または閉塞を示す情報に対応付けられた仮想マシン起動端末３００を送信先から除外し、状態が通常である仮想マシン起動端末３００を、仮想マシン起動要求の送信先として判定する。また、クラスタ制御部３０６は、自身の仮想マシン起動端末３００に対応付けられてクラスタ構成端末記憶テーブルに記憶されたクラスタ制御部マスターフラグが「ｙｅｓ」を示す場合は、対応するクラスタに属する仮想マシン起動端末３００から負荷状況を取得する状況把握処理を行う。また、クラスタ制御部３０６は、複数の仮想マシン起動端末３００間のＶＬＡＮ（Virtual Local Area Network）構成の設定、管理や、クラウド制御部３０５から送信される状況把握問合せに対する応答を行なう。
【００３０】
ノード制御部３０７は、自身または他の仮想マシン起動端末３００が有するクラスタ制御部３０６から送信される仮想マシン起動要求に応じて、自身が有するコンピュータリソース３０８に仮想マシンを起動する。また、ノード制御部３０７は、分散メモリ部３０２のクラスタ構成端末記憶テーブルに記憶された自身の状態が予閉塞を示す場合、自身のコンピュータリソースに起動された仮想マシンを他の仮想マシン起動端末３００に移動させる。ここでは、例えばライブマイグレーションの機能により、仮想マシンを他の仮想マシン起動端末３００に移動させる。また、ノード制御部３０７は、クラスタ制御部３０６から送信される状況把握問合せに対する応答を行なう。
【００３１】
コンピュータリソース３０８は、仮想マシン起動端末３００が有するＣＰＵ、メモリなどの物理的なコンピュータ資源である。コンピュータリソース３０８には、仮想化部３０９によって仮想マシンが起動される。
仮想化部３０９は、ノード制御部３０７からの仮想マシン起動要求に応じて、仮想マシンをコンピュータリソース３０８に起動させる。ここでは、例えば、仮想マシン起動要求には、定められた仮想マシンのイメージファイルを示す情報が含まれており、仮想化部３０９は、仮想マシン起動要求に含まれるイメージファイルに基づいて仮想マシンを起動させる。
【００３２】
状態更新部３１０は、自身の状態を示す情報が通常状態を示す場合に送信される停止要求に応じて、クラスタ構成端末記憶テーブルに記憶された状態を示す情報を予閉塞に書き換えて記憶させ、予閉塞状態である場合に自身が有するコンピュータリソース３０８に仮想マシンが起動されていないと判定すると、クラスタ構成端末記憶テーブルに記憶された状態を示す情報を閉塞に書き換えて記憶させる。
管理端末４００は、状態更新部３１０に対して停止要求を送信する。
【００３３】
次に、本実施形態によるクラウドサービスシステム１の動作例を説明する。図７は、クラウドサービスシステム１によって仮想マシンが起動される動作例を示すシーケンス図である。
ユーザ端末１００は、ユーザからの入力に応じて、仮想マシン起動端末３００を宛先として仮想マシン起動要求を送信する（ステップＳ１）。ユーザ端末１００から送信された仮想マシン起動要求はロードバランサ２００に受信され、仮想マシン起動要求を割り振る送信先であるクラウド制御部３０５が判定される（ステップＳ２）。ここで、ロードバランサ２００が、仮想マシン起動端末３００−１のクラウド制御部３０５を仮想マシン起動要求の送信先であると判定すると、仮想マシン起動端末３００−１に仮想マシン起動要求を送信する（ステップＳ３）。
【００３４】
仮想マシン起動端末３００−１のクラウド制御部３０５は、仮想マシン起動端末３００から送信された仮想マシン起動要求を受信すると、仮想マシン起動要求を送信するクラスタを判定する（ステップＳ４）。仮想マシン起動端末３００−１が、仮想マシン起動端末３００−２のクラスタ制御部３０６が管理するクラスタを仮想マシン起動要求の送信先であると判定すると、仮想マシン起動端末３００−２のクラスタ制御部３０６に仮想マシン起動要求を送信する（ステップＳ５）。仮想マシン起動端末３００−２のクラスタ制御部３０６は、仮想マシン起動端末３００−１から送信された仮想マシン起動要求を受信すると、仮想マシン起動要求を送信するノード制御部３０７を判定する（ステップＳ６）。仮想マシン起動端末３００−２が、仮想マシン起動端末３００−５のノード制御部３０７を仮想マシン起動要求の送信先であると判定すると、仮想マシン起動端末３００−５のノード制御部３０７に仮想マシン起動要求を送信する（ステップＳ７）。
【００３５】
仮想マシン起動端末３００−５のノード制御部３０７は、仮想マシン起動端末３００−５が有するコンピュータリソース３０８に仮想マシンを起動させると、起動した仮想マシンを識別する仮想マシンＩＤを仮想マシン起動端末３００−２のクラスタ制御部３０６に送信する（ステップＳ８）。仮想マシン起動端末３００−２のクラスタ制御部３０６は、仮想マシンＩＤを仮想マシン起動端末３００−１のクラウド制御部３０５に送信する（ステップＳ９）。仮想マシン起動端末３００−１のクラウド制御部３０５は、仮想マシンＩＤをロードバランサ２００に送信する（ステップＳ１０）。ロードバランサ２００は、仮想マシンＩＤをユーザ端末１００に送信する（ステップＳ１１）。ここで、仮想マシンＩＤは例えばＩＰアドレスであり、ユーザ端末１００は、送信されたＩＰアドレスに基づいて、仮想マシン起動端末３００−５のコンピュータリソース３０８に起動された仮想マシンにアクセスして、仮想マシンを利用する。
【００３６】
図８は、クラウドサービスシステム１に新たな仮想マシン起動端末３００が追加される動作例を示すシーケンス図である。ここで、クラウドサービスシステム１には、仮想マシン起動端末３００−１〜仮想マシン起動端末３００−ｎまでのｎ台の仮想マシン起動端末３００が備えられているとする。クラウドサービスシステム１のネットワークに仮想マシン起動端末３００−ｎ＋１が接続されると、仮想マシン起動端末３００−ｎ＋１は、他の仮想マシン起動端末３００（仮想マシン起動端末３００−１〜仮想マシン起動端末３００−ｎ）に対して、ノードが追加されたことを登録する要求を送信する（ステップＳ２０〜Ｓ２２）。
【００３７】
仮想マシン起動端末３００−１〜仮想マシン起動端末３００−ｎのそれぞれの分散メモリ制御部３０３は、分散メモリ部３０２に記憶されたクラスタ構成端末記憶テーブルと、クラスタ管理テーブルと、ノード管理テーブルとに、追加された仮想マシン起動端末３００−ｎ＋１の情報を追加する。仮想マシン起動端末３００−１〜仮想マシン起動端末３００−ｎのそれぞれの分散メモリ制御部３０３は、分散メモリ部３０２に情報を追加すると、仮想マシン起動端末３００−ｎ＋１にノードの追加が完了したことを示す通知を送信する（ステップＳ２３〜２５）。また、仮想マシン起動端末３００−ｎ＋１は、ロードバランサ２００に、仮想マシン起動要求の送信先としての登録要求を送信する（ステップＳ２６）。ロードバランサ２００は、仮想マシン起動要求の送信先として仮想マシン起動端末３００−ｎ＋１を記憶し、登録が完了したことを示す通知を仮想マシン起動端末３００−ｎ＋１に送信する（ステップＳ２７）。ロードバランサ２００は、仮想マシン起動端末３００−ｎ＋１の負荷状況の取得処理を開始する。
【００３８】
図９は、クラウドサービスシステム１に接続された仮想マシン起動端末３００の状態遷移の動作例を示すシーケンス図である。
仮想マシン起動端末３００−ｎ＋１に対応する管理端末４００から、仮想マシン起動端末３００−ｎ＋１に対して停止要求が送信されると、仮想マシン起動端末３００−ｎ＋１は、他の仮想マシン起動端末３００（仮想マシン起動端末３００−１〜仮想マシン起動端末３００−ｎ）に対して、自身（仮想マシン起動端末３００−ｎ＋１）の状態が予閉塞に移行したことを通知する（ステップＳ３０〜Ｓ３２）。これにより、仮想マシン起動端末３００−ｎ＋１の状態が通常から予閉塞に移行する。
【００３９】
仮想マシン起動端末３００−ｎ＋１のノード制御部３０７は、分散メモリ部３０２に記憶されたクラスタ管理テーブルを参照してコンピュータリソースの空きが多い仮想マシン起動端末３００を検出する。仮想マシン起動端末３００−ｎ＋１は、検出した仮想マシン起動端末３００に対して、仮想マシンの移動を行なう（ステップＳ３３〜３５）。ここでは、仮想マシン起動端末３００−ｎ＋１は、自身のコンピュータリソース３０８上に起動された仮想マシンのそれぞれについて、選択的に移動先の仮想マシン起動端末３００を判定し、仮想マシンを移動させる。これにより、仮想マシン起動端末３００−ｎ＋１の状態が予閉塞から閉塞に移行する。
【００４０】
次に、仮想マシン起動端末３００−ｎ＋１は、他の仮想マシン起動端末３００（仮想マシン起動端末３００−１〜仮想マシン起動端末３００−ｎ）に対して、自身（仮想マシン起動端末３００−ｎ＋１）のノードの情報を削除する依頼を送信する（ステップＳ３６〜Ｓ３８）。仮想マシン起動端末３００−１〜仮想マシン起動端末３００−ｎのそれぞれの分散メモリ制御部３０３は、分散メモリ部３０２に記憶されたクラスタ構成端末記憶テーブルとノード管理テーブルとに含まれる仮想マシン起動端末３００−ｎ＋１のノード番号に対応する番号利用ノード有無を「無」に変更して記憶させ、仮想マシン起動端末３００−ｎ＋１の情報を削除する。また、仮想マシン起動端末３００−ｎ＋１は、ロードバランサ２００に、仮想マシン起動要求の送信先としての削除要求を送信する（ステップＳ３９）。ロードバランサ２００は、仮想マシン起動要求の送信先から仮想マシン起動端末３００−ｎ＋１を削除して記憶し、削除が完了したことを示す通知を仮想マシン起動端末３００−ｎ＋１に送信する（ステップＳ４０）。
【００４１】
なお、本実施形態における分散メモリ部３０２に記憶された情報は、複数の仮想マシン起動端末３００に分散して記憶されるため、各仮想マシン起動端末３００に記憶された情報が異なる時点が存在することがあり得る。そこで、分散メモリ制御部３０３は、定期的に分散メモリ部３０２のクラスタ構成端末記憶テーブルに記憶されたクラウド制御部マスターフラグを読み出して、マスターフラグについての制御処理を行うようにしても良い。例えば、分散メモリ制御部３０３は、クラスタ構成端末記憶テーブルに、クラウド制御部マスターフラグが「ｙｅｓ」に指定されたノードが存在しなければ、自身のノード番号に対応するクラウド制御部マスターフラグを「ｙｅｓ」に更新し、記憶させる。あるいは、分散メモリ制御部３０３は、クラウド制御部マスターフラグが「ｙｅｓ」に指定されたノードが複数存在し、その複数のノードに自身のノードが含まれる場合には、自身に対応するノードに対応するクラウド制御部マスターフラグを「ｎｏ」に更新し、記憶させる。あるいは、１つ以上のノードに対応するクラウド制御部マスターフラグに「ｙｅｓ」が指定されており、その１つ以上のノードのうちに自身のノードが存在しない場合には、分散メモリ制御部３０３はクラスタ構成端末記憶テーブルの更新を行なわない。あるいは、自身に対応する１つのノードのみに対応するクラウド制御部マスターフラグに「ｙｅｓ」が指定されている場合には、クラスタの負荷状況の把握処理を行う。ここでは、クラスタ管理テーブルやノード管理テーブルについても、同様の処理を行うようにしても良い。
【００４２】
以上説明したように、本発明によれば、従来のクラウド制御装置とクラスタ制御装置とノード制御装置との機能を１台のコンピュータ装置に備えて、ロードバランサによって振り分けられた仮想マシン起動要求を階層構造で処理することができる。これにより、ロードバランサによって同様の機能を持つ複数の仮想マシン起動端末に仮想マシン起動要求が振り分けられるため、特定のコンピュータ装置に処理負荷が集中することを防ぎ、可用性を向上させる階層構造のクラウドサービスシステムを提供することが可能となる。
【００４３】
また、クラウドサービスシステム１を構成する仮想マシン起動端末３００同士は、Ｐ２Ｐ型の分散ハッシュテーブルによる共有ストレージ技術により、クラスタ構成端末記憶テーブルと、クラスタ管理テーブルと、ノード管理テーブルとが記憶される。これにより、クラウドサービスシステム１が備える仮想マシン起動端末３００のコンピュータリソースの状況が各仮想マシン起動端末３００において把握できるため、必要に応じてクラウド制御部３０５やクラスタ制御部３０６として動作することができる。また、仮想マシン起動端末３００をクラウドサービスシステム１のネットワークから切り離す際、状態遷移による制御を行って、起動中の仮想マシンを他の仮想マシン起動端末３００に移動させる等の処理を行うことにより、サービスレベルへの影響を低減することができる。
【００４４】
このように、本実施形態に示した仮想マシン起動端末３００により、Ｐ２Ｐ型のクラウドサービスシステム１を構成することで、物理マシンとクラウドサービスシステム１との対応関係を保持する運用管理が軽減される。これにより、クラウドサービスシステム１を構成する物理マシンの障害に対する耐性が強くなる。同様に、物理マシンのメンテナンスのためにメンテナンス対象の物理マシンを停止する場合も、クラウドサービスシステム１全体への影響を低減することができる。また、本実施形態に示した各機能部を備える仮想マシン起動端末３００をクラウドサービスシステム１のネットワークに接続させることで、クラウドサービスシステム１へのコンピュータリソースの追加を行なうことができるため、クラウドサービスシステム１に対して要求されるコンピュータリソースの量の増減に対して、柔軟に対応することが可能である。また、従来の階層型のクラウドサービスシステムの可用性に対する本質的な問題であるシングルポイントフェイラーを回避できる。このように、本実施形態によれば、クラウドサービスシステム１の運用コストを大幅に削減することができ、競争力のあるクラウド提供ビジネスを展開することが期待できる。
【００４５】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより仮想マシンの起動を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００４６】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００４７】
１  クラウドサービスシステム
１００  ユーザ端末
２００  ロードバランサ
３００  仮想マシン起動端末
３０１  送受信部
３０２  分散メモリ部
３０３  分散メモリ制御部
３０４  制御部
３０５  クラウド制御部
３０６  クラスタ制御部
３０７  ノード制御部
３０８  コンピュータリソース
３０９  仮想化部
３１０  状態更新部
４００  管理端末
【図１】
2011028547.tif 000003
【図２】
2011028547.tif 000004
【図３】
2011028547.tif 000005
【図４】
2011028547.tif 000006
【図５】
2011028547.tif 000007
【図６】
2011028547.tif 000008
【図７】
2011028547.tif 000009
【図８】
2011028547.tif 000010
【図９】
2011028547.tif 000011
【手続補正書】
【提出日】平成21年8月12日(2009.8.12)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2011028547.tif 000012
【図２】
2011028547.tif 000013
【図３】
2011028547.tif 000014
【図４】
2011028547.tif 000015
【図５】
2011028547.tif 000016
【図６】
2011028547.tif 000017
【図７】
2011028547.tif 000018
【図８】
2011028547.tif 000019
【図９】
2011028547.tif 000020