図1は、実施例1の概要を示す説明図である。
実施例1では、2つのWebサーバ1420、及び2つのDBサーバ1430から構成されるテナント(業務システム)1400を考える。初期のテナント1400は、状態4100に示す状態であるものとする。
テナント1400は、図2に示すようなクラウドサービス1200を提供する計算機システムが各利用者1100に提供する計算機リソース空間である。したがって、Webサーバ1420及びDBサーバ1430は、仮想化技術を用いて実現される。
状態4100のテナント1400では、2つのDBサーバ1430が、HA(High Availability、サーバ冗長化構成)を組む。ここでは、HA構成の2つのDBサーバ1430のうち、DBサーバ1(1430)が正側(現用系)のDBサーバとして稼働し、DBサーバ2(1430)が副側(待機系)のDBサーバとして稼働する。
テナント1400の利用時にDBサーバ1430の負荷増大を示す予兆が検出された場合、管理サーバ100(図3参照)は、後述する処理を実行して、テナント1400の状態を状態4100から状態4200へ遷移させる。例えば、管理サーバ100は、フロントエンド側の負荷の増大に伴うWebサーバ1420のスケールアウトが行われた場合、テナント1400の状態を状態4100から状態4200へ遷移させる。
状態4200では、Webサーバ3(1420)を追加することによって、Webサーバ1420のスケールアウトが行われ、また、DBサーバ1430についてもスケールアップが行われる。管理サーバ100は、DBサーバ1430のスケールアップの方法として、正側のDBサーバ1(1430)にはDBサーバの停止を伴わないスケールアップの方法(無停止の変更方法)を適用し、副側のDBサーバ2(1430)にはDBサーバの停止を伴うスケールアップの方法(停止の変更方法)を適用する。正側のDBサーバ1(1430)に前述したようなスケールアップの方法を適用することによってDBサーバ1(1430)が稼働したまま性能を向上させることができる。
このとき、管理サーバ100は、正側のDBサーバ1(1430)の負荷の増大に対応するため、正側のDBサーバ1(1430)より性能が高くなるように副側のDBサーバ2(1430)のスケールアップを行う。
状態4200へ遷移した後にDBサーバ1(1430)の負荷が増大した場合、管理サーバ100は、後述する処理を実行して、テナント1400の状態を状態4200から状態4300に遷移させる。例えば、管理サーバ100は、スケールアップしたDBサーバ1(1430)に割り当てられた計算機リソースの使用率が所定の閾値以上になった場合、又はDBサーバ1(1430)に性能障害が発生した場合に、テナント1400の状態を状態4200から状態4300に遷移させる。
状態4300では、管理サーバ100は、テイクオーバ処理等を実行することによって、DBサーバ1(1430)から、状態4200に遷移する場合に最適なスケールアップが行われたDBサーバ2(1430)へ切り替える。これによって、DBサーバ1(1430)より性能が高いDBサーバ2(1430)が処理を継続できる。
また、状態4300では、管理サーバ100は、DBサーバ1(1430)からDBサーバ2(1430)へ切り替えた後、状態4200において変更されたDBサーバ1(1430)の計算機リソースの設定を元に戻すために、スケールダウンを行う。すなわち、DBサーバ1(1430)に追加等された計算機リソースの設定が初期化される。DBサーバ1(1430)に対する計算機リソースの割当を元に戻すことによって、クラウドサービス1200を提供する計算機システムの計算機リソースを有効に活用できる。
状態4200又は状態4300の状態において、DBサーバ1430の負荷が減少した場合、管理サーバ100は、後述する処理を実行して、テナント1400の状態を状態4200又は状態4300から状態4400へ遷移させる。
例えば、管理サーバ100は、フロントエンド側の負荷の減少に伴うWebサーバ1420のスケールインが行われた場合、テナント1400の状態を状態4200又は状態4300から状態4400へ遷移させる。図1では、Webサーバ3(1420)をテナント1400から削除するスケールインが行われる。このとき、管理サーバ100は、DBサーバ1(1430)及びDBサーバ2(1430)のそれぞれに対して、スケールアップにおいて変更された計算機リソースの設定を元に戻すために、スケールダウンを行う。
状態4200から状態4400に遷移する場合、管理サーバ100は、DBサーバ1(1430)及びDBサーバ2(1430)のそれぞれの計算機リソースの設定を元の状態に戻す。また、状態4300から状態4400に遷移する場合、管理サーバ100は、DBサーバ1(1430)の計算機リソースの設定は初期化されているため、DBサーバ2(1430)の計算機リソースの設定を元の状態に戻す。
実施例1では、管理サーバ100が前述したような一連の処理を実行することによって、状態4400から状態4100に遷移することとなる。すなわち、実施例1では、テナント1400の負荷に応じて、テナント1400の状態が状態4100、4200、4300、4400の間を循環する。
図2は、実施例1のクラウドサービスの一例を示す説明図である。
利用者1100の視点で、クラウドサービス1200の利用、及びクラウドサービス1200内での処理を説明する。クラウドサービス1200を提供する計算機システムの具体的な挙動については後述する。
クラウドサービス1200は、ポータル2000及び複数のテナント1400を含む。
ポータル2000は、利用者1100がクラウドサービス1200のサービスの申込み及びテナント1400の管理を行うための管理インタフェースである。利用者1100は、ポータル2000を用いて利用するサービスの申込、及びテナント1400の管理等を行う。
実施例1では、利用者1100は、ポータル2000を介してテナント1400の管理等を行うものとするが、他の方法を用いてサービスの申込み及びテナント1400の管理を行ってもよい。例えば、メール又は紙媒体を用いた方式を用いることが考えられる。この場合、クラウドサービス1200は、ポータル2000を含まなくてもよい。
クラウドサービス1200では、利用者1100からサービスの申込を受けつけた場合、利用者1100専用の計算機リソース空間として割り当てられるテナント1400に、サービスに対応した計算機リソースが用意される。なお、申し込んだサービスに応じて、一人の利用者1100に1つ又は複数のテナント1400が提供される。
IaaS又はPaSSのクラウドサービス1200において、利用者1100がWeb三階層システムを申し込んだ場合、ロードバランサ(LB)1410、Web機能を有するWebサーバ1420、DB機能を有するDBサーバ1430、及び記憶領域を提供するストレージ装置1440を含むテナント1400が構築される。SaaSのクラウドサービス1200においてメールサービスが申し込まれた場合、Web三階層システムを実現するテナント1400に含まれるソフトウェアによってメールサービスが提供される。
クラウドサービス1200では、テナント1400の構築が完了した後、ポータル2000を介して利用者1100にその旨が通知される。その後、利用者1100は、ポータル2000又はその他の方法を用いて、テナント1400を管理する。
テナント1400は、利用者1100に対する課金の単位でもあり、クラウドサービス1200では、サービスの申込み時に合意した課金体系に基づいて利用金額が周期的に算出され、ポータル2000等を用いて利用者1100に利用金額が請求される。利用者1100は、利用金額の請求を受け取った場合、ポータル2000又はポータル2000を介して指定された精算方法を用いて、利用金額を支払う。
なお課金体系としては、月額固定の利用金額を支払うもの、VMのスペック及び記憶領域の利用量等に応じて算出される従量に基づいた利用金額を支払うものが考えられる。
実施例1のクラウドサービス1200は、マルチテナントに対応しているものとする。マルチテナントでは、複数の利用者の各々に一つ以上のテナント1400が提供される。マルチテナントに対応したクラウドサービス1200では、当該サービスを提供する事業者が、利用者1100が要求するSAL(Service Level Agreement)を満たすように計算機リソースを管理することが重要となる。本発明は、前述した課題の解決を主目的の一つとする。
図3は、実施例1のクラウドサービス1200を提供する計算機システムの構成例を示す説明図である。
クラウドサービス1200を提供する計算機システムは、管理サーバ100、複数の物理サーバ150及びストレージ装置200から構成される。管理サーバ100、複数の物理サーバ150及びストレージ装置200は、ネットワーク300を介して互いに接続される。
ネットワーク300は、例えば、Ethernet(Ethernetは登録商標、以下同じ)等が考えられる。また、ネットワーク300は、物理サーバ150とストレージ装置200との間がSANを介して接続される場合、SAN及びEthernetの両方を含んでいてもよいし、インターネットでもよい。
また、ネットワーク300は、管理サーバ100が物理サーバ150及びストレージ装置200を制御するために通信する管理用のネットワークと、物理サーバ150及びストレージ装置200が互いに通信するための業務用ネットワークとを含んでもよい。
また、ネットワーク300は、各利用者1100にテナント1400を提供し、また、管理用の通信と利用者1100の通信とを分離するために、1つのネットワークを論理的に分割する仮想ネットワーク(Virtual Network、VLANとも呼ばれる)技術に対応したものでもよい。クラウドサービス1200を提供する事業者は、利用者1100がサービスを申込み時等に仮想ネットワークを設定し、論理的に分割されたネットワーク及び当該ネットワークを介して接続されるVM410を用いて、独立した業務システムとしてテナント1400を提供する。
物理サーバ150は、利用者1100のテナント1400に計算機リソースを提供する計算機である。物理サーバ150上では、ハイパバイザ400が稼働する。ハイパバイザ400は、物理サーバ150が有するCPU及びメモリ等の計算機リソースを論理的に分割し、複数のVM410に割り当てる。ハイパバイザ400上では、物理サーバ150の計算機リソースが割り当てられた一つ以上のVM410が動作する。
実施例1では、仮想化技術に対応した物理サーバ150を前提として説明するが、仮想化技術に対応した物理サーバ150でなくてもよい。この場合、後述するリソース変更方法管理情報T800には、物理サーバ150そのものに適用できる変更方法が格納される。
ストレージ装置200は、物理サーバ150上で稼働するVM410が使用する記憶領域としてボリューム210を提供する計算機である。ボリューム210には、ハイパバイザ400を実現するプログラム、ハイパバイザ400が稼働するための情報、VM410の構成情報、VM410上で実行されるOS及びユーザデータ等が格納される。
ボリューム210とVM410との対応関係については、1つのボリューム210に1つのVM410を割り当ててもよいし、1つのボリューム210を複数のVM410に割り当ててもよいし、複数のボリューム210を1つのVM410に割り当ててもよい。
図3では、ストレージ装置200は、DBサーバ1430のHA構成を実現する上で一般的なSAN(Storage Area Network)又はNAS(Network Attached Storage)によって接続された外部ストレージ装置として記載しているがこれに限定されない。例えば、物理サーバ150がストレージ装置200を含んでもよいし、また、物理サーバ150が有するHDD等の記憶装置を用いてもよい。
管理サーバ100は、クラウドサービス1200を提供する計算機システム全体を管理する計算機である。管理サーバ100は、各種制御を行うためのプログラム及び各種情報を保持する。なお、図3では、管理サーバ100は、一つの物理的な計算機として記載しているが、一つ又は複数のVM410を用いて実現してもよい。また、複数の物理サーバ150にプログラム及び情報を分散して配置することによって、管理サーバ100が有する機能を実現してもよい。
ここで、管理サーバ100が保持するプログラム及び情報について説明する。
管理サーバ100は、ポータルプログラム2100、構成/性能管理プログラム2200、構成変更プログラム2300、課金プログラム、顧客管理プログラム2500、及びリソース最適化プログラム3000を保持する。また、管理サーバ100は、物理サーバ管理情報T100、ストレージ管理情報T200、論理物理構成管理情報T300、テナント管理情報T400、性能管理情報T500、顧客管理情報T600、スケール管理情報T700、リソース変更方法管理情報T800、及びシステムテンプレート管理情報T900を保持する。
物理サーバ管理情報T100は、物理サーバ150の構成を管理するための情報である。物理サーバ管理情報T100の詳細は、図6を用いて後述する。ストレージ管理情報T200は、ストレージ装置200によって提供されるボリューム210を管理するための情報である。ストレージ管理情報T200の詳細は、図7を用いて後述する。論理物理構成管理情報T300は、計算機システムに含まれるVM410の構成及びVM410の物理的な配置を管理するための情報である。論理物理構成管理情報T300の詳細は、図8を用いて後述する。
テナント管理情報T400は、計算機システムに構築されたテナント1400の構成を管理するための情報である。テナント管理情報T400の詳細は、図9を用いて後述する。性能管理情報T500は、テナント1400の性能を管理するための情報である。性能管理情報T500の詳細は、図10を用いて後述する。
顧客管理情報T600は、各利用者1100に提供されるテナント1400の契約形態等を管理するための情報である。顧客管理情報T600の詳細は、図12を用いて後述する。スケール管理情報T700は、業務システムを構成するVMの計算機リソースの構成を管理するための情報である。スケール管理情報T700の詳細は、図13を用いて後述する。
リソース変更方法管理情報T800は、計算機リソースの変更方法を管理するための情報である。ここで、計算機リソースの変更方法とは、VM410等に対する計算機リソースの割り当ての変更を制御する方法である。リソース変更方法管理情報T800の詳細は、図14を用いて後述する。システムテンプレート管理情報T900は、業務システムの詳細な構成を管理するための情報である。システムテンプレート管理情報T900の詳細は、図11を用いて後述する。
ポータルプログラム2100は、利用者1100に提供するポータル2000を実現するためのプログラムである。具体的には、ポータルプログラム2100は、利用者1100に対してサービスの申込みに必要な情報、及びその他の情報を提示する画面等を表示する。また、ポータルプログラム2100は、利用者1100から入力された情報を他のプログラムに通知し、処理を依頼する。
構成/性能管理プログラム2200は、物理サーバ150、ハイパバイザ400、VM410、ネットワーク300、ストレージ装置200、及びボリューム210の構成情報及び性能情報を管理するためのプログラムである。構成/性能管理プログラム2200は、物理サーバ150及びストレージ装置200等から各種情報を取得し、管理情報として管理する。具体的には、構成/性能管理プログラム2200は、物理サーバ管理情報T100、ストレージ管理情報T200、論理物理構成管理情報T300、テナント管理情報T400、性能管理情報T500を管理する。
構成変更プログラム2300は、ポータルプログラム2100又はリソース最適化プログラム3000からの指示にしたがって、計算機システムにおける計算機リソースの構成変更処理を実行するプログラムである。構成変更プログラム2300は、処理結果に基づいて、各種情報を更新し、又は、各プログラムに各種情報の更新を指示する。
また、構成変更プログラム2300は、変更処理を実行するための機能を保持する。例えば、構成変更プログラム2300は、VM410のCPU数を変更する旨の指示等を受信した場合、当該プログラム内部に保持される、当該指示を実行するためのコマンド及びサブプログラムを呼び出し、VM410又はハイパバイザ400に対して構成を変更するための処理を実行する。
また、構成変更プログラム2300は、システムテンプレート管理情報T900を管理する。構成変更プログラム2300は、システムテンプレート管理情報T900を用いて、指定された業務システムを実現するテナント1400を構築する。例えば、業務システムとしてWeb三階層システムが指定された場合、構成変更プログラム2300は、システムテンプレート管理情報T900の当該Web三階層システムに対応するレコードを参照し、業務システムを構築するための処理を実行する。なお、システムテンプレート管理情報T900を用いた業務システムの構築処理は例えば特許文献1に記載されたものを用いればよい。
課金プログラム2400は、構成/性能管理プログラム2200からの指示にしたがって、各種管理情報に基づいて各利用者1100の利用金額を算出し、ポータルプログラム2100等を介して利用者に利用金額を請求する。
顧客管理プログラム2500は、利用者1100の契約情報等を管理する。具体的には、顧客管理プログラム2500は、顧客管理情報T600を管理する。例えば、顧客管理プログラム2500は、ポータルプログラム2100等から受け付けた利用者1100の識別子、テナント1400の識別子、及びテナントの契約形態等を対応付けて顧客管理情報T600に格納し、また、他のプログラムから利用者1100の契約情報に関する問合せを受信した場合、顧客管理情報T600を参照して問い合わせに対して回答を行う。
リソース最適化プログラム3000は、構成/性能管理プログラム2200等と連携して、スケールアップ処理等のテナント1400に割り当てる計算機リソースを制御する。リソース最適化プログラム3000が実行する処理の詳細については後述する。また、リソース最適化プログラム3000は、スケール管理情報T700及びリソース変更方法管理情報T800を管理する。
なお、各管理情報は、個別の情報として管理されているが、例えば、共通の記憶領域(データベース)に全ての管理情報を格納し、各プログラムが当該データベースに問い合わせる構成等でもよい。
図4は、実施例1の管理サーバ100のハードウェア構成の一例を示す説明図である。なお、物理サーバ150も管理サーバ100と同一のハードウェア構成であるものとする。
管理サーバ100は、CPU101、メモリ102、HDD103、ネットワークインタフェース104、ディスクインタフェース105、及び入出力インタフェース106を有する。管理サーバ100が有する各構成は、内部バス107で互いに接続される。管理サーバ100が有する各構成は、内部バス107を介して互いに通信する。
CPU101は、メモリ102に格納されるプログラムを実行する。CPU101は、演算処理を実行する複数のコアを有する。CPU101がプログラムを実行することによって、管理サーバ100が有する機能を実現できる。なお、プログラムを主体にして処理を説明する場合、CPU101によってプログラムが実行されていることを表す。
メモリ102は、CPU101によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。また、メモリ102は、プログラムが使用するワークエリアを提供する記憶領域を含む。
管理サーバ100のメモリ102には、図3に示すようなプログラム群及び情報群が格納される。また、物理サーバ150のメモリ102には、ハイパバイザ400を実現するプログラム、及びVM410上で稼働するOSを実現するプログラム等が格納される。
HDD(Hard Disk Drive)103は、各種データ及び各種情報を格納する。なお、管理サーバ100は、HDD103以外にSSD(Solid State Drive)等のその他の記憶媒体を有してもよい。なお、メモリ102に格納されるプログラム及び情報は、HDD103に格納されてもよい。この場合、CPU101がHDD103からプログラム及び情報を読み出し、メモリ102にロードする。
ネットワークインタフェース104は、ネットワーク300等を介して外部装置と接続するためのインタフェースである。ネットワークインタフェース104は、例えば、NICE(Network Interface Card)が考えられる。
ディスクインタフェース105は、HDD103又は外部記憶装置と接続するためのインタフェースである。ディスクインタフェース105は、例えば、HBA(Host Bus Adapter)が考えられる。
入出力インタフェース106は、管理サーバ100に各種データを入力し、また、各種データを出力するためのインタフェースである。入出力インタフェース106は、キーボード、マウス、タッチパネル、及びディスプレイ等を含む。なお、管理サーバ100は、入出力インタフェース106を有しなくてもよい。この場合、例えば、SSH(Secure Shell)等を用いてネットワーク経由で管理サーバ100に対する入出力を行う方法が考えられる。
図5は、実施例1のストレージ装置200の構成の一例を示す説明図である。
ストレージ装置200は、管理インタフェース201、外部インタフェース202、コントローラユニット220、記憶ユニット230、及びディスクインタフェース240を有する。
管理インタフェース201は、管理用ネットワークを介して管理サーバ100と接続するためのインタフェースである。外部インタフェース202は、業務用ネットワークを介してボリューム210等の記憶領域を提供する物理サーバ150と接続するためのインタフェースである。なお、管理用ネットワーク及び業務用ネットワークの区別がない場合、管理インタフェース201及び外部インタフェース202は、一つのインタフェースとしてもよい。
コントローラユニット220は、ストレージ装置200の各種制御を行う。コントローラユニット220は、制御装置221及びメモリ222を含む。制御装置221は、ボリューム210等の記憶領域に対するアクセス、すなわちI/Oを制御する。また、制御装置221は、記憶ユニット230における記憶領域の構成を制御する。メモリ222は、制御領域及びI/Oのキャッシュとして使用される。
記憶ユニット230は、複数のHDD231を搭載する。なお、記憶ユニット230には、HDD以外の記憶媒体が搭載されてもよい。実施例1では、コントローラユニット220が、記憶ユニット230に搭載される複数のHDD231を用いて冗長化された論理的な記憶領域をボリューム210として生成し、物理サーバ150に当該ボリューム210を提供する。なお、コントローラユニット220は、ボリューム210とHDD231との対応付けを管理する。
複数のHDD231を用いた冗長化手法としては、RAID(Redundant Arrays of Inexpensive Disks)及びRAIN(Redundant Arrays of Inexpensive Nodes)等が一般的に用いられる。
ディスクインタフェース240は、コントローラユニット220と記憶ユニット230との間で通信するためのインタフェースである。
実施例1では、ストレージ装置200は専用の装置を用いて実現しているが、一つ又は複数の計算機(例えば、物理サーバ150)を用いて実現してもよい。この場合、制御装置221はCPU101に対応し、メモリ222はメモリ102に対応し、外部インタフェース202はネットワークインタフェース104に対応し、HDD231はHDD103に対応する。
なお、コントローラユニット220は、ボリューム210ごとに、IOPS(Input Output Per Second)等のアクセスを保証し、又は制限する機能を備えてもよい。
なお、ストレージ装置200は、I/Oが高速なSSD、及びI/Oが低速なHDDの二つを搭載し、HDD及びSSDを用いてボリューム210を構成してもよい。この場合、コントローラユニット220は、ボリューム210を構成するHDDの記憶領域及びSSDの記憶領域の比率を変えることによって、I/O性能を動的に変更する機能(Dynamic Tiering機能)を備えてもよい。
図6は、実施例1の物理サーバ管理情報T100の一例を示す説明図である。
物理サーバ管理情報T100は、各物理サーバ150の物理構成を管理するための情報(レコード)を格納する。具体的には、物理サーバ管理情報T100は、サーバID(T110)、物理CPU数(T120)、CPU周波数(T130)、メモリ容量(T140)、及びハイパバイザ/OS(T150)を含む。
サーバID(T110)は、物理サーバ150を一意に識別するための識別子である。物理CPU数(T120)は、物理サーバ150が有するCPU101の数である。CPU周波数(T130)は、物理サーバ150が有するCPU101の周波数である。メモリ容量(T140)は、物理サーバ150が有するメモリ102の総量である。
ハイパバイザ/OS(T150)は、物理サーバ150を制御するソフトウェア、すなわち、ハイパバイザ400又はOSの種別である。
なお、物理サーバ管理情報T100には、ネットワークインタフェース104の種類、通信帯域、及びHDD103の種類又は品番等を含んでもよい。また、物理CPU数(T120)には、物理サーバ150が有するソケット数、一つのソケットあたりのCPUコア数等の細かい粒度の情報が格納されてもよい。
なお、クラウドサービスでは、運用管理コスト上の観点等から、業務用途で使用される物理サーバ150は同一の構成であることが一般的である。したがって、図6に示す物理サーバ管理情報T100は、クラウドサービス1200の一般的な構成に対応した情報が格納される。ただし、各物理サーバ150の構成が異なる、ヘテロな構成であってもよい。
図7は、実施例1のストレージ管理情報T200の一例を示す説明図である。
ストレージ管理情報T200は、ストレージ装置200の記憶領域を管理するための情報(レコード)を格納する。具体的には、ストレージ管理情報T200は、ストレージ装置ID(T210)、ボリュームID(T220)、容量(T230)、及びIOPS(T240)を含む。
ストレージ装置ID(T210)は、ストレージ装置200を一意に識別するための識別子である。ボリュームID(T220)は、ストレージ装置200が提供するボリューム210を一意に識別するための識別子である。容量(T230)は、ボリューム210の容量である。IOPS(T240)は、ボリューム210のIOPSである。
なお、IOPS(T240)は、ストレージ装置200がボリューム210毎にIOPSを保証し、又は制限する機能を有する場合に含まれるカラムである。実施例1では、IOPSの値が指定できる構成を前提として説明する。
なお、ストレージ装置200がDynamic Tiering機能を有する場合、Dynamic Tiering機能の性能を格納するカラムが含んでもよい。前述したIOPS(T240)には、例えば、ボリューム210毎に性能指標として「高」、「中」、「低」といった値が格納されてもよいし、ボリューム210を構成するHDD及びSSDの構成比率を示す値が格納されてもよいし、また、HDD及びSSDの構成比率等から推定されるIOPSの値が格納されてもよい。
なお、ストレージ管理情報T200は、ボリューム210の使用量、及び各ボリューム210に対して設定されたキャッシュの容量等を含んでもよい。
図8は、実施例1の論理物理構成管理情報T300の一例を示す説明図である。
論理物理構成管理情報T300は、VM410の計算機リソース、及びVM410の物理的な配置等を管理するための情報(レコード)を格納する。具体的には、論理物理構成管理情報T300は、VM ID(T310)、仮想リソース(T320)、及び物理リソース(T330)を含む。
VM ID(T310)は、計算機システム上でVM410を一意に識別するための識別子である。仮想リソース(T320)は、VM410に割り当てられる仮想的な計算機リソースに関する情報である。物理リソース(T330)は、VM410の物理的な配置に関する情報である。ここで、仮想リソース(T320)及び物理リソース(T330)の具体的な情報について説明する。
仮想リソース(T320)は、CPU数(T321)、メモリ容量(T322)、IOPS(T323)、CPUシェア(T324)、メモリシェア(T325)、I/Oシェア(T326)を含む。
CPU数(T321)は、VM410に割り当てられた仮想CPUの数である。メモリ容量(T322)は、VM410に割り当てられた仮想メモリの容量である。
IOPS(T323)は、VM410に割り当てられたボリューム210のIOPSの値である。なお、VM410又はハイパバイザ400がストレージ装置200に対するI/Oを保証し、又は制限する機能を有しない場合、論理物理構成管理情報T300にはIOPS(T323)が含まれなくてもよい。
CPUシェア(T324)、メモリシェア(T325)、及びI/Oシェア(T326)は、同一の物理サーバ150上で稼働する複数のVM410間の計算機リソースの共有度合いを示す。ハイパバイザ400が、テナント1400の構築時に管理サーバ100空の指示にしたがって、各カラムの値を設定し、また、テナント1400の運用中に適宜変更する。
サーバ仮想化技術の特徴の1つとして、オーバープロビジョニングという機能がある。オーバープロビジョニングとは、一つの物理サーバ150が有する計算機リソース以上の計算機リソースを、各VM410に割り当てる機能である。すなわち、同一の物理サーバ150上で稼働する複数のVM410の各々に割り当てられるCPU数(T321)の総和が物理サーバ150が有するCPU101の数より多くなるように設定し、又は、複数のVM410の各々に割り当てられるメモリ容量(T322)の総和が、物理サーバ150が有するメモリ容量より多くなるように設定することができる。
例えば、サーバID(T110)が「Serv1」の場合、下式(1)を満たすように各VM410にメモリ容量を割り当てることができる。
オーバープロビジョニング機能を有する物理サーバ150では、複数のVM410が当該物理サーバ150が有する計算機リソースを共有する。したがって、同一の物理サーバ150上で稼働する全てのVM410の各々が割り当てられた仮想CPU及び割り当てられた仮想メモリを最大限に利用する場合、計算機リソースを共有するVM410の計算機リソースの割り当てを決定する指標がCPUシェア(T324)、メモリシェア(T325)、及びI/Oシェア(T326)となる。
実施例1のCPUシェア(T324)、メモリシェア(T325)、及びI/Oシェア(T326)のそれぞれには、「高」、「中」、「低」のいずれかが格納される。例えば、メモリシェア(T325)に「高」が設定される場合、ハイパバイザ400は、計算機リソースを共有する複数のVM410のうち、「高」が設定されたVM410に優先的にメモリを割り当てる。
なお、CPUシェア(T324)及びメモリシェア(T325)には、「占有」が設定されてもよい。この場合、「占有」が設定されたVM410に必ずCPU数(T321)等に設定された計算機リソースを割り当てる。これによって、所定のVM410対する必要な計算機リソースの割り当てを保証する。また、IOPS(T326)は、1つのI/Oにあたりのレスポンスタイムが設定されてもよい。
なお、CPUシェア(T324)、メモリシェア(T325)、及びI/Oシェア(T326)には、共有の度合いを表す数値が設定されてもよい。
なお、仮想リソース(T320)には、前述したカラム以外に、CPU数の予約値及び制限値、並びにメモリ容量の予約値及び制限値を含んでいてもよい。また、CPU数の予約値及び制限値のほか、CPUの周波数に関する予約値及び制限値を含んでもよい。
ここで、予約値とは、常に、VM410への割り当てが保証される計算機リソースの値を表す。また、制限値とは、VM410に割り当てることができる計算機リソースの上限値を表す。
例えば、メモリ容量(T322)が「4GB」、メモリ容量の予約値が「1GB」、メモリ容量の制限値が「2GB」であるVM410を想定する。この場合、VM410が認識する仮想メモリのメモリ容量は「4GB」であり、そのうち「1GB」は常に物理サーバ150のメモリ空間が確保され、かつ、当該VM410が利用できる物理サーバ150のメモリ空間の最大量は「2GB」であることを意味する。
次に、物理リソース(T330)について説明する。物理リソース(T330)は、サーバID(T331)及びボリュームID(T332)を含む。
サーバID(T331)はサーバID(T110)と同一のものである。管理サーバ100は、サーバID(T331)の値に基づいて、VM410が現在稼働する物理サーバ150を把握できる。
ボリュームID(T332)は、ボリュームID(T220)と同一のものである。管理サーバ100は、ボリュームID(T332)に基づいて、VM410の管理データ等が格納されるボリューム210、及び当該ボリューム210を提供するストレージ装置200を把握できる。
実施例1では、ボリューム210の識別子に基づいて一意にボリューム210を識別できるため、物理リソース(T330)には、ボリュームID(T332)のみが含まれる。しかし、ボリューム210の識別子及びストレージ装置200の識別子に基づいて一意にボリューム210を識別することができる場合、物理リソース(T330)は、ボリューム210の識別子の他に、ストレージ装置ID(T210)に相当するカラムを含んでもよい。
実施例1では、VM410が認識する記憶領域(ドライブ)とボリューム210とが1対1に対応付けられるように、VM410に記憶領域が提供される。しかし、VM410が認識するドライブ単位で記憶領域が指定される構成、すなわち、VM410上で実行されるOSが認識する一つのドライブと複数のボリューム210とを対応付ける構成の場合、ボリュームID(T332)には、対応付けられる複数のボリューム210の識別子が格納される。
なお、図8では、複数のVM410のデータが同一のボリューム210に格納されることを示している。
図9は、実施例1のテナント管理情報T400の一例を示す説明図である。
テナント管理情報T400は、利用者1100に提供されるテナント1400、及びテナント1400の構成を管理するための情報(レコード)を格納する。具体的には、テナント管理情報T400は、テナントID(T410)、VM ID(T420)、IPアドレス(T430)、機能(T440)、接続先(T450)、及び状態(T460)を含む。
テナントID(T410)は、テナント1400の識別子である。VM ID(T420)は、テナント1400に含まれるVM410の識別子であり、VM ID(T310)と同一のものである。
IPアドレス(T430)は、VM410のIPアドレスである。IPアドレス(T430)に格納されるIPアドレスは、VM410が外部の装置と通信するために用いられるアドレスである。なお、IPアドレス(T430)には複数のIPアドレスが格納されてもよい。
機能(T440)は、VM410によって提供される機能(サービス)を示す。より具体的には、VM410にインストールされたソフトウェア等によって実現される役割を意味する。VM410の役割は、サービス申込時又はVM410の構築時に設定される。
接続先(T450)は、VM ID(T420)に対応するVM410が通信する他のVM410のIPアドレスである。複数のVM410の各々に役割を分担する業務システムでは各VM410が他のVM410と通信する。そのため、接続先(T450)には、接続先のVM410のIPアドレスが格納される。なお、複数のVM410と接続される場合、接続先(T450)には、複数のIPアドレスが格納される。
状態(T460)は、VM410の状態である。実施例1の状態(T460)には、リソース最適化プログラム3000によって変更された状態を示す値が格納される。具体的には、「スケールアウト」、「スケールイン」、「スケールアップ」、及び「スケールダウン」のいずれかが格納される。リソース最適化プログラム3000が実行する処理の説明において状態(T460)の具体的な扱い方について述べる。
図9に示す、テナントID(T410)が「Tenant1」のテナント1400は、5つのVM410から構成されるWeb三階層システムであることを示す。
VM ID(T420)が「LB1」であるVM410は、IPアドレス「10.0.0.1」が設定され、かつ、フロントエンドとなるLB1410である。VM ID(T420)が「VM11」、「VM12」である2つのVM410は、LBから受け付けたリクエストを処理するWeb機能を有するWebサーバ1420である。VM ID(T420)が「VM13」、「VM14」である2つのVM410は、Webサーバ1420からのリクエストを処理するDB機能を有するDBサーバ1430である。
「VM13」のVM410及び「VM14」のVM410は冗長構成(HA)が組まれている。また、「VM13」のVM410は、Webサーバ1420から受け付けたリクエストを処理する正側(実行系)のDBサーバ1430であり、「VM14」のVM410は、副側(待機系)のDBサーバ1430である。
実施例1では、利用者1100のサービス申込時に、テナント管理情報T400に当該利用者1100のテナント1400のレコードが生成されることを想定する。例えば、利用者1100が、サービス申込時に、システムテンプレート管理情報T900に格納された情報に基づいて、業務システムの構成を選択することによって、テナント管理情報T400に当該利用者1100のテナント1400のレコードが追加される。また、VM ID(T420)及びIPアドレス(T430)は、利用者1100がテナント1400の構築時に、手動又は自動的に設定される。また、テナント管理情報T400は、リソース最適化プログラム3000等が実行する処理によって、随時更新される。
図10は、実施例1の性能管理情報T500の一例を示す説明図である。
性能管理情報T500は、各テナント1400の性能に関する履歴情報(レコード)を格納する。具体的には、性能管理情報T500は、テナントID(T510)に対応するテナント1400毎に、時間(T520)、Web使用リソース(T530)、総Webセッション数(T540)、SQLリクエスト数(T550)、及び正側DB使用リソース(T560)を含む。
テナントID(T510)は、テナントID(T410)と同一のものである。時間(T520)は、テナント1400について、Web使用リソース(T530)、総Webセッション数(T540)、SQLリクエスト数(T550)、及び正側DB使用リソース(T560)に格納する値、すなわち、テナント1400の性能に関する情報を取得した時間である。
Web使用リソース(T530)は、テナント1400に含まれるWebサーバ1420における計算機リソースの平均使用率又は平均使用量である。Web使用リソース(T530)は、CPU使用率(T531)及びメモリ使用量(T532)を含む。
CPU使用率(T531)及びメモリ使用量(T532)は、Webサーバ1420として設定されたVM410に割り当てられた仮想CPUの使用率及び仮想メモリの使用量の平均値である。
総Webセッション数(T540)は、Webサーバ1420が管理するWebセッションの数である。SQLリクエスト数(T550)は、Webサーバ1420からDBサーバ1430へ送信されたリクエストの数である。
正側DB使用リソース(T560)は、Webサーバ1420から受け付けたリクエストを実際に処理する正側のDBサーバ1430における計算機リソースの使用率又は使用量である。正側DB使用リソース(T560)は、CPU使用率(T561)、メモリ使用量(T562)、及びIOPS(T563)を含む。
CPU使用率(T561)及びメモリ使用量(T562)は、DBサーバ1430として設定されたVM410に割り当てられた仮想CPUの使用率及び仮想メモリの使用容量である。IOPS(T563)は、ボリューム210へのIOPSである。
なお、正側DB使用リソース(T560)には、性能障害イベント等を含む、DBサーバ1430の性能に関する状態を管理するカラムが含まれてもよい。
管理サーバ100は、テナント管理情報T400及び性能管理情報T500に基づいて、各テナント1400を構成するVM410等の性能を管理する。
例えば、図10は、テナントID(T510)が「Tenant1」であるテナント1400の性能の履歴情報を示す。管理サーバ100は、時刻(T520)が「9:00」の時、2つのWebサーバ1420、すなわち、「VM11」及び「VM12」のVM410のCPU使用率の平均値が「30%」であり、メモリ使用量の平均値が「1GB」であり、Webセッションの数が「10」であることが分かる。また、管理サーバ100は、「VM11」及び「VM12」のVM410がDBサーバ1430、すなわち、「VM13」及び「VM14」のVM410に送信するSQLリクエストの数が「20」であることが分かる。
また、管理サーバ100は、「Tenant1」のテナント1400の性能の履歴情報に基づいて、時間の経過とともに負荷が増大していることが分かる。
なお、正側DB使用リソース(T560)の使用方法については、リソース最適化プログラム3000等が実行する処理の説明において述べる。
なお、性能管理情報T500は、例えば、構成/性能管理プログラム2200によって生成される。具体的には、構成/性能管理プログラム2200が、物理サーバ150のハイパバイザ400等から各構成要素の情報を取得し、取得された情報に基づいて性能管理情報T500に情報を追加する。
なお、性能管理情報T500は、テナント1400内の性能に関するデータを集計した情報を格納しているが、これに限定されない。例えば、テナント1400に含まれる各VM410の性能情報を時系列で格納する形式であってもよい。この場合、管理サーバ100は、外部からの要求に応じて、性能管理情報T500の各VM410の性能情報を集計することによって、図10に示すようなCPU使用率(T531)等の各種情報を算出する。
図11は、実施例1のシステムテンプレート管理情報T900の一例を示す説明図である。
システムテンプレート管理情報T900は、利用者1100が要求する業務システムの構成に関する情報(レコード)、すなわち、システムテンプレートを格納する。具体的には、システムテンプレート管理情報T900は、パターンID(T910)、Webサーバ(T920)、DBサーバ(T930)、及びTbl ID(T940)を含む。
概念的には、Webサーバ(T920)はスケールアウト可能なサーバに対応するカラム、DBサーバ(T930)はスケールアウト可能なサーバに接続され、かつ、スケールアップが必要なサーバに対応するカラムを意味する。
パターンID(T910)は、システムテンプレート管理情報T900において管理するシステムテンプレートを一意に識別するための識別子である。
Webサーバ(T920)は、業務システムにおけるWebサーバ1420の構成を示す情報である。Webサーバ(T920)は、OS(T921)、ソフトウェア(T922)、CPU数(T923)、メモリ容量(T924)、IOPS(T925)、及び初期数(T926)を含む。
OS(T921)は、Webサーバ1420にインストールされるOSの名称又は種別である。ソフトウェア(T922)は、Webサーバ1420にインストールされるソフトウェアの名称又は種別である。CPU数(T923)、メモリ容量(T924)及びIOPS(T925)は、Webサーバ1420に要求されるスペックに関する情報である。初期数(T926)は、業務システムに設定されるWebサーバ1420の数である。
DBサーバ(T930)は、業務システムにおけるDBサーバ1430の構成を示す情報である。DBサーバ(T930)は、OS(T931)、ソフトウェア(T932)、CPU数(T933)、メモリ容量(T934)、IOPS(T935)、及び構成(T936)を含む。
OS(T931)は、DBサーバ1430にインストールされるOSの名称又は種別である。ソフトウェア(T932)は、DBサーバ1430にインストールされるソフトウェアの名称又は種別である。CPU数(T933)、メモリ容量(T934)及びIOPS(T935)は、DBサーバ1430に要求されるスペックに関する情報である。構成(T936)は、DBサーバ1430についてHA構成を組むか否かを示す情報等である。例えば、構成(T936)に「HA」が格納される場合、冗長構成であることを示す。一方、構成(T936)に「単一」が格納される場合、冗長構成ではないことを示す。
Tbl ID(T940)は、後述するリソース変更方法管理情報T800のレコードの識別子である。Tbl ID(T940)によって、業務システムに適用する計算機リソースの変更方法が指定される。
なお、システムテンプレート管理情報T900は、構成変更プログラム2300が業務システムを構築するために用いるスクリプト等の情報へのリンクを含んでもよい。
なお、実施例1では、業務システムとしてWeb三階層システムを前提としているため、システムテンプレート管理情報T900には、Webサーバ1420及びDBサーバ1430のカラムが含まれるが、これに限定されない。Web三階層システム以外の業務システムを管理するシステムテンプレート管理情報T900であってもよい。
図12は、実施例1の顧客管理情報T600の一例を示す説明図である。
顧客管理情報T600は、顧客である利用者1100が利用するテナント1400を管理する情報(レコード)を格納する。具体的には、顧客管理情報T600は、利用者ID(T610)、テナントID(T620)、種別(T630)、及びパターンID(T640)を含む。
利用者ID(T610)は、クラウドサービス1200を利用する利用者1100を識別するための識別子である。テナントID(T620)は、利用者1100が利用するテナント1400を識別するための識別子であり、テナントID(T410)と同一のものである。
種別(T630)は、テナント1400の性能保証等に関する契約形態の種別を示す情報である。実施例1の種別(T630)には、「性能保証型」、「性能固定型」、及び「ベストエフォート型」のいずれかが格納される。
「性能保証型」の契約形態は、テナント1400の性能が所定の基準以上であることを保証する契約形態である。「性能固定型」の契約形態は、指定された性能を変更することなくテナント1400が稼働することを保証する契約形態である。「ベストエフォート型」は、他の利用者1100のテナント1400等の利用状況に応じて、自己のテナント1400の性能が変動することを利用者1100が許容する契約形態である。実施例1では、「性能保証型」のテナント1400を管理対象としている。
なお、契約形態(T632)には、前述の契約形態を示す情報の代わりに、Webサーバ1420のスケール変更の可否を示す情報、及びDBサーバ1430のスケール変更の可否を示す情報等、テナント1400の構成ごとのスケーリングに関する情報が格納されてもよい。
パターンID(T640)は、テナント1400の構築時に指定されたシステムテンプレートの識別子であり、パターンID(T910)と同一のものである。
なお、顧客管理情報T600は、利用者1100がサービスを申し込む時等に顧客管理プログラム2500によって生成され、また、更新される。なお、顧客管理プログラム2500が課金プログラム2400と連携する場合、顧客管理情報T600に課金情報又は課金時に用いられる情報を含めることもできる。
図13は、実施例1のスケール管理情報T700の一例を示す説明図である。
スケール管理情報T700は、契約形態が「性能保証型」であるWeb三階層システムにおいて、Webサーバ1420の数と、DBサーバ1430に割り当てるべき計算機リソースとの関係を示す情報(レコード)を格納する。具体的には、スケール管理情報T700は、パターンID(T710)、Webサーバ数(T720)、及びDBサーバ(T730)を含む。
パターンID(T710)は、システムテンプレートの一意に識別するための識別子であり、パターンID(T910)と同一のものである。Webサーバ数(T720)は、システムテンプレートに対応する業務システムに含まれるWebサーバ1420の数である。
DBサーバ(T730)は、Webサーバ1420の数に応じて、業務システムに必要なDBサーバ1430の計算機リソースに関する情報であり、CPU数(T731)、メモリ容量(T732)、及びIOPS(T733)を含む。なお、DBサーバ(T730)は、CPUの周波数などのカラムを含んでもよい。
また、DBサーバ(T730)は、SQLリクエスト限界数(T734)を含む。SQLリクエスト限界数(T734)は、CPU数(T731)、メモリ容量(T732)、及びIOPS(T733)に示された値の計算機リソース(スペック)を有するDBサーバ1430が処理可能なSQLリクエストの数である。実施例1では、SQLリクエスト限界数(T734)は、DBサーバ1430の負荷を判定するための指標として用いられる。
なお、スケール管理情報T700は、SQLリクエスト限界数(T734)の代わりに、例えば、CPU使用率、メモリ使用量、若しくはIOPSの上限値、又は性能障害イベントの一覧等をDBサーバ1430の負荷を判定するための指標として格納してもよい。
なお、スケール管理情報T700には、予めシステム毎に定義された値が格納されてもよいし、テナント1400の構築時に当該テナント1400の性能を評価することによって決定された値が格納されてもよい。
Web三階層システムでは、システムの負荷に応じてWebサーバ1420の数が動的に増加又は減少する。スケール管理情報T700は、Webサーバ1420の数の追加又は削除に伴って、DBサーバ1430に必要な計算機リソースを決定するために使用される。
例えば、Web三階層システムに2つのWebサーバ1420が含まれる場合、管理サーバ100は、スケール管理情報T700を参照して、DBサーバ1430にはCPUの数が「2」、メモリ容量が「5GB」、IOPSが「300」だけ計算機リソースが必要であることが分かる。
実施例1では、管理サーバ100は、スケール管理情報T700を参照し、Webサーバ1420が管理するWebセッションにおけるリクエストを処理可能な計算機リソースをDBサーバ1430に割り当てる。これによって、DBサーバ1430の処理性能が不足することによって、Webサーバ1420から送信されたSQLリクエストを処理できない等の障害を回避できる。
なお、DBサーバ1430に割り当てる計算機リソースを決定する方法としては、管理サーバ100は、スケール管理情報T700のようなテーブル形式の情報を用いるのではなく、論理物理構成管理情報T300及び性能管理情報T500に基づいて動的に算出してもよい。
例えば、Webサーバ1420の数又はSQLリクエストの数を入力することによってDBサーバ1430に必要な計算機リソースを算出する関数等を用いることが考えられる。また、管理サーバ100は、SQLリクエスト数(T550)の増減と、DBサーバ1430のCPU利用率、メモリ使用量、及びIOPS値の履歴情報とに基づいて、SQLリクエストを処理するために必要なDBサーバ1430の計算機リソースを予測(プロファイル)し、必要な計算機リソースを決定する方法も考えられる。この場合、性能管理情報T500には、DBサーバ1430のCPU使用率及びメモリ使用量等が格納されている必要がある。
図14は、実施例1のリソース変更方法管理情報T800の一例を示す説明図である。
リソース変更方法管理情報T800は、リソース最適化プログラム3000がVM410の計算機リソースの割当てを変更する場合に使用する変更方法の管理情報(レコード)を格納する。具体的には、リソース変更方法管理情報T800は、Tbl ID(T810)、対象(T820)、変更方法(T830)、及び分類(T840)を含む。
適用できる計算機リソースの変更方法は、OS及びソフトウェアの組み合わせ毎に異なる。そのため、変更対象の計算機リソース毎に適用できる変更方法、及び変更方法を適用した場合に業務システムへの影響を示す情報を対応付けて、一つにまとめておく必要がある。
そこで、実施例1では、管理サーバ100は、リソース変更方法管理情報T800を用いて、変更対象の計算機リソースに対する複数の計算機リソースの変更方法の集合を一つの業務システムに適用する変更方法(レコード)として管理する。
なお、ハイパバイザの種別によっても適用可能な計算機リソースの変更方法が異なる場合がある。この場合、OS、ソフトウェア及びハイパバイザの組合せをも考慮した情報をリソース変更方法管理情報T800に格納すればよい。
Tbl I(T810)は、リソース変更方法管理情報T800のレコードを一意に識別するための識別子である。対象(T820)は、変更対象の計算機リソースの種別である。
変更方法(T830)は、変更対象の計算機リソースの割当てを変更するための制御内容である。図14に示す例では、変更方法(T830)には、制御内容が格納されているが、構成変更プログラム2300に変更処理を指示するためのコマンド又はスクリプトが格納されてもよい。また、変更方法(T830)には、各変更方法の実行順番又は実行する順番を決定するための優先度、又は、排他関係にある変更方法に関する情報等が格納されてもよい。
分類(T840)は、変更方法(T830)に対応する変更方法を適用した場合に、VM又はVM上のOS若しくはソフトウェアに及ぼす影響を示す情報である。実施例1の分類(T840)には、変更方法が適用された時にVM410が停止するか否かを示す情報が格納される。分類(T840)が「無停止」である場合、変更方法が適用されたVM410が停止しないこと、すなわち、業務システムに与える影響が小さいことを示す。分類(T840)が「停止」である場合、変更方法が適用されたVM410が停止すること、すなわち、業務システムに与える影響が大きいことを示す。
管理サーバ100は、リソース変更方法管理情報T800に基づいて各変更方法を管理できる。例えば、対象(T820)が「CPU」、変更方法(T830)が「CPUシェア値変更」、分類(T840)が「無停止」である変更方法は、VM410に対するCPUのシェア値を当該VM410を停止させることなく実行できることが分かる。
また、CPU数の変更等は、ハイパバイザ400並びにOS及びソフトウェアの組合せによっては、Hot−Addと呼ばれる稼働中に追加できる機能があり、当該機能を利用可能なソフトウェアの組み合わせによっては、「停止」での実行が可能な場合がある。
Tbl ID(T810)毎に管理される変更方法は、業務システムを構成する要素に基づいて決定される。実施例1では、仮想化技術を前提としているが、物理的なサーバを対象としてもよい。この場合、図14に示す変更方法のうち、外部ストレージ装置への変更等の変更方法を適用できる。したがって、本発明は、仮想化技術に対応した計算機システムのみならず、仮想化技術に対応していない計算機システム、すなわち、物理サーバ150そのものを用いて構築された業務システムに対しても効果を奏する。
以下の説明では、分類(T840)が「無停止」である変更方法を無停止の変更方法と記載し、また、分類(T840)が「停止」である変更方法を停止の変更方法とも記載する。
図15は、実施例1のリソース最適化プログラム3000が実行する処理の概要を説明するフローチャートである。
リソース最適化プログラム3000は、所定の契機で処理を開始する(ステップS3010)。
例えば、リソース最適化プログラム3000は、テナント1400が構築された後に処理を開始する。より具体的には、利用者1100が、テナント1400の構築時に図20に示すような画面を用いてサービスを申し込み、構成変更プログラム2300が申込みされたサービスに基づいて業務システム(テナント1400)を構築した後に処理が開始される。
なお、本処理の対象となる業務システムは、サービス申込時に、スケールアウト又はスケールアップを行う旨の設定が行われた業務システムを対象とすることを想定する。
ここで、図20を用いてサービスの申込時に用いられる画面について説明する。図20は、実施例1のサービス申込時に用いられる画面の一例を示す説明図である。
利用者1100が、例えばWebブラウザを用いてポータル2000にアクセスした場合に、図20に示すような画面2010が表示される。
画面2010は、パターン入力2011、種別入力2012、表示項目2013、及び申込み操作ボタン2014を含む。
パターン入力2011は、利用者1100が希望する業務システム(テナント1400)のパターンを選択するための入力項目である。パターン入力2011には、例えば、システムテンプレート管理情報T900のパターンID(T910)に対応した値等が表示される。
種別入力2012は、業務システムの性能の特徴を指定するための入力項目である。種別入力2012は、顧客管理情報T600の種別(T630)に対応する。
表示項目2013は、パターン入力2011及び種別入力2012の操作に基づいてサービスの概要を表示する項目である。例えば、業務システムの構成の概要、又はWebサーバ(T920)及びDBサーバ(T930)等の業務システムの構成要素等が表示される。
申込み操作ボタン2014は、パターン入力2011及び種別入力2012を操作することによって設定された業務システムに関するサービスを利用者1100が申し込む場合に操作するボタンである。図20に示す例では、契約形態が「性能保証型」であり、かつ、「Web三階層システム1」に対応する業務システムのサービスが申し込まれる。
また、画面2010には種別入力2012の代わりに、テナント管理情報T400の機能(T440)の値毎に挙動を指定する入力項目があってもよい。例えば、Webサーバ1420をスケールアウト及びスケールインが可能な構成とするか否か、DBサーバ1430をスケールアップ及びスケールダウンが可能な構成とするか否かを選択させる入力項目等が考えられる。
また、他の入力項目として、前述の各スケーリング処理を自動的に、又は利用者1100に判断させるか否かを選択する入力項目があってもよい。また、入力項目の操作とあわせて、テナント管理情報T400の各項目、例えばIPアドレス等を指定する画面であってもよい。
以上が図20の説明である。図15の説明に戻る。
リソース最適化プログラム3000は、性能管理情報T500を参照して、対象のテナント1400負荷の増大の予兆が検出されたか否かを判定する(ステップS3100)。なお、リソース最適化プログラム3000は、周期的に性能管理情報T500を参照するものとする。また、テナント1400の負荷とは、テナント1400全体の負荷、又はテナント1400に含まれるDBサーバ1430の負荷のことを示す。
例えば、リソース最適化プログラム3000は、性能管理情報T500のWeb使用リソース(T530)又は総Webセッション数(T540)等の値が所定の閾値より大きいか否かを判定する。リソース最適化プログラム3000は、Web使用リソース(T530)等の値が所定の閾値より大きい場合、対象のテナント1400の負荷の増大の予兆が検出されたものと判定する。
なお、テナント1400の負荷の増大の予兆を検出する方法としては、Web使用リソース(T530)又は総Webセッション数(T540)等な値そのものではなく、当該値の上昇率(速度)も用いてもよい。また、特許文献1に示されるような、Webサーバ1420等のスケールアウト判定処理において用いられる一般的なメトリックに基づいてテナント1400の負荷の増大の予兆を検出する方法でもよい。
なお、リソース最適化プログラム3000は、ステップS3150の処理、すなわち、Webサーバ1420のスケールアウトの実行イベントを対象のテナント1400の負荷の増大の予兆として検出してもよい。
対象のテナント1400の負荷の増大の予兆が検出されない場合、リソース最適化プログラム3000は、ステップS3100に戻り、同様の処理を繰り返し実行する。
対象のテナント1400の負荷の増大の予兆が検出された場合、リソース最適化プログラム3000は、Webサーバ1420のスケールアウト処理を実行する(ステップS3150)。
なお、Webサーバ1420のスケールアウト処理の開始基準は、ステップS3100と同一のものでもよいし、また、オートスケール専用に設定された開始基準でもよい。オートスケール専用に設定される開始基準を用いる場合、構成変更プログラム2300が実行したイベントをリソース最適化プログラム3000が受け取ることによって、Webサーバ1420のスケールアウト処理が実行される。
なお、リソース最適化プログラム3000は、Webサーバ1420のスケールアウト処理と連動して、LB1410の設定を変更してもよい。例えば、追加されたWebサーバ1420へのリクエストを分配する等の設定変更が行われる。LB1410の設定を変更する方法は、例えば特許文献1に記載されている方法を用いればよい。
なお、追加されるWebサーバ1420については、現稼働中のVMを用いてもよいし、テナント構築時に使用されたWebサーバ1420の情報に基づいて新たに生成されてもよい。
リソース最適化プログラム3000は、Webサーバ1420のスケールアウト処理の実行後、DBサーバ1430のスケールアップ処理を実行する(ステップS3200)。
ステップS3200では、リソース最適化プログラム3000は、正側のDBサーバ1430に対して当該DBサーバ1430を無停止の変更方法を適用することによって正側のDBサーバ1430のスケールアップを行う。また、リソース最適化プログラム3000は、副側のDBサーバ1430に対して変更方法を適用することによって、副側のDBサーバ1430のスケールアップを行う。副側のDBサーバ1430に適用される変更方法は、停止の変更方法又は無停止の変更方法のいずれであってもよい。なお、ステップS3200の処理の詳細は、図16A及び図16Bを用いて後述する。
なお、リソース最適化プログラム3000は、ステップS3200の処理の前に、DBサーバ1430に割り当てられた仮想CPU及び仮想メモリ等の計算機リソースの割当量を追加する必要があるかを判定し、当該判定結果に基づいて、処理を分岐させてもよい。例えば、リソース最適化プログラム3000は、DBサーバ1430に割り当てられる計算機リソースの割当量を追加する必要があると判定した場合にステップS3200に進み、DBサーバ1430に割り当てられる計算機リソースの割当量を追加する必要がないと判定した場合にステップS3100に戻る。
前述した判定処理は以下のような処理が考えられる。リソース最適化プログラム3000は、Webサーバ1420のスケールアウト処理の実行前及び実行後のWebサーバ1420の数を入力として受け付け、当該Webサーバ1420の数に基づいてスケール管理情報T700を参照してDBサーバ1430の計算機リソースの割当量を追加する必要があるか否かを判定する。
例えば、Webサーバ1420のスケールアウト処理を実行することによって、Webサーバ1420の数が「1」から「2」に変化した場合、リソース最適化プログラム3000は、DBサーバ1430に割り当てられる計算機リソースを追加する必要がないと判定する。Webサーバ1420のスケールアウト処理を実行することによって、Webサーバ1420の数が「2」から「3」に変化した場合、リソース最適化プログラム3000は、DBサーバ1430に割り当てられる計算機リソースを追加する必要があると判定する。
リソース最適化プログラム3000は、DBサーバ1430のスケールアップ処理の実行後、DBサーバ1430の負荷を監視し、当該監視結果に基づいてDBサーバ1430の負荷が増大しているか否かを判定する(ステップS3400)。
例えば、リソース最適化プログラム3000は、スケール管理情報T700のSQLリクエスト限界数(T734)に基づいて、DBサーバ1430の負荷が増大しているか否かを判定する。なお、リソース最適化プログラム3000は、SQLリクエスト限界数(T734)の代わりに、CPU使用率又はメモリ使用量を用いてもよいし、また、性能障害イベント等が登録されている場合には登録された情報を判定条件として用いてもよい。
ここで、具体的な一例として、パターンID(T710)が「SYS1」であるWeb三階層システムにおいて、Webサーバ1420の数が「2」から「3」に変化した場合を想定する。このとき、DBサーバ1430が受け付けたSQLリクエストの数が、Webサーバ1420数が「2」、すなわち、Webサーバ1420のスケールアウト処理の実行前のSQLリクエスト限界数(T734)の値「35」より大きい場合、ステップS3500の処理が実行される。
ステップS3400の処理は、DBサーバ1430の切り替え、すなわち、テイクオーバ処理にリスクがあるため設けられている。これは、DBサーバ1430の切り替え時に何らかの障害が起こる可能性があり、また、DBサーバ1430の切り替え中にフロントエンド側からの接続が不安定になる可能性があるためである。
なお、実施例1では、リソース最適化プログラム3000は、DBサーバ1430の負荷の増大が検出された場合に、自動的にステップS3500の処理を実行しているがこれに限定されない。例えば、リソース最適化プログラム3000は、ステップS3400の判定結果を業務システムの管理者(例えば利用者1100)に通知することによって、ステップS3500等の処理の実行可否又は実行タイミングを管理者が決定できるようにしてもよい。これによって、プログラムで知り得ない外的要因、例えば、提供サービスのサービスイン等のビジネス的要因を考慮できる。
DBサーバ1430の負荷が増大していない場合、リソース最適化プログラム3000は、ステップS3600に進む。
DBサーバ1430の負荷が増大している場合、リソース最適化プログラム3000は、正側のDBサーバ1430及び副側のDBサーバ1430の切り替えによるDBサーバ1430のスケールアップ処理を実行する(ステップS3500)。なお、ステップS3500の処理の詳細は、図17を用いて後述する。
ステップS3400の判定結果がNO、又は、ステップS3500の処理の実行後、リソース最適化プログラム3000は、対象のテナント1400の負荷が収束したか否かを判定する(ステップS3600)。
ステップS3600では、リソース最適化プログラム3000は、ステップS3100と同様に性能管理情報T500に基づいて判定する。例えば、Web使用リソース(T530)又は総Webセッション数(T540)の値が所定の閾値より小さい場合、リソース最適化プログラム3000は、対象のテナント1400の負荷が収束したと判定する。
また、リソース最適化プログラム3000は、Webサーバ1420のスケールイン処理の実行を、対象のテナント1400の負荷の収束として検出してもよい。また、リソース最適化プログラム3000は、所定のイベントの終了を検出した場合に、対象テナント1400の負荷が収束したと判定してもよい。また、リソース最適化プログラム3000は、タイマを用いて設定された時間が経過した場合に、対象テナント1400の負荷が収束したと判定してもよい。
また、リソース最適化プログラム3000は、追加条件として、Web使用リソース(T530)又は総Webセッション数(T540)の値が閾値より小さい状態が「一定期間」継続することを考慮してもよい。すなわち、リソース最適化プログラム3000は、負荷の収束が予測される場合に、対象のテナント1400の負荷が収束したと判定する。
対象テナント1400の負荷が収束していない場合、リソース最適化プログラム3000は、ステップS3400に戻り同様の処理を実行する。
対象テナント1400の負荷が収束した場合、リソース最適化プログラム3000は、Webサーバ1420のスケールイン処理を実行する(ステップS3700)。Webサーバ1420のスケールイン処理は、公知の技術を用いればよい。その後、リソース最適化プログラム3000は、スケールアップされたDBサーバ1430を元の状態に戻すための処理、すなわち、スケールダウンするための処理を実行する(ステップS3800)。なお、ステップS3800の処理の詳細は、図19を用いて後述する。
リソース最適化プログラム3000は、ステップS3800の処理が完了した後、全ての処理を終了する(ステップS3020)。なお、実施例1では、ステップS3800の処理が完了した後、処理が終了しているが、ステップS3010に戻り処理を継続するようなループ処理でもよい。図1では、前述したようなループ処理の場合におけるテナント1400の状態の遷移を表現している。
図15に示す処理フローでは、ステップS3200においてDBサーバ1430のスケールアップ処理の実行中に、さらに、テナント1400の負荷の増大の予兆が検出された場合に対応することができない。例えば、Webサーバ1420の数「2」から「3」に変化したことに伴ってDBサーバ1430のスケールアップ処理が開始された後、さらに、Webサーバ1420の数が「3」から「4」に変化した場合等に対応できない。
前述したような場合には、例えば、図15の処理を再帰的に実行することによって、段階的にDBサーバ1430をスケールアップし、負荷の状況に応じて、段階的にDBサーバ1430をスケールダウンさせることによって対応すればよい。
図16A及び図16Bは、実施例1のリソース最適化プログラム3000がステップS3200において実行するDBサーバ1430のスケールアップ処理の詳細を説明するフローチャートである。
リソース最適化プログラム3000は、現在、DBサーバ1430に割り当てられた計算機リソース量、及びWebサーバ1420の数等のフロントエンド側の情報を取得し、取得された情報及びスケール管理情報T700に基づいて不足が予想される計算機リソースを判定する。
例えば、Webサーバ1420の数が「2」から「3」に変更された場合、DBサーバ1430のCPUの数は「2」から「3」に、メモリ容量は「5GB」から「7.5GB」に、IOPSは「300」から「600」に変更される。そのため、リソース最適化プログラム3000は、CPUの数が「1」不足し、メモリ容量が「2.5GB」不足し、また、IOPSが「300」不足すると判定する。
まず、リソース最適化プログラム3000は、正側のDBサーバ1430のCPUが不足するか否かを判定する(ステップS3210)。CPUが不足していないと判定された場合、リソース最適化プログラム3000は、ステップS3220に進む。
CPUが不足すると判定された場合、リソース最適化プログラム3000は、リソース変更方法管理情報T800を参照して、正側のDBサーバ1430に対してCPUに関連する計算機リソースの変更方法を適用する(ステップS3215)。具体的には、以下のような処理が実行される。
リソース最適化プログラム3000は、システムテンプレート管理情報T900のパターンID(T910)を参照して、対象のテナント1400の構築時に使用されたシステムテンプレートの識別子と一致するレコードを検索する。検索されたレコードのTbl ID(T940)から識別子を取得する。
リソース最適化プログラム3000は、リソース変更方法管理情報T800のTbl ID(T810)が取得された識別子と一致するレコードを検索する。さらに、リソース最適化プログラム3000は、検索されたレコードの対象(T820)が「CPU」かつ分類(T840)が「無停止」である計算機リソースの変更方法を順次適用する。
例えば、変更方法(T830)が「CPUシェア値変更」の場合、リソース最適化プログラム3000は、正側のDBサーバ1430のCPUのシェア値を「高」に変更するように構成変更プログラム2300に指示する。また、変更方法(T830)が「CPU数変更」の場合、リソース最適化プログラム3000は、不足分のCPUの追加を構成変更プログラム2300に指示する。
次に、リソース最適化プログラム3000は、正側のDBサーバ1430のメモリが不足しているか否かを判定する(ステップS3220)。メモリが不足していないと判定された場合、リソース最適化プログラム3000は、ステップS3230に進む。
メモリが不足していると判定された場合、リソース最適化プログラム3000は、リソース変更方法管理情報T800を参照して、正側のDBサーバ1430に対してメモリに関連する計算機リソースの変更方法を適用する(ステップS3225)。
具体的には、リソース最適化プログラム3000は、リソース変更方法管理情報T800から検索されたレコードの対象(T820)が「メモリ」かつ分類(T840)が「無停止」である計算機リソースの変更方法を順次適用する。
例えば、変更方法(T830)が「メモリシェア値変更」の場合、リソース最適化プログラム3000は、正側のDBサーバ1430のメモリのシェア値を「高」に変更するように構成変更プログラム2300に指示する。なお、変更方法(T830)が「メモリ容量変更」である計算機リソースの変更方法は、DBサーバ1430を停止させる必要があるため、ステップS3215では適用されない。
次に、リソース最適化プログラム3000は、正側のDBサーバ1430のIOPSが不足しているか否かを判定する(ステップS3230)。IOPSが不足していないと判定された場合、リソース最適化プログラム3000は、ステップS3240に進む。
IOPSが不足していると判定された場合、リソース最適化プログラム3000は、リソース変更方法管理情報T800を参照して、正側のDBサーバ1430及び当該DBサーバ1430に対応するVM410が利用するボリューム210に対して計算機リソースの変更方法を適用する(ステップS3235)。
具体的には、リソース最適化プログラム3000は、リソース変更方法管理情報T800から検索されたレコードの対象(T820)が「IOPS」かつ分類(T840)が「無停止」である計算機リソースの変更方法を順次適用する。
IOPSの変更では、一般にCPU及びメモリの変更とは異なり、VM410又はVM410が動作するハイパバイザ400、及びストレージ装置200のそれぞれに対して設定が可能であることが多い。図14に示す例では、無停止の変更方法として、「ハイパバイザ上のIOPS制限値の変更」と「ストレージ装置へIOPS値の変更」を示す。
変更方法(T830)が「ハイパバイザ上のIOPS制限値の変更」の場合、リソース最適化プログラム3000は、正側のDBサーバ1430に対応するVM410に対するIOPSの制限がハイパバイザ400又は当該VM410に設定されているか否か確認する。IOPSの制限が設定され、かつ、設定されているIOPSの上限値が必要なIOPSより小さい場合、リソース最適化プログラム3000は、制限されたIOPSを緩和するように構成変更プログラム2300に指示する。
例えば、現在のIOPSが必要なIOPS「600」より小さい場合、リソース最適化プログラム3000は、IOPSを「600」に設定するように構成変更プログラム2300に指示する。
また、変更方法(T830)が「ストレージ装置へIOPS値の変更」の場合、リソース最適化プログラム3000は、正側のDBサーバ1430に対応するVM410が利用するストレージ装置200及びボリューム210について、必要となるIOPSを確保できるか否か判定する。必要なIOPSを確保できないと判定された場合、リソース最適化プログラム3000は、IOPSの拡張を構成変更プログラム2300に指示する。
ここで、図8を用いて具体的な処理について説明する。なお、正側のDBサーバ1430に対応するVM410の識別子は「VM13」であるものとし、また、IOPSが「300」から「600」に増加することが予測されているものとする。
まず、リソース最適化プログラム3000は、論理物理構成管理情報T300に基づいて、対象とするVM410が利用するボリューム210の総IOPSを算出する。この場合、ボリュームID(T332)が「Vol2」であるボリューム210は、「VM13」及び「VM14」によって利用されているため、総IOPSが「600」と算出される。
「VM13」のIOPSが「300」から「600」へ増加することが予測される場合、「Vol2」のボリューム210の総IOPS「900」となる。一方、ストレージ管理情報T200のボリュームID(T220)が「Vol2」である行を参照すると、確保されているIOPSは「600」である。そのため、リソース最適化プログラム3000は、「300」だけIOPSが不足することが分かる。したがって、リソース最適化プログラム3000は、「Vol2」のボリューム210に対して「300」だけIOPSを増加、すなわち、IOPS(T240)が「900」となるように構成変更プログラム2300に指示する。
なお、ストレージ装置200がDynamic Tiering機能を有する場合、リソース最適化プログラム3000は、その指定方法に応じて、性能指標を「高」に設定するように構成変更プログラム2300に指示してもよいし、また、SSDの構成比率が高くなるようにボリューム210の構成変更を構成変更プログラム2300に指示してもよい。
なお、ステップS3215、ステップS3225及びステップS3235の処理では、リソース変更方法管理情報T800に登録された計算機リソースの変更方法のうち、条件に一致する計算機リソースの変更方法を全て適用しているが、これに限定されない。
例えば、計算機リソースの変更方法のそれぞれに適用順番を示す優先度が設定されている場合、リソース最適化プログラム3000は、優先度に基づいて、1つ又は2つ以上の変更方法を選択し、選択されたものを実行してもよい。さらに、複数の計算機リソースの変更方法の間に排他関係が設定されている場合、リソース最適化プログラム3000は、優先度及び排他関係に基づいて、1つ又は2つ以上の計算機リソースの変更方法を適用してもよい。
なお、ステップS3215、ステップS3225及びステップS3235の処理では、計算機リソースの各々について割当量を変更していたがこれに限定されない。例えば、クラウドサービス1200によっては、VM410のタイプ(フレーバーとも呼ばれる)として、予め決定されたCPU、メモリ、及びIOPSの組み合わせが複数規定されおり、当該タイプを選択することによって性能、すなわち、DBサーバ1430の計算機リソースの割当量を変更できる。
このようなクラウドサービス1200の場合、CPU又はメモリ等の1つの計算機リソースについて不足が発生している場合、不足が発生している計算機リソースを確保可能なタイプにしたがった処理を実行することによって、ステップS3215、ステップS3225及びステップS3235と同様の処理を実現できる。また、スケール管理情報T700のDBサーバ(T730)に、Webサーバ1420の数に応じたタイプを設定することによって、前述した処理に対応させることもできる。
なお、実施例1では、CPU、メモリ、IOPSの順に処理を実行していたが、処理の順番はこれに限定されない。ただし、メモリ及びIOPSとの間には、メモリ容量を変更することによってボリューム210へのIOが減るという相関関係が存在するため、処理の順番は、メモリ及びIOPSの順に実行されることが望ましい。
次に、リソース最適化プログラム3000は、正側のDBサーバ1430の計算機リソースの変更後(ステップS3210からステップS3235までの処理の完了後)、正側のDBサーバ1430に対応するVM410の再配置処理を実行する(ステップS3300)。これは、正側のDBサーバ1430に割り当てる計算機リソースをより多く確保するためである。ステップS3300の処理の詳細は、図17を用いて後述する。
次に、リソース最適化プログラム3000は、DBサーバ1430がHA構成であるか否かを判定する(ステップS3240)。すなわち、副側のDBサーバ1430が存在するか否かが判定される。
例えば、リソース最適化プログラム3000は、システムテンプレート管理情報T900の構成(T936)、又は、テナント管理情報T400の機能(T440)に基づいて、DBサーバ1430がHA構成であるか否かを判定できる。
DBサーバ1430がHA構成でないと判定された場合、リソース最適化プログラム3000は、ステップS3290に進む。
DBサーバ1430がHA構成であると判定された場合、リソース最適化プログラム3000は、副側のDBサーバ1430のCPU、メモリ、及びIOPSのそれぞれが不足しているか否かを判定する(ステップS3250、ステップS3260、ステップS3270)。ステップS3250、ステップS3260、及びステップS3270の処理は、ステップS3210、ステップS3220、及びステップS3230の処理と同一の処理内容である。ただし、対象が副側のDBサーバ1430である点が異なる。
CPU又はメモリ容量が不足している場合、リソース最適化プログラム3000は、副側のDBサーバ1430に対してCPU又はメモリに関連する計算機リソースの変更方法を適用する(ステップS3255、ステップS3265)。また、リソース最適化プログラム3000は、副側のDBサーバ1430及び当該DBサーバ1430に対応するVM410が利用するボリューム210に対して計算機リソースの変更方法を適用する(ステップS3275)。
ステップS3255及びステップS3265の処理は、ステップS3215及びステップS3225とほぼ同一の処理であるが、以下の点が異なる。まず、対象が副側のDBサーバ1430である点が異なる。また、ステップS3255及びステップS3265の処理では、無停止の変更方法のみが適用されていたが、ステップS3255及びステップS3265の処理では、停止の変更方法及び無停止の変更方法のいずれもが適用される。
ステップS3275の処理は、ステップS3235の処理とほぼ同一の処理であるが以下の点が異なる。HA構成の構成方法によっては、正側のDBサーバ1430及び副側のDBサーバ1430が同一の記憶領域(ボリューム210)を共有している場合があるため、リソース最適化プログラム3000は、HA構成に応じて、計算機リソースの変更方法を適用しない場合がある。また、計算機リソースの変更方法が適用される場合には、停止の変更方法及び無停止の変更方法のいずれもが適用される。
なお、DBサーバ1430に対応するVM410が稼働する物理サーバ150においてCPUの数及びメモリ容量を変更するために必要な計算機リソースが確保できない場合、計算機リソースに空きがある他の物理サーバ150にVM410を移動すればよい。なお、VM410の移動方法は、後述するステップS3300と同一の方法を用いればよい。
ステップS3270の判定結果が「NO」又はステップS3275の処理が完了した後、リソース最適化プログラム3000は、副側のDBサーバ1430に対する計算機リソースのシェア値を変更する(ステップS3280)。
具体的には、リソース最適化プログラム3000は、副側のDBサーバ1430に対する計算機リソースのシェア値を下げる。これは、テイクオーバ処理の実行前では、正側のDBサーバ1430がWebサーバ1420からのアクセスに対する処理を実行しているが、当該処理の実行後は、テイクオーバ処理前に正側のDBサーバ1430であった副側のDBサーバ1430に多くの計算機リソースを割り当てる必要がないためである。
そのため、リソース最適化プログラム3000は、副側のDBサーバ1430に対応するVM410が認識可能なCPU及びメモリ容量等の計算機リソースはスケールアップさせるが、シェア値を変更することによって実際に割り当てる計算機リソース量を低く設定する。これによって、ハイパバイザ400は、同一の物理サーバ150上で稼働する他のVM410に割り当てる計算機リソースを確保することができる。したがって、クラウドサービス1200全体として計算機リソースを有効に活用することが可能となる。
次に、リソース最適化プログラム3000は、副側のDBサーバ1430の配置変更処理を実行する(ステップS3300)。これは、副側のDBサーバ1430に割り当てる計算機リソースをより多く確保するためである。なお、ステップS3300の処理の詳細は、図17を用いて後述する。
ステップS3240の判定結果が「No」又はステップS3300の処理が完了した後、リソース最適化プログラム3000は、テナント1400の構成の変更内容を課金プログラム2400及びポータルプログラム2100に通知し(ステップS3290)、その後ステップS3400に進む。
課金プログラム2400は、リソース最適化プログラム3000からテナント1400の構成の変更内容を受け付けると、所定の課金体系にしたがってテナント1400の利用者1100に対して課金する。なお、課金プログラム2400は、正側のDBサーバ1430の計算機リソースの変更分に対する料金のみを課金してもよいし、また、正側のDBサーバ1430及び副側のDBサーバ1430の両方の計算機リソースの変更分に対する料金を課金してもよい。課金の形態は、初期の契約又は事業者が提供するサービスメニューに応じて決定されるものである。
図17は、実施例1のリソース最適化プログラム3000が実行するVM410の再配置処理を説明するフローチャートである。
図16A及び図16Bを用いて説明したように、ステップS3300では、シェア値を効果的に利用するために、ハイパバイザ400間におけるVM410の再配置処理が実行される。
シェア値は、物理サーバ150が有する計算機リソースを複数のVM410に分配する指標である。ハイパバイザ400上で動作する全てのVM410のシェア値が「高」に設定されている場合、いずれのVM410にも優先的に計算機リソースを割り当てることができない。すなわち、シェア値を設定しても計算機リソースの効率的な割り当てを実現できない。このような状況を回避するために、正側のDBサーバ1430に対応するVM410の再配置処理が実行される。
副側のDBサーバ1430に対応するVM410は、テイクオーバ処理の実行前は、シェア値が「低」に設定されている。しかし、テイクオーバ処理等によって将来VM410に割り当てられた計算機リソースを最大値まで使用する可能性がある。そのため、VM410に割り当てられた計算機リソースを最大値分確保できない状況を回避するために、副側のDBサーバ1430に対応するVM410の再配置処理が実行される。
なお、VM410を停止させることなく、ハイパバイザ400間、すなわち、物理サーバ150間で移動させる技術として、例えば、VMotion機能がある。VMotion機能では、事前にクラスタ設定がされた複数のハイパバイザの間でVMが停止させることなく移動させることが可能な技術である。このような技術を用いることによって、VM410を停止させることなく、ハイパバイザ400間でVM410を移動できる。
なお、シェア値は、同一の物理サーバ150上で動作するVM410に対する当該物理サーバ150の計算機リソースの配分率を決定するものとして用いられているが、他の対象にも適用可能である。例えば、複数の物理サーバ150から構成されるクラスタに対してシェア値を適用してもよい。この場合、クラスタに含まれる全ての物理サーバ150の計算機リソースの合計値を母数とし、クラスタ内のVM410に対する計算機リソースの配分率を決定するものとしてシェア値が用いられる。
まず、リソース最適化プログラム3000は、正側のDBサーバ1430に対応するVM410の再配置処理であるか否かを判定する(ステップS3310)。例えば、ステップS3230又はステップS3235の処理の後にVM410の再配置処理が開始された場合、リソース最適化プログラム3000は、正側のDBサーバ1430に対応するVM410の再配置処理であると判定する。以下の説明では、再配置処理の対象となるVM410を単に対象のVM410とも記載する。
正側のDBサーバ1430に対応するVM410の再配置処理であると判定された場合、リソース最適化プログラム3000は、対象のVM410が稼働する物理サーバ150上で稼働する他のVM410のうち、負荷の増大が予想されるVM410が存在するか否かを判定する(ステップS3320)。
具体的には、リソース最適化プログラム3000は、論理物理構成管理情報T300のサーバID(T331)が対象のVM410が稼働する物理サーバ150の識別子と一致するレコードを検索する。これによって、対象のVM410が稼働する物理サーバ150上で稼働する他のVM410の一覧を取得することができる。
リソース最適化プログラム3000は、検索されたレコードのCPUシェア(T324)、メモリシェア(T325)、及びI/Oシェア(T325)の値を参照して、負荷の増大が予想されるVM410が存在するか否かを判定する。
例えば、リソース最適化プログラム3000は、対象のVM410のシェア値を上げるカラムに着目し、当該カラムに「高」が設定されるVM410が存在するか否かを判定する。着目するカラムに「高」が設定されるVM410が存在する場合、負荷の増大が予想されるVM410が存在すると判定される。
なお、リソース最適化プログラム3000は、テナント管理情報T400の状態(T460)に基づいて前述した判定を行ってもよい。例えば、対象のVM410のレコード以外に状態(T460)に「スケールアップ」が設定されたレコードが存在する場合、負荷の増大が予想されるVM410が存在すると判定される。
また、リソース最適化プログラム3000は、性能管理情報T500のSQLリクエスト数(T550)に基づいて、SQLリクエストの増加傾向が検出されるか否かを判定することによって前述した判定を行ってもよい。SQLリクエストの増加傾向が検出された場合、負荷の増大が予想されるVM410が存在すると判定される。
負荷の増大が予想されるVM410が存在しないと判定された場合、リソース最適化プログラム3000は、特に処理を実行することなく、ステップS3240に進む。この場合、シェア値を「高」に変更しても他のVM410に影響がなく、VM410を移動させる必要がないためである。
負荷の増大が予想されるVM410が存在すると判定された場合、リソース最適化プログラム3000は、対象のVM410が稼働する物理サーバ150とは異なる物理サーバ150の中に、対象のVM410に必要な計算機リソースを確保できる物理サーバ150が存在するか否かを判定する(ステップS3330)。
ステップS3330では、各物理サーバ150に対してステップS3320の同一の処理が実行される。例えば、リソース最適化プログラム3000は、論理物理構成管理情報T300を参照し、各物理サーバ150上で稼働する全てのVM410について、着目するカラムの値を確認する。一つの物理サーバ150上で稼働する全てのVM410について、着目するカラムに「高」が設定されていない場合、リソース最適化プログラム3000は、当該物理サーバ150を、DBサーバ1430に必要な計算機リソースを確保できる物理サーバ150と判定する。
DBサーバ1430に必要な計算機リソースを確保できる物理サーバ150が存在しないと判定された場合、リソース最適化プログラム3000は、VM410の移動ができないため特に処理を実行することなくステップS3240に進む。
DBサーバ1430に必要な計算機リソースを確保できる物理サーバ150が存在すると判定された場合、リソース最適化プログラム3000は、既存の技術を用いて、対象のVM410が稼働する物理サーバ150から検索された物理サーバ150に当該VM410を停止させることなく移動する(ステップS3340)。その後、リソース最適化プログラム3000は、ステップS3240に進む。
ステップS3310において、副側のDBサーバ1430に対応するVM410の再配置処理であると判定された場合、リソース最適化プログラム3000は、副側のDBサーバ1430が存在するか否かを判定する(ステップS3350)。例えば、リソース最適化プログラム3000は、テナント管理情報T400の状態(T440)を参照することによって、副側のDBサーバ1430が存在するか否かを判定する。
副側のDBサーバ1430が存在しないと判定された場合、リソース最適化プログラム3000は、ステップS3290に進む。
副側のDBサーバ1430が存在すると判定された場合、リソース最適化プログラム3000は、対象のVM410が稼働する物理サーバ150が、スケールアップ処理の実行によって新たに割り当てられた計算機リソースを確保できるか否かを判定する(ステップS3360)。具体的には、以下のような処理が実行される。
リソース最適化プログラム3000は、論理物理構成管理情報T300のサーバID(T331)が対象のVM410が稼働する物理サーバ150の識別子と一致するコードを検索する。リソース最適化プログラム3000は、スケールアップ処理の実行後に追加された計算機リソースのカラム、すなわち、CPUシェア(T324)、メモリシェア(T325)、及びI/Oシェア(T325)の値が「高」であるVM410を特定する。
リソース最適化プログラム3000は、特定されたVM410について、スケールアップ処理の実行前の計算機リソース量を合計値、及びスケールアップ処理の実行後の計算機リソース量の合計値を算出する。リソース最適化プログラム3000は、算出されたいずれの合計値もが物理サーバ150が有する計算機リソース量より小さいか否かを判定する。
算出されたいずれの合計値もが物理サーバ150が有する計算機リソース量より小さい場合、リソース最適化プログラム3000は、対象のVM410が稼働する物理サーバ150が、スケールアップ処理の実行によって新たに割り当てられた計算機リソースを確保できると判定する。
対象のVM410が稼働する物理サーバ150が、スケールアップ処理の実行によって新たに割り当てられた計算機リソースを確保できると判定された場合、リソース最適化プログラム3000は、ステップS3290に進む。これは、VM410を移動させなくても必要な計算機リソースを割り当てられない状況が発生しないためである。
対象のVM410が稼働する物理サーバ150が、スケールアップ処理の実行によって新たに割り当てられた計算機リソースを確保できないと判定された場合、リソース最適化プログラム3000は、対象のVM410が稼働する物理サーバ150とは異なる物理サーバ150の中に、DBサーバ1430に必要な計算機リソースを確保できる物理サーバ150が存在するか否かを判定する(ステップS3370)。ステップS3370の処理はステップS3330と同一の処理である。
DBサーバ1430に必要な計算機リソースを確保できる物理サーバ150が存在しないと判定された場合、リソース最適化プログラム3000は、VM410の移動ができないため特に処理を実行することなくステップS3290に進む。
DBサーバ1430に必要な計算機リソースを確保できる物理サーバ150が存在すると判定された場合、リソース最適化プログラム3000は、既存の技術を用いて、対象のVM410が稼働する物理サーバ150から検索された物理サーバ150に当該VM410を移動する(ステップS3340)。その後、リソース最適化プログラム3000は、ステップS3290に進む。
なお、稼働する物理サーバ150が指定されているケースを考慮してもよい。例えば、論理物理構成管理情報T300に、稼働する物理サーバ150を固定するか否かを示すフラグを設定するカラムを含めておけばよい。これによって、VM410の再配置処理の開始時点、又は、ステップS3340若しくはステップS3380においてVM410が指定された物理サーバ150から移動しないように制御できる。
また、正側及び副側のDBサーバ1430に対応する2つのVM410を同一の物理サーバ150又は同一のクラスタ上で稼働させない旨の条件を考慮することもできる。この場合、ステップS3330又はステップS3370の処理において、リソース最適化プログラム3000は、前述した条件に一致する物理サーバ150を移動候補から除外することができる。
図18は、実施例1のリソース最適化プログラム3000が実行するテイクオーバ処理を含むDBサーバ1430のスケールアップ処理の詳細を説明するフローチャートである。
まず、リソース最適化プログラム3000は、DBサーバ1430がHA構成で組まれているか否かを判定する(ステップS3510)。例えば、リソース最適化プログラム3000は、テナント管理情報T400の機能(T440)又はシステムテンプレート管理情報T900の構成(T936)等を参照してDBサーバ1430がHA構成で組まれているか否かを判定する。
DBサーバ1430がHA構成で組まれていない場合、リソース最適化プログラム3000は、テイクオーバ処理を実行できないため、特に処理を実行することなくステップS3600に進む。
DBサーバ1430がHA構成で組まれている場合、リソース最適化プログラム3000は、副側のDBサーバ1430に割り当てられた計算機リソースのシェア値を変更する(ステップS3520)。具体的には、リソース最適化プログラム3000は、論理物理構成管理情報T300を参照して、副側のDBサーバ1430に対応するVM410のレコードのCPUシェア(T324)、メモリシェア(T325)、又はI/Oシェア(T325)の値を「高」に変更する。このとき、リソース最適化プログラム3000は、構成変更プログラム2300等を介して、シェア値の変更をハイパバイザ400に通知する。
リソース最適化プログラム3000は、テイクオーバ処理の実行する(ステップS3530)。具体的には、リソース最適化プログラム3000は、構成変更プログラム2300にテイクオーバ処理の実行を指示する。
リソース最適化プログラム3000は、テイクオーバ処理が完了した後、切り替え後の副側のDBサーバ1430、すなわち、テイクオーバ処理の実行前の正側のDBサーバ1430に割り当てられた計算機リソースのシェア値を変更する(ステップS3540)。具体的には、リソース最適化プログラム3000は、論理物理構成管理情報T300を参照して、テイクオーバ処理の実行後の副側のDBサーバ1430に対応するVM410のレコードのCPUシェア(T324)、メモリシェア(T325)、又はI/Oシェア(T325)の値を「低」に変更する。このとき、リソース最適化プログラム3000は、構成変更プログラム2300等を介して、シェア値の変更をハイパバイザ400に通知する。
リソース最適化プログラム3000は、テイクオーバ処理に関する情報を課金プログラム2400及びポータルプログラム2100に通知し(ステップS3550)、その後、ステップS3600に進む。
従量課金、かつ、正側のDBサーバ1430のみに課金するような課金体系の場合、課金プログラム2400にDBサーバ1430に関する情報を通知することによって、テイクオーバ処理に柔軟に追従した課金が可能となる。また、ポータルプログラム2100が、ポータル2000にDBサーバ1430に関する情報を表示することによって、利用者1100に対して処理の効果等を視覚的に認識させることができる。
なお、本実施例では、ステップS3520、ステップS3530、及びステップS3540の順に処理が実行される。これは、DBサーバ1430の性能を確実に確保するためである。
例えば、ステップS3520の処理を他の処理の後に実行した場合、テイクオーバ処理後に正側のDBサーバ1430となるDBサーバ1430に割り当てられた計算機リソースのシェア値は低いままとなっている。この場合、正側のDBサーバ1430が認識する計算機リソース量は増加しているが、実際に割り当てられている計算機リソースは少ないため、スケールアップ処理(テイクオーバ処理)の効果が得られない。
したがって、前述したような問題を回避するため、本実施例では、ステップS3530、ステップS3530、及びステップS3540の順に処理が実行される。
なお、図18に示すスケールアップ処理の開始時点において、ステップS3200の処理が完了していない場合、リソース最適化プログラム3000は、ステップS3200の処理が完了するまで、処理の開始を待ってもよい。また、スケールアップ処理が完了する前に負荷が収束した場合、リソース最適化プログラム3000は、当該スケールアップ処理をスキップしてもよい。
図19は、実施例1のリソース最適化プログラム3000が実行するスケールアップされたDBサーバ1430に対するスケールダウン処理の詳細を説明するフローチャートである。
まず、リソース最適化プログラム3000は、DBサーバ1430がHA構成で組まれているか否かを判定する(ステップS3810)。ステップS3810の処理は、ステップS3510と同一の処理である。
DBサーバ1430がHA構成で組まれていないと判定された場合、リソース最適化プログラム3000は、正側のDBサーバ1430に割り当てられた計算機リソースの割当量及びシェア値をスケールアップ処理の実行前の値に戻し(ステップS3860)、その後、ステップS3850に進む。例えば、リソース最適化プログラム3000は、Webサーバ1420のスケールイン処理の実行に合わせて、正側のDBサーバ1430の計算機リソース量を削減する。
DBサーバ1430がHA構成で組まれていると判定された場合、リソース最適化プログラム3000は、副側のDBサーバ1430の計算機リソース量及びシェア値を、スケールアップ処理の実行前の値に戻す(ステップS3820)。例えば、リソース最適化プログラム3000は、スケール管理情報T700に基づいて、Webサーバ1420のスケールイン処理の実行後のWebサーバ1420の数に応じてDBサーバ1430の計算機リソース量を戻す。このとき、リソース最適化プログラム3000は、構成変更プログラム2300等を介して、シェア値の変更をハイパバイザ400に通知する。
DBサーバ1430の停止が必要な計算機リソースの変更方法が含まれている場合、テイクオーバ処理の実行後に正側のDBサーバ1430となるDBサーバ1430の計算機リソースを変更できない可能性がある。そのため、リソース最適化プログラム3000は、テイクオーバ処理の実行前に、副側のDBサーバ1430の計算機リソースの状態をスケールアップ処理の実行される前の状態に戻す。
リソース最適化プログラム3000は、テイクオーバ処理を実行する(ステップS3830)。これによって、テナント1400に含まれるDBサーバ1430は、ステップS3200の処理が実行される前の状態に戻る。
リソース最適化プログラム3000は、テイクオーバ処理が完了した後、副側のDBサーバ1430の計算機リソース量及びシェア値を、スケールアップ処理の実行前の値に戻す(ステップS3840)。このとき、リソース最適化プログラム3000は、構成変更プログラム2300等を介して、シェア値の変更をハイパバイザ400に通知する。
ステップS3840又はステップS3860の処理の完了後、リソース最適化プログラム3000は、現在のテナント1400の構成情報を課金プログラム2400及びポータルプログラム2100に通知し(ステップS3850)、その後、ステップS3020に進む。
例えば、従量課金であり、かつ、正側のDBサーバ1430にのみ課金する課金体系の場合、課金プログラム2400にDBサーバ1430に関する情報を通知することによって、スケールダウン処理に柔軟に追従した課金が可能となる。
図21は、実施例1のテナント1400の状態を確認するために表示される画面の一例を示す説明図である。
利用者1100が、例えばWebブラウザを用いてポータル2000にアクセスした場合に、図21に示すような画面2050が表示される。
画面2050には、利用者1100が利用するテナント1400の状態を示す状態情報2060及びOKボタン2070が表示される。状態情報2060の表示項目はテナントID(2061)、パターン(2062)、種別(2063)、及び状態(2064)を含む。
テナントID(2061)はテナントID(T620)と同一のものである。パターン(2062)はパターンID(T640)と同一のものであり、パターン入力2011にて選択されたものである。種別(2063)は種別(T630)と同一のものであり、種別入力2012にて選択されたものである。
状態(2064)は、状態(T460)を要約した情報、又はリソース最適化プログラム3000によって出力されるスケールアップイベント又はスケールダウンイベント等を表示する。また、状態(2064)は、テナント1400を構成するサーバ(VM410)の計算機リソースの状態、例えば、性能管理情報T500を表示してもよい。
利用者1100は、状態情報2060を参照することによって、種別(2063)に表示された契約形態のテナント1400が正常に稼働していることを視覚的に確認することができる。
(変形例)
実施例1では、複数のテナントが1つ又は複数の物理サーバ150上に混在するマルチテナント環境のクラウドサービスを想定している。しかし、本発明は、1つ又は複数の物理サーバ150上に一つのテナント1400のみが存在するシングルテナントの環境にも適用できる。
また、実施例1では、パブリッククラウド、すなわち、事業者が複数の異なる団体に属する利用者1100のテナントが混在する環境への適用例を示した。これ以外にもプライベートクラウド、すなわち企業内で情報システム部門が各企業内部門に提供する環境にも適用できる。
また、実施例1では、IaaSを想定しているが、提供形態としてPaSSであってもよい。
また、実施例1では、業務システムとしてWeb三階層システムを前提としているが、例えば、ステップS3400の処理において、DBサーバ1430へのSQLリクエスト数の増加率等を用いることによって、DBサーバ1430単体への適用も可能である。また、DBサーバ1430は必ずしもHA構成が組まれていなくてもよい。
また、実施例1では、サーバ仮想化環境を前提としているが、物理サーバ150そのものを用いてDBサーバ1430等を構成してもよい。この場合、HA構成を組んで副側のDBサーバ1430において、DBサーバ1430の停止を伴った計算機リソースの変更を行うことによって、同様の処理を適用することができる。
本発明によれば、フロントエンド側のWebサーバ1420のスケールアウト処理等を契機とし、バックエンド側のDBサーバ1430をスケールアップ処理が可能とする。これによって、スケールアウトができない構成要素を含む業務システムにおいても、フロントエンド側の処理性能の向上に追従したバックエンド側の処理性能の向上が可能となり、システム全体として自動スケーリングが可能となる。
したがって、例えば、通信販売システムを実現するWeb三階層システムに本発明を適用した場合、等が通信販売システムを運用する事業者に対して、通信販売の利用者の機会損失等を回避でき、また、当該通信販売システムの投資コストを削減できる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROM等が用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(Javaは登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。