【文献】
神屋 郁子 外3名,「複数のクラウドを利用したサーバ広域分散配置システムの構築」,電子情報通信学会論文誌,一般社団法人電子情報通信学会,2013年10月 1日,第J96-B巻,第10号,pp.1164-1175
【文献】
江丸 裕教 外1名,「動的配置法によるハイブリッドクラウドの運用管理コスト最小化」,情報処理学会 論文誌(ジャーナル)[online],情報処理学会,2013年 4月15日,第54巻,第4号,pp.1581-1591
(58)【調査した分野】(Int.Cl.,DB名)
第1のクラウドと、利用に応じて前記第1のクラウドを利用するより高い費用が発生する第2のクラウドと、仮想マシンを前記第1のクラウド及び前記第2のクラウドのいずれにて動作させるかを制御する負荷分散装置とを備える負荷分散システムであって、
前記負荷分散装置は、
前記第1のクラウドにおけるリソース利用率と前記第1のクラウドにおいて動作している仮想マシンのリソース利用率とを取得するリソース利用率取得手段と、
仮想マシンのリソース利用率が予め定められた第1の閾値を超えている場合において、前記第1のクラウドにおけるリソース利用率が予め定められた第2の閾値を超えているとき、前記第2のクラウドにおいて新たな仮想マシンを起動させ、前記第1のクラウドにおけるリソース利用率が前記第2の閾値以下であるとき、前記第1のクラウドにおいて新たな仮想マシンを起動させる仮想マシン管理手段と、
前記第2のクラウドで動作する仮想マシンの応答遅延時間を取得する遅延時間取得手段と、
を有し、
仮想マシンでユーザに提供するサービスには所定時間内の応答が要求される第1のサービスと、所定時間内の応答が要求されない第2のサービスとがあり、
前記仮想マシン管理手段は、前記遅延時間取得手段により得られた応答遅延時間が前記所定時間に応じて予め定められた遅延閾値を超えた場合に、前記第2のクラウドで動作している仮想マシンであって前記第1のサービスを提供している仮想マシンを前記第1のクラウドに移動させる、
ことを特徴とする負荷分散システム。
第1のクラウドと、利用に応じて前記第1のクラウドを利用するより高い費用が発生する第2のクラウドと、仮想マシンを前記第1のクラウド及び前記第2のクラウドのいずれにて動作させるかを制御する負荷分散装置とを備える負荷分散システムにおける負荷分散装置であって、
前記第1のクラウドにおけるリソース利用率と前記第1のクラウドにおいて動作している仮想マシンのリソース利用率とを取得するリソース利用率取得手段と、
仮想マシンのリソース利用率が予め定められた第1の閾値を超えている場合において、前記第1のクラウドにおけるリソース利用率が予め定められた第2の閾値を超えているとき、前記第2のクラウドにおいて新たな仮想マシンを起動させ、前記第1のクラウドにおけるリソース利用率が前記第2の閾値以下であるとき、前記第1のクラウドにおいて新たな仮想マシンを起動させる仮想マシン管理手段と、
前記第2のクラウドで動作する仮想マシンの応答遅延時間を取得する遅延時間取得手段と、
を有し、
仮想マシンでユーザに提供するサービスには所定時間内の応答が要求される第1のサービスと、所定時間内の応答が要求されない第2のサービスとがあり、
前記仮想マシン管理手段は、前記遅延時間取得手段により得られた応答遅延時間が前記所定時間に応じて予め定められた遅延閾値を超えた場合に、前記第2のクラウドで動作している仮想マシンであって前記第1のサービスを提供している仮想マシンを前記第1のクラウドに移動させる、
ことを特徴とする負荷分散装置。
第1のクラウドと、利用に応じて前記第1のクラウドを利用するより高い費用が発生する第2のクラウドと、仮想マシンを前記第1のクラウド及び前記第2のクラウドのいずれにて動作させるかを制御する負荷分散装置とを備える負荷分散システムにおける負荷分散方法であって、
仮想マシンでユーザに提供するサービスには所定時間内の応答が要求される第1のサービスと、所定時間内の応答が要求されない第2のサービスとがあり、
前記第1のクラウドにおけるリソース利用率と前記第1のクラウドにおいて動作している仮想マシンのリソース利用率とを取得するリソース利用率取得ステップと、
仮想マシンのリソース利用率が予め定められた第1の閾値を超えている場合において、前記第1のクラウドにおけるリソース利用率が予め定められた第2の閾値を超えているとき、前記第2のクラウドにおいて新たな仮想マシンを起動させ、前記第1のクラウドにおけるリソース利用率が前記第2の閾値以下であるとき、前記第1のクラウドにおいて新たな仮想マシンを起動させる仮想マシン管理ステップと、
前記第2のクラウドで動作する仮想マシンの応答遅延時間を取得する遅延時間取得ステップと、
前記遅延時間取得ステップにより得られた応答遅延時間が前記所定時間に応じて予め定められた遅延閾値を超えた場合に、前記第2のクラウドで動作している仮想マシンであって前記第1のサービスを提供している仮想マシンを前記第1のクラウドに移動させる仮想マシン移動ステップと、
を有することを特徴とする負荷分散方法。
【発明を実施するための形態】
【0013】
以下、図面を参照して、本発明の実施形態における負荷分散システム、負荷分散装置及び負荷分散方法を説明する。
図1は、本発明の実施形態における負荷分散システムの構成例を示すブロック図である。同図に示すように、負荷分散システムでは、自社クラウド環境(プライベートクラウド)と他社クラウド環境(パブリッククラウド)とがネットワーク6を介して通信可能に接続されている。また、複数のユーザ端末7がネットワーク5を介して自社クラウド環境と通信可能に接続されている。ユーザ端末7は、ネットワーク5を介して自社クラウド環境にて提供されるサービスと、自社クラウド環境を介して他社クラウド環境にて提供されるサービスとを受ける。本実施形態におけるサービスは、自社クラウド環境における仮想マシンや他社クラウド環境における仮想マシンによって行われるデータ処理などである。
【0014】
自社クラウド環境は、サービスを利用するユーザや企業、又はクラウドインフラ提供事業者が自ら管理、運用するコンピュータ・リソースで構成されるクラウド環境である。自社クラウド環境は、負荷分散装置1、管理サーバ2、複数の処理サーバ3、及び、ルータ4を備えている。負荷分散装置1、管理サーバ2、複数の処理サーバ3、及び、ルータ4は、自社クラウド環境内におけるプライベートネットワークを介して互いに通信可能に接続されている。負荷分散装置1、管理サーバ2、及び、複数の処理サーバ3は、ルータ4を介してネットワーク6に接続されており、他社クラウド環境との通信を行うことができる。また、負荷分散装置1は、ネットワーク5を介して複数のユーザ端末7と通信可能に接続されている。ユーザ端末7は、負荷分散装置1を介して、自社クラウド環境及び他社クラウド環境にて提供されるサービスを受ける。
【0015】
処理サーバ3は、複数の仮想マシン(Virtual Machine:VM)を動作させることができる。処理サーバ3は、自装置で動作する仮想マシン上においてプログラム等を実行させることにより、ユーザ端末7を操作するユーザに対してサービスの提供を行う。負荷分散装置1は、自社クラウド環境における処理サーバ3における各仮想マシンの負荷や他社クラウド環境における仮想マシンの応答遅延に応じて、ユーザ端末7から受信するユーザ要求をいずれかの仮想マシンに割り当てる振分けを行う。管理サーバ2は自社クラウド環境と他社クラウド環境における仮想マシンの管理と制御とを行う。
【0016】
他社クラウド環境は、他の企業や他のクラウドインフラ提供事業者が管理、運営するコンピュータ・リソースで構成されるクラウド環境である。本実施形態では、他社クラウド環境における仮想マシンを利用すると、利用時間や利用したコンピュータ・リソースの量に応じて利用コストが発生することを前提としている。また、他社クラウド環境の利用コストは、自社クラウド環境の利用コストよりも高い利用コストとしている。また、他社クラウド環境の仮想マシンを利用したサービスの応答時間は、自社クラウド環境の仮想マシンを利用したサービスの応答時間よりも長い時間を要するものとしている。
【0017】
他社クラウド環境は、ルータ81、及び、複数の処理サーバ82を備えている。ルータ81と複数の処理サーバ82とは他社クラウド環境内におけるプライベートネットワークを介して互いに通信可能に接続されている。処理サーバ82は、複数の仮想マシンを動作させることができる。処理サーバ82は、自装置で動作する仮想マシン上においてプログラム等を実行させることにより、ユーザに対してサービスの提供を行う。
【0018】
以下、自社クラウド環境における負荷分散装置1について説明する。負荷分散装置1は、仮想マシン登録部11、仮想マシン管理部12、記憶部13、遅延時間取得部14、及び、負荷分散部15を有している。仮想マシン登録部11は、自社クラウド環境と他社クラウド環境とを区別して、負荷分散の対象にする仮想マシンを登録する。仮想マシン管理部12は、自社クラウド環境における処理サーバ3のコンピュータ・リソースの使用状況(リソース利用率)を取得する。本実施形態では、コンピュータ・リソースとしてCPUとメモリとを対象にした説明を行うが、CPU及びメモリ以外をコンピュータ・リソースの対象にしてもよい。
【0019】
記憶部13には、仮想マシン管理テーブルとクラウド管理テーブルとが記憶されている。仮想マシン管理テーブルは、自社クラウド環境及び他社クラウド環境において稼働している仮想マシンであって負荷分散装置1が負荷分散の対象にする仮想マシンに関する情報を記憶するテーブルである。クラウド管理テーブルは、負荷分散装置1が負荷分散の対象にする仮想マシンが稼働しているクラウド環境に関する情報を記憶するテーブルである。
【0020】
図2は、本実施形態における記憶部13が記憶する仮想マシン管理テーブルの一例を示す図である。同図に示すように、仮想マシン管理テーブルは、物理マシン名、仮想マシン名、自社/他社フラグ、サービスクラス、システム名、CPU利用率、CPU利用率閾値、メモリ利用率、及び、メモリ利用率閾値の項目の列を有している。仮想マシン管理テーブルにおいて、各行は仮想マシンごとに存在する。仮想マシン管理テーブルの各行は、仮想マシンに対応する物理マシン名、仮想マシン名、自社/他社フラグ、サービスクラス、システム名、CPU利用率、CPU利用率閾値、メモリ利用率、及び、メモリ利用率閾値を示している。本実施形態では、CPU利用率とメモリ利用率とが仮想マシンにおける負荷を示す指標としてのリソース利用率として用いられる。
【0021】
物理マシン名は、仮想マシンが配置されている処理サーバ3を識別する名称である。自社/他社フラグは、仮想マシンが自社クラウド環境と他社クラウド環境とのいずれに位置しているかを示す。本実施形態では、自社クラウド環境で仮想マシンが動作している場合には自社/他社フラグに「0」が割り当てられる。他社クラウド環境で仮想マシンが動作している場合には自社/他社フラグに「1」が割り当てられる。サービスクラスは、仮想マシンがユーザ(ユーザ端末7)に提供しているサービスに要求される条件を示す。本実施形態では、応答時間に応じて分類され、応答時間が所定値より小さいことがサービスの条件であることをサービスクラスに「A」が割り当てられる。応答時間に対する条件がないサービスのサービスクラスに「B」が割り当てられる。
【0022】
システム名は、仮想マシンが属するシステムを識別する識別子(名称)である。CPU利用率は、仮想マシンのCPU利用率である。メモリ利用率は、仮想マシンのメモリ利用率である。また、CPU利用率及びメモリ利用率は、各仮想マシンの所定時間における平均値である。CPU利用率閾値及びメモリ利用率閾値は、ユーザの要求を仮想マシンに振分ける際と仮想マシンの増設及び減設をする際とに用いられる基準値である。また、CPU利用率閾値及びメモリ利用率閾値には、予め定められた値が用いられる。
【0023】
図2に示す例では、物理マシン名には自社クラウド環境における処理サーバ3を識別するhostA〜hostBが登録されている。仮想マシン名にはGuestA〜GuestEが登録されている。GuestA〜GuestCが自社クラウド環境において動作している仮想マシンであり、GuestD〜GuestEが他社クラウド環境において動作している仮想マシンである。GuestA〜GuestBに対するサービスクラスは応答時間に対して所定の条件が定められているクラスAである。GuestC〜GuestEに対するサービスクラスは、応答時間に対して条件が定められていない、又は他社クラウド環境においても満たすことができる緩い条件が定められている。
【0024】
また、GuestA、GuestBはsystemAとして管理されている。GuestC、GuestDはsystemBとして、GuestEはsystemCとして管理されている。GuestA〜GuestCそれぞれに対するCPU利用率は20%、20%、50%であり、メモリ利用率は30%、30%、60%となっている。なお、本実施形態では、他社クラウド環境において動作している仮想マシンが割り振られている処理サーバ82の物理マシン名、CPU利用率及びメモリ利用率を取得できないものとしている。
【0025】
図3は、本実施形態における記憶部13が記憶するクラウド管理テーブルの一例を示す図である。同図に示すように、クラウド管理テーブルは、クラウド名、自社/他社フラグ、CPU利用率測定値、CPU利用率閾値、メモリ利用率測定値、メモリ利用率閾値、遅延測定値、及び、遅延閾値の各項目の列を有している。クラウド管理テーブルにおいて、各行は、自社クラウド及び他社クラウドごとに存在する。クラウド管理テーブルの各行は、クラウド(クラウド環境)に対応するクラウド名、自社/他社フラグ、CPU利用率測定値、CPU利用率閾値、メモリ利用率測定値、メモリ利用率閾値、遅延測定値、及び、遅延閾値を示している。本実施形態では、CPU利用率測定値及びメモリ利用率測定値がクラウド環境における負荷を示す指標としてのリソース利用率として用いられる。
【0026】
クラウド名は、クラウド環境を識別する名称である。自社/他社フラグは、クラウド環境が自社クラウド環境と他社クラウド環境とのいずれであるかを示す。「0」が自社クラウド環境であることを示し、「1」が他社クラウド環境であることを示す。CPU利用率測定値は、クラウド環境における処理サーバ3(物理マシン)のCPU利用率である。メモリ利用率測定値は、クラウド環境における処理サーバ3(物理マシン)のメモリ利用率である。本実施形態においてCPU利用率測定値とメモリ利用率測定値とには、複数の処理サーバ3それぞれのCPU利用率の平均値とメモリ利用率の平均値とを用いる場合を説明するが、平均値以外の値、例えば総和や中央値などの他の統計値を用いるようにしてもよい。遅延測定値は、他社クラウド環境における仮想マシンの応答遅延時間である。
【0027】
CPU利用率閾値、メモリ利用率閾値、及び、遅延閾値は、仮想マシンの増設、減設及び移動をする際に用いられる基準値である。また、クラウド管理テーブルにおけるCPU利用率閾値及びメモリ利用率閾値には所定の値が予め設定される。また、遅延閾値には、CPU利用率閾値及びメモリ利用率閾値と同様に、所定の値が予め設定される。遅延閾値は、サービスクラスが「A」のサービスを提供している仮想マシン(以下、クラスAの仮想マシンという。)に要求される応答時間に基づいて定められる閾値である。また、遅延閾値は、他社クラウド環境の仮想マシンの応答遅延時間が遅延閾値より大きい場合にサービス品質に低下が生じるか否かを判定できる閾値である。
図3に示す例では、遅延閾値に150[msec]が設定されている。
【0028】
図1に戻り負荷分散装置1の説明を続ける。遅延時間取得部14は、他社クラウド環境における仮想マシンとの間における応答遅延時間を取得する。負荷分散部15は、ユーザ端末7からユーザの要求を受信した際に、自社クラウド環境と他社クラウド環境とにおいて動作している仮想マシンのいずれを用いてサービスを提供させるかを判定してユーザの要求を振分ける。負荷分散部15は、仮想マシン管理テーブル及びクラウド管理テーブルを参照し、自社クラウド環境におけるコンピュータ・リソースの使用状況と、他社クラウド環境の応答遅延時間とに基づいて、ユーザの要求の振分けを行う。管理サーバ2は、仮想マシンの増設及び減設や、自社クラウド環境と他社クラウド環境との間における仮想マシンの移動を行う。
【0029】
図4から
図7は、本実施形態における負荷分散装置1が行う負荷分散処理を示すフローチャートである。負荷分散装置1において、負荷分散処理が開始されると、仮想マシン登録部11は、負荷分散の対象にする仮想マシンに関する情報を記憶部13の仮想マシン管理テーブルに記憶させて登録するとともに、自社クラウド環境と負荷を分散させる際に用いる他社クラウド環境とに関する情報をクラウド管理テーブルに記憶させて登録する(ステップS11)。なお、仮想マシン登録部11が仮想マシン管理テーブル及びクラウド管理テーブルに情報を登録した直後においては、CPU利用率及びメモリ利用率には値がない状態である。また、仮想マシン登録部11が各テーブルに登録する情報は、ユーザや自社クラウド環境の管理者などにより予め定められた情報である。
【0030】
仮想マシン管理テーブルに負荷分散の対象となる仮想マシンが登録されると、仮想マシン管理部12は、仮想マシン管理テーブルに登録されている仮想マシンの起動を要求する制御情報を管理サーバ2に送信する。管理サーバ2は、仮想マシン管理部12から受信した制御情報に応じて、自社クラウド環境における処理サーバ3上で仮想マシンを起動させる(ステップS12)。ここでは、他社クラウド環境を利用すると利用コストが発生するため、自社クラウド環境における処理サーバ3を優先的に用いることを前提としている。しかし、仮想マシン登録部11が仮想マシン管理テーブルに登録する仮想マシンに関する情報において、他社クラウド環境で動作させることが「自社/他社フラグ」で定められている場合には、管理サーバ2が他社クラウド環境における処理サーバ82で仮想マシンを起動させてもよい。
【0031】
管理サーバ2による仮想マシンの起動が完了すると、仮想マシン管理部12は、自社クラウド環境における各仮想マシンのCPU利用率及びメモリ利用率を取得し、取得したCPU利用率及びメモリ利用率を仮想マシン管理テーブルに記憶させて登録する。また、仮想マシン管理部12は、自社クラウド環境における各処理サーバ3のCPU利用率及びメモリ利用率を取得する。仮想マシン管理部12は、取得した各処理サーバ3のCPU利用率からCPU利用率測定値を算出し、取得した各処理サーバ3のメモリ利用率からメモリ利用率測定値を算出する。仮想マシン管理部12は、算出したCPU利用率測定値及びメモリ利用率測定値をクラウド管理テーブルに記憶させて登録する。また、遅延時間取得部14は、他社クラウド環境において動作している仮想マシンの応答遅延時間を測定し、測定した応答遅延時間を遅延測定値としてクラウド管理テーブルに記憶させて登録する(ステップS13)。なお、遅延時間取得部14による応答遅延の測定対象は、他社クラウド環境における一つの仮想マシンでもよいし、複数の仮想マシンでもよい。複数の仮想マシンを測定対象にした場合、遅延時間取得部14は測定結果の平均値などの統計値をクラウド管理テーブルに登録する。
【0032】
仮想マシン管理部12は、自社クラウド環境の管理者などからシステム停止の要求が入力されたか否かを判定し(ステップS14)、システム停止の要求が入力されている場合(ステップS14:YES)、負荷分散処理を終了させる。
システム停止の要求が入力されていない場合(ステップS14:NO)、仮想マシン管理部12は自社クラウド環境の各仮想マシンにおけるCPU利用率及びメモリ利用率を取得し、仮想マシン管理テーブルを更新する。また、仮想マシン管理部12は、自社クラウド環境の各処理サーバ3におけるCPU利用率及びメモリ利用率を取得し、クラウド管理テーブルを更新する。また、遅延時間取得部14は、他社クラウド環境における仮想マシンの応答遅延を測定し、クラウド管理テーブルを更新する(ステップS15)。ステップS15における仮想マシン管理部12及び遅延時間取得部14による処理は、ステップS13における処理と同様の処理である。
【0033】
仮想マシン管理テーブル及びクラウド管理テーブルの更新が完了すると、仮想マシン管理部12は、仮想マシン管理テーブルを参照し、システムごとに自社クラウド環境の仮想マシンすべてのCPU利用率又はメモリ利用率のリソース値が対応する閾値を超えているか否かを判定する(ステップS16)。例えば、
図2に示した仮想マシン管理テーブルにおいては、システム名「systemA」に属する自社クラウド環境の仮想マシン(GuestA及びGuestB)のCPU利用率がともにCPU利用率閾値を超えているか否か、自社クラウド環境の仮想マシン(GuestA及びGuestB)のメモリ利用率がともにメモリ利用率閾値を超えているか否かを判定する。なお、システムsystemBに属する仮想マシンのうち自社クラウド環境において動作している仮想マシンは仮想マシンGuestCのみであるので、仮想マシンGuestCが判定の対象になる。
【0034】
ステップS16の判定においてリソース値が閾値を超えていない場合(ステップS16:NO)、仮想マシン管理部12は、処理をステップS14に戻す。一方、リソース値が閾値を超えている場合(ステップS16:YES)、仮想マシン管理部12は、クラウド管理テーブルを参照し、自社クラウド環境のCPU利用率測定値及びメモリ利用率測定値のリソース値のうち、対応する閾値を超えているリソース値があるか否かを判定する(ステップS17)。
【0035】
ステップS17の判定において自社クラウド環境のリソース値に閾値を超えているリソース値がない場合(ステップS17:NO)、仮想マシン管理部12は、第1の振分処理を行う(ステップS18)。第1の振分処理は、自社クラウド環境のリソース利用率が低い状況において、自社クラウド環境に負荷の高いシステム(仮想マシン)が存在する場合に行われる処理である。
【0036】
第1の振分処理(
図5)を開始すると、仮想マシン管理部12は、自社クラウド環境に仮想マシンの増設を要求する情報を管理サーバ2に送信して、管理サーバ2によって処理サーバ3上に仮想マシンが起動される(ステップS181)。ステップS181において起動させる仮想マシンは、閾値を超えていたリソース値に対応する仮想マシンと同じシステムに属する仮想マシンである。
【0037】
負荷分散部15は、ユーザの要求があるか否かを判定し(ステップS182)、ユーザの要求がない場合(ステップS182:NO)、第1の振分処理を終了させて、処理をステップS14(
図4)に戻す。ユーザの要求がある場合(ステップS182:YES)、負荷分散部15は、仮想マシン管理テーブルを参照し、ユーザの要求を自社クラウド環境の仮想マシンに振分けて、自社クラウドの仮想マシンにサービスを提供させる(ステップS183)。このとき、負荷分散部15は、リソース利用率が最も低い仮想マシンや、リソース利用率が閾値を超えていない仮想マシンにユーザの要求を振分ける。負荷分散部15は、ユーザの要求を振分けると、第1の振分処理を終了させて処理をステップS14に戻す。
【0038】
ステップS17の判定において自社クラウド環境のリソース値に閾値を超えているリソース値がある場合(ステップS17:YES)、仮想マシン管理部12は、クラウド管理テーブルを参照し、他社クラウド環境の遅延測定値が遅延閾値を超えているか否かを判定する(ステップS19)。
【0039】
ステップS19の判定において遅延測定値が遅延閾値を超えていない場合(ステップS19:NO)、仮想マシン管理部12は、第2の振分処理を行う(ステップS20)。第2の振分処理は、自社クラウド環境のリソース利用率が高、他社クラウド環境の応答遅延が小さい状態において、自社クラウド環境に負荷の高いシステム(仮想マシン)が存在する場合に行われる処理である。
【0040】
第2の振分処理(
図6)を開始すると、仮想マシン管理部12は、他社クラウド環境にクラスAの仮想の増設を要求する情報を管理サーバ2に送信して、管理サーバ2によって他社クラウド環境の処理サーバ82上に仮想マシンが起動される(ステップS201)。ステップS201において起動させる仮想マシンは、ステップS181と同様に、閾値を超えていたリソース値に対応する仮想マシンと同じシステムに属する仮想マシンである。
【0041】
負荷分散部15は、ユーザの要求があるか否かを判定し(ステップS202)、ユーザの要求がない場合(ステップS202:NO)、第2の振分処理を終了させて、処理をステップS14(
図4)に戻す。ユーザの要求がある場合(ステップS202:YES)、負荷分散部15は、仮想マシン管理テーブルを参照し、ユーザの要求するサービスクラスに対応する仮想マシンにユーザの要求を振分けて(ステップS203)、当該仮想マシンにサービスを提供させる。このとき、負荷分散部15は、仮想マシン管理テーブルを参照し、ユーザの要求するサービスクラス及びシステムに対応する仮想マシンのうち、リソース利用率が最も低い仮想マシンや、リソース利用率が閾値を超えていない仮想マシンにユーザの要求を振分ける。負荷分散部15は、ユーザの要求を振分けると、第2の振分処理を終了させて処理をステップS14に戻す。
【0042】
ステップS19の判定において遅延測定値が遅延閾値を超えている場合(ステップS19:YES)、仮想マシン管理部12は、第3の振分処理を行う(ステップS21)。第3の振分処理は、自社クラウド環境のリソース利用率が高く、他社クラウド環境の応答遅延が大きい状態において、自社クラウド環境に負荷の高いシステム(仮想マシン)が存在する場合に行われる処理である。
【0043】
第3の振分処理(
図7)を開始すると、仮想マシン管理部12は、仮想マシンの再構成を行う(ステップS211)。ステップS211における仮想マシンの再構成は、他社クラウド環境において動作しているクラスAの仮想マシンを自社クラウド環境に移動させる処理である。クラスAの仮想マシンを自社クラウド環境に移動させるために、自社クラウド環境において動作しているクラスBの仮想マシンを他社クラウド環境に移してリソースを確保した後に、自社クラウド環境においてクラスAの仮想マシンを起動させる。
【0044】
具体的には、仮想マシン管理部12は、仮想マシン管理テーブルを参照して、他社クラウド環境において動作しているクラスAの仮想マシン数を検出する。仮想マシン管理部12は、検出した台数分の仮想マシンを自社クラウド環境において起動させるために必要となるリソース量を算出し、算出したリソース量を確保するために自社クラウド環境から他社クラウド環境に移すクラスBの仮想マシンの台数を算出する。仮想マシン管理部12は、算出したクラスBの仮想マシンの台数分の仮想マシンを他社クラウド環境において起動させることを要求する制御情報を管理サーバ2に送信する。
【0045】
算出した台数分の仮想マシンが他社クラウド環境において起動すると、仮想マシン管理部12は、自社クラウド環境において動作しているクラスBの仮想マシンが提供するサービスを、他社クラウド環境において新たに起動させたクラスBの仮想マシンに移動させることを要求する制御情報を管理サーバ2に送信する。自社クラウド環境から他社クラウド環境へのクラスBのサービスの移動が完了すると、仮想マシン管理部12は、自社クラウド環境において動作している、算出した台数分のクラスBの仮想マシンの停止を要求する制御情報を管理サーバ2に送信する。
【0046】
自社クラウド環境においてクラスBの仮想マシンを停止させてクラスAの仮想マシンを起動させるために必要なリソースを確保できると、仮想マシン管理部12は、他社クラウド環境で動作しているクラスAの仮想マシンの台数と同じ台数の仮想マシンを自社クラウド環境において起動させることを要求する制御情報を管理サーバ2に送信する。
【0047】
自社クラウド環境において新たなクラスAの仮想マシンが起動すると、仮想マシン管理部12は、他社クラウド環境において動作しているクラスAの仮想マシンが提供するサービスを、自社クラウド環境において新たに起動したクラスAの仮想マシンに移動させることを要求する制御情報を管理サーバ2に送信する。他社クラウド環境から自社クラウド環境へのクラスAのサービスの移動が完了すると、仮想マシン管理部12は、他社クラウド環境において動作しているクラスAの仮想マシンの停止を要求する制御情報を管理サーバ2に送信する。他社クラウド環境におけるクラスAの仮想マシンが停止すると仮想マシンの再構成は完了する。
【0048】
以上の処理を仮想マシンの再構成として行うことにより、負荷分散装置1は、クラスAの仮想マシンを自社クラウド環境に集めて、応答遅延時間が増加した場合においても、サービスクラスがクラスAのユーザの要求に対するサービス品質を維持することができ、ユーザの利便性の低下を抑制することができる。
【0049】
負荷分散部15は、仮想マシンの再構成が完了するとユーザの要求があるか否かを判定し(ステップS212)、ユーザの要求がない場合(ステップS212:NO)、第3の振分処理を終了させて、処理をステップS14(
図4)に戻す。ユーザの要求がある場合(ステップS212:YES)、負荷分散部15は、ユーザの要求のサービスクラスがクラスAであれば自社クラウド環境の仮想マシンに振分け、ユーザの要求のサービスクラスがクラスBであれば他社クラウド環境の仮想マシンに振分けて、ユーザの要求するサービスを提供させる(ステップS213)。このとき、負荷分散部15は、仮想マシン管理テーブルを参照し、リソース利用率が低い仮想マシンや、リソース利用率が閾値を超えていない仮想マシンにユーザの要求を振分ける。負荷分散部15は、ユーザの要求を振分けると、第3の振分処理を終了させて処理をステップS14に戻す。
【0050】
以上のように、負荷分散装置1は、自社クラウド環境におけるコンピュータ・リソースに対する負荷に応じて仮想マシンの増設や仮想マシンの再構成を行い、自社クラウド環境を優先的に利用することにより他社クラウド環境の利用を抑えて発生する利用コストを削減する。
【0051】
図8は、本実施形態における分散処理システムの動作例を示すシーケンス図である。
図8には、自社クラウド環境におけるコンピュータ・リソースに対する負荷が高く閾値を超え、かつ他社クラウド環境における遅延測定値が遅延閾値を超えている場合(ピークトラフィック時)における動作例が示されている。負荷分散装置1が負荷分散処理を開始すると、仮想マシン登録部11が仮想マシン管理テーブルに仮想マシンを登録し(ステップS31)、仮想マシン管理部12が仮想マシンの起動を要求する制御情報を管理サーバ2に送信する(ステップS32)。管理サーバ2が自社クラウド環境の処理サーバ3において仮想マシンを起動させると(ステップS33)、仮想マシン管理部12が各仮想マシンのリソース利用率を取得し(ステップS34)、遅延時間取得部14が遅延測定値を取得し(ステップS35)、仮想マシン管理テーブル及びクラウド管理テーブルが更新される。
【0052】
仮想マシン管理部12は、自社クラウド環境におけるリソース値及び他社クラウド環境における遅延測定値に基づく判定により仮想マシンの再構成の要否の判定を行う(ステップS36)。
図8に示している例では、ピークトラフィック時であるため、仮想マシン管理部12から管理サーバ2に対して仮想マシンの再構成を要求する制御情報が送信される(ステップS37)。制御情報を受信した管理サーバ2は、他社クラウド環境においてクラスBの仮想マシンを起動させた後に自社クラウド環境におけるクラスBの仮想マシンを停止させるとともに、自社クラウド環境においてクラスAの仮想マシンを起動させた後に他社クラウド環境におけるクラスAの仮想マシンを停止させて、仮想マシンの再構成を行う(ステップS38)。
【0053】
ユーザ端末7から負荷分散装置1にユーザ要求が入力されると(ステップS40)、負荷分散部15がユーザ要求のサービスクラスに応じて振分け先を判定し(ステップS41)、ユーザ要求のサービスクラスがクラスAの場合には自社クラウド環境の仮想マシンに振分け(ステップS42)、ユーザ要求のサービスクラスがクラスBの場合には他社クラウド環境の仮想マシンに振分ける(ステップS43)。
【0054】
図9は、本実施形態における分散処理システムの別の動作例を示すシーケンス図である。
図9には、自社クラウド環境におけるコンピュータ・リソースに対する負荷が低く閾値を超えていない場合(低トラフィック時)における動作例が示されている。なお、
図9におけるステップS31からステップS36までの各処理は、
図8に示した各処理と同じであるので説明を省略する。
【0055】
図9に示している例では、低トラフィック時であるため、ステップS36における仮想マシンの再構成の要否の判定において、再構成が不要と判定されるため、仮想マシンに対する操作は行われない。この後に、ユーザ端末7から負荷分散装置1にユーザ要求が入力されると(ステップS50)、負荷分散部15が仮想マシン管理テーブルを参照してユーザ要求の振分け先を判定し、自社クラウド環境の仮想マシンにユーザ要求を振分ける(ステップS52)。
【0056】
以上のように、本実施形態における負荷分散装置1による負荷分散処理を行うことにより、自社クラウド環境における仮想マシンを優先的に利用することができ、他社クラウド環境の仮想マシンを利用することにより発生する利用コストを抑えることができる。また、負荷分散装置1は、自社クラウド環境におけるリソース利用率と他社クラウド環境の応答遅延とに基づいて、自社クラウド環境と他社クラウド環境とのいずれのクラウド環境を利用するかを選択しているので、仮想マシンで提供するサービス品質の低下を抑えつつ、利用コストの削減を図ることができる。具体的には、自社クラウド環境においてリソースが逼迫している場合には、応答時間に対する要求がない又は緩いクラスBの仮想マシンを他社クラウド環境に移動させ、クラスAの仮想マシンを自社クラウド環境にて起動させる。これにより、クラスAの仮想マシンで提供するサービス品質を低下させずに、他社クラウド環境の利用を削減することができる。
【0057】
また、本実施形態における負荷分散装置1を用いることにより、サービス利用ユーザや企業ユーザは、自社クラウド環境の処理サーバ3を優先的に使用するので、他社クラウド環境の利用コストを削減することができる。また、他社クラウド環境の応答遅延が増加した場合でも、サービス品質を維持することができ、ユーザの利便性を向上させることができる。また、負荷分散装置1を用いることにより、クラウドインフラ提供事業者は、ユーザにプライベートクラウドを提供する場合に、他社クラウド環境のコンピュータ・リソースを必要に応じて活用することができるので、設備コストの低減を図ることができる。また、ネットワーク6における通信速度が低下して、他社クラウド環境の応答遅延が増加した場合でも、安定したサービス品質を保証することができ、SLA等の品質保証型のサービスも可能となる。
【0058】
なお、負荷分散装置1は、他社クラウド環境において動作させている仮想マシンが存在している場合に、自社クラウド環境のコンピュータ・リソースに余裕があれば、他社クラウド環境の仮想マシンを自社クラウド環境に移動させてもよい。ここで、自社クラウド環境のコンピュータ・リソースに余裕がある状態とは、自社クラウド環境における各リソース値(CPU利用率測定値及びメモリ利用率測定値)すべてが対応する閾値以下になっている状態である。
図10は、本実施形態における分散処理システムの異なる動作例を示すシーケンス図である。
【0059】
図10において、負荷分散装置1の仮想マシン管理部12が自社クラウド環境の各仮想マシンのリソース利用率を取得し(ステップS61)、仮想マシン管理テーブルが更新される。仮想マシン管理部12は、クラウド管理テーブルを参照して、仮想マシンの再構成の要否判定を行う(ステップS62)。具体的には、自社クラウド環境のCPU利用率測定値がCPU利用率閾値以下であり、かつメモリ利用率測定値がメモリ利用率閾値以下であるか否かを判定し、測定値がともに閾値以下である場合に他社クラウド環境において仮想マシンが動作しているときに、自社クラウド環境に仮想マシンを移動させる仮想マシンの再構成を行う。
【0060】
仮想マシン管理部12は、自社クラウド環境のリソース値すべてが閾値以下であることを検出すると、仮想マシン管理テーブルを参照して他社クラウド環境において動作している仮想マシンを検出する。仮想マシン管理部12は、仮想マシンの再構成を要求する制御情報を管理サーバ2に送信する(ステップS63)。このとき、仮想マシン管理部12から管理サーバ2に送信される制御情報には、自社クラウド環境において新たな仮想マシンを起動させ、他社クラウド環境において動作している仮想マシンが提供しているサービスを起動した仮想マシンに移動させ、他社クラウド環境において動作している仮想マシンを停止させる要求が含まれている。
【0061】
管理サーバ2は、仮想マシン管理部12から受信した制御情報に基づいて、自社クラウド環境において新たに仮想マシンを起動させる(ステップS64)。管理サーバ2は、他社クラウド環境において動作している仮想マシンが提供しているサービスが、自社クラウド環境において新たに起動した仮想マシンに移動させると、他社クラウド環境の仮想マシンを停止させる(ステップS65)。
【0062】
なお、他社クラウド環境から自社クラウド環境に移動させる仮想マシンの台数は、自社クラウド環境におけるリソース利用率に応じて定めてもよいし、一台としてもよい。また、複数の仮想マシンが他社クラウド環境において動作している場合には、クラスAの仮想マシンを優先的に自社クラウド環境に移動させるようにしてもよい。
【0063】
図10において示したように、負荷分散装置1が自社クラウド環境のコンピュータ・リソースに余裕がある場合に、他社クラウド環境において動作している仮想マシンを自社クラウド環境に移動させることにより、他社クラウド環境の利用で発生する利用コストを更に削減することができる。なお、他社クラウド環境において動作している仮想マシンを自社クラウド環境に移動させるか否かの判定において、CPU利用率閾値とメモリ利用率閾値とそれぞれよりも低い値の閾値を用いるようにしてもよい。これにより、自社クラウド環境と他社クラウド環境との間で仮想マシンの頻繁な移動を防ぐことができ、安定したサービスの提供を行うことができる。
【0064】
なお、上述した実施形態では、他社クラウド環境が一つの場合について説明したが、ネットワーク6を介して接続された複数の他社クラウド環境があってもよい。この場合には、クラウド管理テーブルにおける行が他社クラウド環境ごとに存在することになる。複数の他社クラウド環境から仮想マシンを起動させる他社クラウド環境の選択には、例えば遅延測定値が短いものから優先的に選択するようにする。
また、上述した実施形態では、負荷分散装置1と管理サーバ2とが独立した個別の装置である場合について説明したが、一つの装置として構成されていてもよい。
【0065】
また、
図4において示した負荷分散処理において、ステップS16から処理をステップS14に戻す際に、負荷分散部15はユーザの要求の有無を判定し、ユーザの要求がある場合に当該ユーザの要求を自社クラウド環境の仮想マシンに振分けるようにしてもよい。
【0066】
上述した実施形態における負荷分散装置1をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。更に「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、更に前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されるものであってもよい。
【0067】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。