[1]実施例
図1は実施例に係るリソース提供システム1の全体構成を表す。リソース提供システム1は、処理(情報処理)の実行に用いられるリソースをユーザに使用させるリソース提供サービスを実施するためのシステムである。ここでいうリソースには、CPU(Central Processing Unit)、メモリ、ストレージ、それらを備える物理的な装置及びそれらによって実現される仮想的な装置(いわゆる仮想マシン)等がある。
また、リソース提供システム1においては、ユーザが利用する各種サービス(OCR(Optical Character Recognition)サービス及び文章を翻訳する翻訳サービス等)を複数個同時に実行可能なインスタンスと呼ばれる仮想マシンがリソースとして提供される。本実施例では、ユーザに対しては、利用中のインスタンスの数に応じた課金が行われるものとする。
リソース提供システム1は、通信回線2と、ユーザ端末3と、クラウドシステム4と、リソース管理装置20とを備える。通信回線2は、例えばインターネット、移動体通信網及び電話回線等を含み、自回線に接続されている装置同士の通信を仲介する。通信回線2には、ユーザ端末3及びクラウドシステム4が接続されている。
ユーザ端末3は、前述したリソース提供サービスを利用するユーザが使用する端末である。ユーザには、例えば、企業の業務としてリソース提供サービスを利用する者と、個人的な活動(例えばオンラインゲームのプレイ等)でリソース提供サービスを利用する者とが含まれる。なお、図1ではユーザ端末3が1台しか表されていないが、通常は複数のユーザ端末3が使用されているものとする。
ユーザ端末3は、ユーザの操作により前述したサービスの実行をクラウドシステム4に対して要求し、要求したサービスの実行結果を受け取って例えばその実行結果に応じた画面を表示する。クラウドシステム4によるサービスの実行とは、各サービスに対応した1以上の処理(OCRサービスなら文字領域抽出処理、文字の切り出し処理及び文字の認識処理等)を実行することを意味する。
クラウドシステム4は、処理を実行するリソースである複数のサーバ装置10を備え、それらのリソースを用いてユーザ端末3から要求されたサービスを実行する。各サーバ装置10は、前述したインスタンスを実現する。リソース管理装置20は、リソース提供システム1の管理者がリソースの稼働状況を管理するための装置であり、本実施例では、各インスタンスでのサービスの実行状況及びその履歴等を表示する。
図2はサーバ装置10のハードウェア構成を表す。サーバ装置10は、CPU11と、RAM(Random Access Memory)12と、ROM(Read Only Memory)13と、通信部14と、ストレージ15とを備えるコンピュータである。CPU11は、メモリであるRAM12をワークエリアとして用いてROM13やストレージ15に記憶されているプログラムを実行することで各部の動作を制御する。通信部14は、通信回路等を有し、通信回線2を介して外部装置と通信を行う。ストレージ15は、HDD(Hard Disk Drive)やSSD(Solid State Drive)、フラッシュメモリなどの記憶手段であり、CPU11が制御に用いるデータやプログラムを記憶している。
図3はリソース管理装置20のハードウェア構成を表す。リソース管理装置20は、CPU21と、RAM22と、ROM23と、通信部24と、ストレージ25と、UI部26(User Interface)とを備えるコンピュータである。CPU21からストレージ25までは、図2に表す同名のハードウェアと共通するハードウェアである。UI部26は、液晶ディスプレイ等の表示手段を備え、自装置を操作するためのメニュー画面等を表示する。また、UI部26は、キーボード及びマウス等の入力手段を備えている。
リソース提供システム1が備える各装置のCPUがプログラムを実行して各部を制御することで、以下に述べる機能が実現される。
図4及び図5はリソース提供システム1が実現する機能構成を表す。図4ではサーバ装置10を1台だけ表しているが、各サーバ装置10は、いずれも、仮想マシン実現部30と、インスタンス群31と、第1オートスケール制御部32と、第2オートスケール制御部33と、リクエスト・レスポンスキュー34と、サービス定義記憶部35と、サービス管理情報記憶部36と、移転制御部40とを備える。
図5に表すように、移転制御部40は、サービス状態管理部401と、サービス状態記憶部402と、リソース使用率算出部403と、サービス移転判断部404と、移転対象選択部405と、サービス停止判断部406と、サービス移転情報記憶部407とを備える。リソース管理装置20は、サービス管理情報表示部201を備える。インスタンス群31は、インスタンス50−1、インスタンス50−2及びインスタンス50−3等の複数のインスタンスを備える。以下それらを区別しない場合は「インスタンス50」という。
インスタンス50−1は、コンテナ制御要求受付部51−1と、コンテナ実行部52−1と、コンテナ制御部53−1とを備える。インスタンス50−2は、コンテナ制御要求受付部51−2と、コンテナ実行部52−2と、コンテナ制御部53−2とを備える。なお、インスタンス50−3以降の各インスタンスもいずれもインスタンス50−1及びインスタンス50−2と共通の機能を備える。各インスタンス50の機能を区別しない場合、以下ではそれぞれ「コンテナ制御要求受付部51」、「コンテナ実行部52」、「コンテナ制御部53」という。
本実施例では、インスタンス50−1で実行されているサービスの移転先がインスタンス50−2となる場合について主に説明する(ただしインスタンス50−2が移転先にならない場合も説明する)。インスタンス50−1がサービス60の移転元となりインスタンス50−2が移転先となる場合は、インスタンス50−2は本発明の「第1仮想マシン」の一例となり、インスタンス50−1は本発明の「第2仮想マシン」の一例となる。
仮想マシン実現部30は、仮想マシンを実現する機能であり、本実施例では、コンテナ型の仮想化技術を用いた仮想マシンを実現する。仮想マシン実現部30は、例えばDocker(登録商標)によって実現されるが、これに限らず、その他のコンテナ型の仮想化プログラムによって実現されてもよい。仮想マシン実現部30は、図4の例では、インスタンス50−1等の各インスタンスの他、インスタンス以外の機能である第1オートスケール制御部32及び移転制御部40等も実現する。
コンテナ制御要求受付部51は、自インスタンスの外部からのコンテナに対する制御要求を受け付けて、コンテナ制御部53に要求内容を伝達する。コンテナ実行部52は、自インスタンスに割り当てられたリソースを用いて上述したOCRサービス等の複数のサービスを実行する。インスタンスにリソースを割り当てるとは、そのインスタンスのためにリソースを確保することである。インスタンス内では、各サービスに対しても同様にリソースが割り当てられる(確保される)。
コンテナ実行部52−1は、図5の例では、サービス61−1、サービス61−2及びサービス61−3という3つのサービスを実行しており、インスタンス50−2のコンテナ実行部52−2は、サービス62−1、サービス62−2及びサービス62−3という3つのサービスを実行している。以下では各サービスを区別しない場合は「サービス60」という。
リソース提供システム1では、各インスタンス50及び各サービス60が各々の識別情報(インスタンスID(Identification)、サービスID)によって識別されるようになっている。以下では、各インスタンス50及び各サービス60に関する情報には常にそれらの識別情報が付与されており、どのインスタンス50及びサービス60の情報であるかが分かるようになっているものとする。
リクエスト・レスポンスキュー34は、図1に表すユーザ端末3からのサービス60へのリクエスト及びそのリクエストに対するサービス60からのレスポンスをキュー(先入れ先出しのデータ)として取り扱う。サービス60は、リクエスト・レスポンスキュー34からリクエストを示すメッセージを受け取り、そのメッセージで指定された処理を実行し、処理結果を示すメッセージをレスポンスとしてリクエスト・レスポンスキュー34に格納する。
コンテナ制御部53は、コンテナ実行部52によるサービス60の実行を制御する。コンテナ制御部53は、コンテナ実行部52へのサービス60の配置、コンテナ実行部52が実行しているサービス60の停止、サービス60の実行に必要なリソースの割り当て、割り当てられたリソース以上のリソースをサービス60が利用することの制限及びサービス60の実行状態の管理等を行う。
サービス60の配置とは、コンテナ実行部52のリソースを確保してそのサービス60の実行環境を作成することをいう。サービスの配置は、サービス定義記憶部35が記憶するサービスの定義情報に基づいて行われる。サービスの定義情報とは、そのサービス60で用いられるプログラム、データ、パラメータ及び使用するリソース等を示す情報である。
移転制御部40は、サービス60の移転に関する動作を制御する機能であり、各インスタンス50とは独立して動作する。インスタンス群31においては、インスタンス間でサービス60が移転される。サービス60の移転とは、本実施例では、移転元のインスタンスで実行されているサービス60を移転先のインスタンスで実行させ、移転元のインスタンスで実行されていたサービス60を停止させることをいう。
移転制御部40のサービス状態管理部401は、各インスタンス50のコンテナ実行部52におけるサービス60の状態を取得して管理する。サービス60の状態には、作成中、実行中、移転準備中の3つの状態が含まれる。「作成中」は、コンテナ実行部52がサービス60の実行環境を作成している途中であることを意味し、作成中のサービス60は処理を実行することができない状態である。
「実行中」は、サービス60の実行環境の作成が完了しており、コンテナ実行部52が処理を実行することができる状態である。リクエストがなくて処理を実行していなくても、実行環境の作成が完了していれば実行中の状態となる。移転先のサービス60の状態が作成中から実行中になると、後述するように移転制御部40が移転元のサービス60を停止させる。こうして移転元のサービス60を停止したときに移転が完了する。
「移転準備中」は、他のインスタンスに移転予定であり、その移転先のインスタンスで同一のサービス60が作成中となっている状態である。本実施例では、コンテナ実行部52は、移転準備中のサービス60、すなわち他のインスタンスへの移転が決定されたサービス60がある場合、移転先のインスタンスでそのサービス60の実行環境が完成するまで(つまりサービス60の状態が「実行中」になるまで)は、そのサービス60に新たな処理を実行させる。
なお、コンテナ実行部52は、前述の場合に、移転先のインスタンスでそのサービス60の実行環境が完成していなくてもそのサービス60に新たな処理を実行させないようにしてもよい。新たな処理を実行させる場合は、新たな処理を実行させない場合に比べて処理の進捗が早まることになり、新たな処理を実行させない場合は、新たな処理を実行させる場合に比べてサービスの移転が早まることになる。
コンテナ実行部52は、サービス60の状態が変更された場合、サービス60が停止された場合、「実行中」の状態のサービス60が処理を開始した場合、又は、その処理が終了した場合に、その旨をコンテナ制御部53及びコンテナ制御要求受付部51を介してサービス状態管理部401に通知する。サービス状態管理部401は、この通知を受け取ると、サービス60の状態をサービス状態記憶部402に記憶させ、既にそのサービス60の状態が記憶されている場合は状態を更新する。こうしてサービス状態記憶部402は、各インスタンス50のサービス60の状態を記憶する。
リソース使用率算出部403は、各インスタンス50のリソース使用率を算出する。インスタンス50のリソース使用率とは、そのインスタンス50に割り当てられているリソースのうち、そのインスタンス50で実行されているサービス60に割り当てられているリソースの割合をいう。リソース使用率算出部403は、現時点での使用率と、移転後の使用率とをリソース使用率として算出する。
現時点での使用率は、インスタンス50で現在実行されているサービス60に割り当てられているリソースについてのリソース使用率である。現在実行されているサービス60とは、前述した3つの状態(作成中、実行中、移転準備中)のサービス60のことである。作成中のサービス60も、既に実行の過程にあるものとして含めている。リソース使用率算出部403は、各インスタンス50におけるサービス60の状態を示す情報をサービス状態管理部401から取得する。
リソース使用率算出部403は、これら3つの状態のサービス60に割り当てられたリソース(以下「第2リソース」という)の、インスタンス50に割り当てられたリソース(以下「第1リソース」という)に対する割合(以下「第1割合」という)を現時点での使用率として、複数のインスタンス50のそれぞれについて算出する。この第1割合を算出するリソース使用率算出部403は本発明の「第1算出部」の一例である。
インスタンス50の移転後の使用率は、そのインスタンス50で実行されているサービス60から他のインスタンス50に移転予定のサービス60を除いたもの、すなわち移転予定のサービス60が移転した後に実行されている見込みのサービス60についてのリソース使用率である。移転後に実行されている見込みのサービス60とは、3つの状態のうち移転準備中のサービス60を除いた作成中及び実行中のサービス60のことである。
リソース使用率算出部403は、この移転後に実行されている見込みのサービス60に割り当てられているリソース(以下「第3リソース」という)の第1リソース(インスタンスに割り当てられているリソース)に対する割合(以下「第2割合」という)を移転後の使用率として、複数のインスタンス50のそれぞれについて算出する。この第2割合を算出するリソース使用率算出部403は本発明の「第2算出部」の一例である。
リソース使用率算出部403は、サービス移転判断部404からリソース使用率の算出を指示されたときに、サービス状態記憶部402から各インスタンス50のサービスの状態を読み出してリソース使用率を算出する。リソース使用率算出部403は、算出したインスタンス50のリソース使用率をサービス移転判断部404に供給する。
サービス移転判断部404は、サービス60の移転に関する判断を行う。サービス移転判断部404は、本実施例では、決められた時間間隔でこの判断を行う。サービス移転判断部404は、この時間間隔が経過すると、前述したようにリソース使用率算出部403にリソース使用率の算出を指示して各インスタンス50のリソース使用率(現時点での使用率及び移転後の使用率)を取得する。
サービス移転判断部404は、取得したリソース使用率に基づいて、まず、複数のインスタンス50(各々が自身に割り当てられたリソースを用いて複数のサービスを実行する複数の仮想マシン)から、1以上のサービスを実行可能な空きリソースを有するインスタンス50を、移転先候補として検出する。サービス移転判断部404は本発明の「検出部」の一例である。
以下では、説明を分かり易くするため、各インスタンス50に割り当てられているリソースが等しく、各サービス60に割り当てられているリソースも等しく全て第1リソースの3分の1であるという前提を置くこととする。つまり、どのインスタンス50でも最大で3つのサービス60が実行されるようになっている。なお、これらの前提はあくまで説明の便宜上のものであり、本発明はこれに限定されない。
サービス移転判断部404は、例えば、取得した現時点での使用率が2つ以下のサービス60を実行するときの使用率(つまり66.6・・%以下)である場合、少なくとも1つのサービス60を実行するだけの空きリソースがあるから、そのインスタンス50を移転先候補として検出する。
また、サービス移転判断部404は、サービス状態記憶部402から各インスタンス50のサービス60の状態を取得して、取得した状態に基づいて移転対象候補となるサービス60(実際に移転させる対象となるサービス60の候補)を検出する。サービス移転判断部404は、本実施例では、「実行中」の状態になっているサービス60のうち、処理を実行していないサービス60(つまり処理を終了した状態になっているサービス60)を移転対象候補として検出する。
また、サービス移転判断部404は、検出した移転対象候補のサービス60を実行しているインスタンス50を移転元候補として検出する。サービス移転判断部404は、こうして検出した移転対象候補、移転元候補及び移転先候補を示す識別情報を、取得したリソース使用率(現時点での使用率及び移転後の使用率)を移転対象選択部405に供給する。移転対象選択部405は、供給された識別情報が示す移転対象候補、移転元候補及び移転先候補から、実際に移転させる対象となるものを選択する。
移転対象選択部405は、検出されたインスタンス50(移転先候補)のリソース使用率が、複数のインスタンス50のうちその移転先候補の空きリソースで実行可能なサービス60(移転対象候補)を実行中のインスタンス50(移転元候補)のリソース使用率から定まる閾値以上である場合、その移転先候補をその移転対象候補の移転先として決定する。移転対象選択部405は本発明の「決定部」の一例である。
本実施例では、サービス移転判断部404は、比較するリソース使用率として移転後の使用率を用い、閾値として移転元候補の移転後の使用率を用いる。つまり、サービス移転判断部404は、移転元候補の移転後の使用率(本実施例における閾値)以上の移転後の使用率が算出された移転先候補を移転先として決定する。移転先の決定方法について図6A、図6Bを参照して説明する。
図6A、図6Bは移転先の決定例を表す。図6の例では、説明を簡単にするため、インスタンス50−1及びインスタンス50−2だけが実現されているものとして説明する。図6A(a)では、インスタンス50−1においてサービス61−1、61−2が実行中の状態で且つ処理を実行している状態(処理中)であり、サービス61−3が実行中の状態だが処理が終了している状態(処理終了)である。また、インスタンス50−2ではサービス62−1、62−2、62−3が実行中且つ処理中の状態である。
サービス移転判断部404は、この例では、処理終了の状態のサービス61−3を移転対象候補として検出し、サービス61−3を実行するインスタンス50−1を移転元候補として検出するが、インスタンス50−2にはサービス61−3を実行可能な空きリソースがないので、インスタンス50−2を移転先候補として検出しない。従って、サービス61−3がインスタンス50−2に移転されることはない。
図6A(b)では、図6A(a)の状態からサービス61−1及びサービス62−1が停止して空きリソースが生じている。この場合、サービス移転判断部404は、インスタンス50−2にサービス61−3を実行可能な空きリソースがあるので移転先候補として検出する。移転対象選択部405は、移転先候補(インスタンス50−2)の移転後の使用率(66.6・・%)が移転元候補(インスタンス50−1)の移転後の使用率(66.6・・%)以上であるため、インスタンス50−2を移転先として決定する。
このように、本実施例では、移転後の使用率が同じインスタンス同士でもどちらかにサービスが寄せられることになる。こうしてサービスの実行主体を特定のインスタンス50に偏らせることで、反対にサービスの実行主体にならないインスタンス50、すなわち停止させてもよいインスタンス50が増え、それらのインスタンス50を停止させることで利用中のインスタンスの数に応じた課金が減少する。
図6A(c)では、図6A(b)の状態からサービス62−2が移転準備中に変化している。この場合、サービス移転判断部404は、インスタンス50−2の現時点での使用率がサービス61−3を実行させるための空きを示しているため、インスタンス50−2を移転先候補として検出する。しかし、移転先候補(インスタンス50−2)の移転後の使用率(33.3・・%)が移転元候補(インスタンス50−1)の移転後の使用率(66.6・・%)未満であるため、移転対象選択部405はインスタンス50−2を移転先として決定しない。
図6A(d)では、図6A(c)の状態からサービス61−1及び61−2が移転準備中に変化している。この場合、移転先候補の現時点の使用率(66.6・・%)は移転元候補の現時点の使用率(100%)未満だが、移転先候補の移転後の使用率(33.3・・%)は移転元候補の移転後の使用率(33.3・・%)以上であるため、移転対象選択部405は、移転先候補であるインスタンス50−2を移転先として決定する。
図6B(e)では、図6A(c)の状態からサービス61−2及び62−3が移転準備中に変化している。この場合、移転先候補の現時点の使用率(66.6・・%)は移転元候補の現時点の使用率(66.6・・%)以上だが、移転先候補の移転後の使用率(0%)は移転元候補の移転後の使用率(33.3・・%)未満であるため、移転対象選択部405は、移転先候補であるインスタンス50−2を移転先として決定しない。
図6B(f)では、図6A(c)の状態からサービス61−2及び62−1が移転準備中に変化している。この場合、移転先候補の移転後の使用率(33.3・・%)が移転元候補の移転後の使用率(33.3・・%)以上になるが、現時点ではインスタンス50−2に空きリソースがないので、サービス移転判断部404は、インスタンス50−2を移転先候補として検出しない。
なお、図6B(f)の場合にも移転が行われるように、サービス移転判断部404は、移転後の使用率が示す空きリソースで移転対象候補のサービス60を実行可能なインスタンス50−2を移転先候補として検出するようにしてもよい。そうすれば、図6B(f)の場合でも、サービス移転判断部404がインスタンス50−2を移転先候補として検出し、移転対象選択部405がインスタンス50−2を移転先として決定することになる。
移転元候補及び移転先候補はそれぞれ複数検出される場合がある。それらの場合の移転先の決定方法について説明する。まず、移転対象選択部405は、移転元候補となるインスタンス50が複数ある場合、移転対象のサービス60が移転した後のリソース使用率が他の移転元候補よりも小さくなる(つまりそのリソース使用率が最小の)インスタンス50を移転元として決定し、そのインスタンス50を移転元とする移転対象のサービス60の移転先を決定する。
図7は複数の移転元候補の例を表す。図7(a)では、インスタンス50−1においてサービス61−2が実行中且つ処理中の状態であり、サービス61−3が実行中且つ処理終了の状態である。また、インスタンス50−2ではサービス62−1、62−2が実行中且つ処理中の状態であり、サービス62−3が実行中且つ処理終了の状態である。この場合、インスタンス50−1及び50−2のどちらも移転元対象として検出される。
移転対象選択部405は、リソース使用率算出部403により算出された移転後の使用率から、移転対象のサービス60によるリソース使用率を減じた値を、移転対象のサービス60が移転した後のリソース使用率として用いる。図7(a)の例では、インスタンス50−1のリソース使用率は33.3・・%で、インスタンス50−2のリソース使用率は66.6・・%となるので、移転対象選択部405は、リソース使用率がより小さい方のインスタンス50−1を移転元として決定する。
図7(b)では、図7(a)からサービス62−1、62−2の状態が実行中から移転準備中に変化している。この場合は、インスタンス50−1のリソース使用率は33.3・・%のままだが、インスタンス50−2のリソース使用率は0%となるので、移転対象選択部405は、リソース使用率がより小さい方のインスタンス50−2を移転元として決定する。このように移転元を決定することで、他のインスタンス50を移転元として決定する場合に比べて、リソースの空きが特定のインスタンス50に偏ることになる。その結果、実行するサービスが0になるインスタンス50が生じやすくなり、インスタンス50を停止させやすくなる。
移転対象選択部405は、空きリソースを有して移転先候補となっているインスタンス50が複数ある場合、その空きリソースに移転対象のサービス60が移転した後のリソース使用率が他の移転先候補よりも大きい(つまりそのリソース使用率が最大の)インスタンス50を移転先として決定する。
図8は複数の移転先候補の例を表す。図8(a)では、インスタンス50−1においてサービス61−3が実行中の状態であり、インスタンス50−2ではサービス62−2、62−3が実行中の状態である。この場合、インスタンス50−1及び50−2のどちらも移転先対象として検出される。
移転対象選択部405は、リソース使用率算出部403により算出された移転後の使用率に、移転対象のサービス60によるリソース使用率を加えた値を、移転対象のサービス60が移転した後のリソース使用率として用いる。図8(a)の例では、インスタンス50−1のリソース使用率は、33.3・・%(移転後の使用率)+33.3・・%(サービス60によるリソース使用率)=66.6・・%となり、インスタンス50−2のリソース使用率は、66.6・・%(移転後の使用率)+33.3・・%(サービス60によるリソース使用率)=100%となるので、移転対象選択部405は、リソース使用率がより大きい方のインスタンス50−2を移転先として決定する。
図8(b)では、図8(a)からサービス62−2、62−3の状態が実行中から移転準備中に変化している。この場合は、インスタンス50−1のリソース使用率は図8(a)の例と同じで66.6・・%となるが、インスタンス50−2のリソース使用率は、0%(移転後の使用率)+33.3・・%(サービス60によるリソース使用率)=33.3・・%となるので、移転対象選択部405は、リソース使用率がより大きい方のインスタンス50−1を移転先として決定する。
このように移転先を決定することで、他のインスタンス50を移転先として決定する場合に比べて、移転後に移転先のインスタンス50に集まるサービス60が多くなり、特定のインスタンス50にサービス60が集中することになる。すると、それ以外のインスタンス50にはサービス60が集まらなくなり、そうしてサービス60が少なくなったインスタンス50からはサービス60が移転で出て行きやすくなるので、その結果、インスタンス50を停止させやすくなる。
移転対象選択部405は、サービス60の移転先を決定した場合、移転先のインスタンスのコンテナ制御要求受付部51に移転するサービス60の配置を要求する。この要求により上記のとおり移転先のインスタンス50に移転対象のサービス60と同じサービス60の実行環境が作成される(例えば移転対象がOCRサービスなら移転先でもOCRサービスの実行環境が作成される)。また、移転対象選択部405は、決定した移転先のインスタンス50、移転元のインスタンス50及び移転対象のサービス60の識別情報をサービス停止判断部406に供給する。
サービス停止判断部406は、受け取った識別情報が示す移転先のインスタンス50のコンテナ制御要求受付部51に移転対象のサービス60の状態を問い合わせる。サービス停止判断部406は、移転対象のサービス60の状態が作成中から実行中になった場合、受け取った識別情報が示す移転元のインスタンス50のコンテナ制御要求受付部51にその移転対象のサービス60の停止を依頼する。移転元のコンテナ制御部53がこの依頼に基づきサービス60を停止すると、移転が完了する。
サービス停止判断部406は、移転が完了すると、サービス60の移転に関する情報(サービス移転情報)として、例えば供給された移転先のインスタンス50、移転元のインスタンス50及び移転対象のサービス60の識別情報と、移転が完了した時刻を示す時刻情報とをサービス移転情報記憶部407に供給する。サービス移転情報記憶部407は、サービス停止判断部406から供給されたサービス移転情報を記憶する。サービス移転情報記憶部407は、記憶したサービス移転情報をサービス管理情報記憶部36に供給する。
サービス管理情報記憶部36は、供給されたサービス移転情報を蓄積して、複数のインスタンス50におけるサービス60の移転履歴として記憶する。また、サービス管理情報記憶部36は、サービス状態記憶部402から、複数のインスタンス50におけるサービス60の実行状態(作成中、実行中、移転準備中)を示す実行状態情報を取得して記憶する。
また、サービス管理情報記憶部36は、リソース使用率算出部403から、複数のインスタンス50におけるリソース使用率(現時点での使用率及び移転後の使用率)を示す使用率情報を取得して記憶する。サービス管理情報記憶部36は本発明の「記憶部」の一例である。なお、サービス管理情報記憶部36への移転履歴、実行状態情報及び使用率情報の供給は、サービス管理情報記憶部36から要求するプル型で行われてもよいし、供給元が能動的に供給してくるプッシュ型で行われてもよい。
リソース管理装置20のサービス管理情報表示部201は、サービス管理情報記憶部36に記憶されたサービス管理情報を表示する。例えば、リソース提供システム1の管理者がサービス60の移転履歴を表示させる操作を行うと、サービス管理情報表示部201は、サービス管理情報記憶部36からサービス60の移転履歴を取得して表示する。この場合のサービス管理情報記憶部36は、記憶している複数のインスタンス50におけるサービス60の移転履歴を表示手段であるサービス管理情報表示部201に出力する機能であり、本発明の「履歴出力部」の一例である。このように複数のインスタンスにおけるサービスの移転履歴が出力されることで、各インスタンスにおける過去の移転の経緯が把握される。
また、管理者が全て又は一部のインスタンス50における実行状態情報(サービス60の実行状態を示す情報)を表示させる操作を行うと、サービス管理情報表示部201は、サービス管理情報記憶部36から指定されたインスタンス50の実行状態情報を取得して表示する。この場合のサービス管理情報記憶部36は、記憶している複数のインスタンス50における実行状態情報を表示手段であるサービス管理情報表示部201に出力する機能であり、本発明の「状態出力部」の一例である。
実行状態情報が出力されることで、サービスの実行状態から移転状況が把握されることになる。例えばサービスの状態が実行中から変化しないインスタンスは移転で出入りするサービスが少なく、移転準備中の状態が多いインスタンスは移転で出入りするサービスが多いことが把握される。
また、管理者が全て又は一部のインスタンス50におけるリソース使用率(現時点での使用率及び移転後の使用率)を表示させる操作を行うと、サービス管理情報表示部201は、サービス管理情報記憶部36から指定されたインスタンス50の使用率情報を取得して、その使用率情報が示すリソース使用率を表示する。これにより、リソース使用率から移転状況が把握されることになる。例えばリソース使用率が高い数値で維持されているインスタンスは移転で出入りするサービスが少なく、リソース使用率が低い数値で変化しているインスタンスは移転で出入りするサービスが多いことが把握される。
第1オートスケール制御部32は、定められたルールに則り、インスタンスのスケールイン及びスケールアウトを制御する。スケールインとは仮想マシンの台数を減らすことをいい、スケールアウトとは仮想マシンの台数を増やすことをいう。本実施例では、例えばインスタンス50−1のサービス停止判断部406が、コンテナ実行部52−1が実行していたサービス60を全て停止すると、その旨を第1オートスケール制御部32に通知する。
第1オートスケール制御部32は、コンテナ実行部52−1により実行されるサービス60の数が0になった(実行していたサービス60が全て停止された)インスタンス50をスケールインの対象と判定して停止させる制御を行う。こうしてインスタンス50が停止すると、本実施例における課金(利用中のインスタンスの数に応じた課金)の対象ではなくなる。
なお、第1オートスケール制御部32は、これ以外にも、例えばリクエスト・レスポンスキュー34に格納されたキューの状況に基づいてスケールイン及びスケールアウトの判定を行ってもよい。第2オートスケール制御部33は、定められたルールに則り、サービス60のスケールイン及びスケールアウトを制御する。第2オートスケール制御部33は、コンテナ制御要求受付部51に対して、スケールインを行う際はサービス60の停止を依頼し、スケールアウトを行う際はサービス60の配置を依頼する。
リソース提供システム1が備える各装置は、上記の構成に基づいて、インスタンス間でサービスを移転させる移転処理を行う。
図9は移転処理における各装置の動作手順の一例を表す。図9では、インスタンス50−1及び50−2だけを表しているが、他にもインスタンス50が存在するものとする。まず、インスタンス50が、サービス状態の変更又はサービスの停止を行うと(ステップS11、S12)、その旨を移転制御部40に通知し(ステップS13、S14)、第1オートスケール制御部32にも通知する(ステップS15、S16)。
移転制御部40(リソース使用率算出部403)は、通知されてきた情報に基づいて各インスタンス50のリソース使用率(現時点での使用率及び移転後の使用率)を算出する(ステップS21)。次に、移転制御部40(サービス移転判断部404)は、算出されたリソース使用率に基づいて移転先候補のインスタンス50を検出する(ステップS22)。続いて、移転制御部40(サービス移転判断部404)は、算出されたリソース使用率に基づいて移転対象候補のサービス60とそのサービス60を実行する移転元候補のインスタンス50を検出する(ステップS23)。
そして、移転制御部40(移転対象選択部405)は、検出された移転先候補、移転対象及び移転元候補から、実際に移転させる移転対象のサービス60と、移転元のインスタンス50と、移転先のインスタンス50とを決定する(ステップS24)。図9の例ではインスタンス50−1が移転先として、インスタンス50−2が移転元として決定されたものとする。移転制御部40(移転対象選択部405)は、移転元として決定されたインスタンス50−1に、移転するサービス60の配置を要求する(ステップS31)。
インスタンス50−1は、要求されたサービス60の実行環境を作成する(ステップS32)。移転制御部40(サービス停止判断部406)は、インスタンス50−1に対して移転対象のサービス60の状態を問い合わせる(ステップS33)。インスタンス50−1は、問い合わせされたサービスの状態を移転制御部40に通知する(ステップS34)。移転制御部40(サービス停止判断部406)は、実行環境が完成したか否かを判断し(ステップS35)、完成していない(NO)と判断した場合はステップS33(問い合わせ)に戻って動作を行う。
移転制御部40(サービス停止判断部406)は、ステップS35で実行環境が完成した(YES)と判断した場合は、移転対象のサービス60を停止するよう、移転元のインスタンス50−2に対して依頼する(ステップS36)。インスタンス50−2は、依頼されたサービスを停止して(ステップS37)、その旨をステップS16と同様に第1オートスケール制御部32に通知する(ステップS41)。
第1オートスケール制御部32は、ステップS16、S41での通知内容に基づいてインスタンス50−2で実行されるサービスが0になったか否かを判断し(ステップS42)、なっていない(NO)と判断した場合はこの動作手順を終了する。第1オートスケール制御部32は、ステップS42でサービスが0になった(YES)と判断した場合は、インスタンス50−2に対してスケールイン、すなわち停止を指示する(ステップS43)。インスタンス50−2は、この指示を受け取ると、自インスタンスを停止して(ステップS44)、この動作手順を終了する。
本実施例では、上記のとおりサービスの実行主体であるインスタンスがリソース使用率の状況によって変化する(図9の例であれば移転対象のサービス60の実行主体がインスタンス50−2からインスタンス50−1に変化している)。これにより、例えばサービスが1つだけになったインスタンスがそのサービスを実行し続けるとインスタンスの数が減らないが、そのサービスを別のインスタンスに移転させることで、サービスの実行主体(インスタンス)を固定する場合に比べて、サービスの実行主体が特定のインスタンスに偏り、その結果サービスを実行するインスタンスが少なくなり、上述したインスタンス数単位での課金が少なくなる。
[2]変形例
上述した実施例は本発明の実施の一例に過ぎず、以下のように変形させてもよい。また、実施例及び各変形例は、必要に応じて組み合わせて実施してもよい。
[2−1]リソース使用率の閾値
移転対象選択部405は、移転元候補のインスタンス50のリソース使用率から定まる閾値として実施例とは異なる値を用いてもよい。移転対象選択部405は、例えば、サービス移転情報記憶部407に記憶されている複数のインスタンスにおけるサービスの移転履歴に基づいて閾値を変化させる。この場合のサービス移転情報記憶部407は本発明の「記憶部」の一例である。
移転対象選択部405は、例えば、記憶された移転先候補のインスタンス50の移転履歴が示す移転の頻度が少ないほど、そのインスタンス50を移転先として決定するか否かを判断する際に用いる閾値を小さくする。この閾値を小さくするということは、移転先候補のインスタンスのリソース使用率が閾値以上である場合にそのインスタンスが移転先として決定されるのだから、サービスがその移転先候補に移転されやすくなることを意味する。移転対象選択部405は、例えば、移転の頻度と閾値とを対応付けた閾値テーブルを用いて閾値を決定する。
図10は閾値テーブルの一例を表す。図10の例では、「F1未満」、「F1以上F2未満」及び「F2以上」という移転の頻度の範囲に、「R1×0.5」、「R1×1.0」及び「R1×2.0」という閾値が対応付けられている。R1は、移転先候補のインスタンスのリソース使用率を表している。この閾値テーブルを用いた場合の移転先の決定結果について図11を参照して説明する。
図11は移転先の決定結果の例を表す。図11では、移転先候補を移転先として決定した場合を「○」、決定しなかった場合を「×」で示している。図11(a)では、インスタンス50−1においてサービス61−1、61−2、61−3が実行中であり、インスタンス50−2においてサービス62−2、62−3が実行中であり、このうちのサービス61−3が移転対象である。つまり、インスタンス50−1の移転後の使用率R1が100%でインスタンス50−2の移転後の使用率R2が66.6・・%である。
この場合に、移転対象選択部405は、インスタンス50−2の移転の頻度がF1未満の場合、100%(R1)×0.5=50%<66.6・・%(R2)なのでインスタンス50−2を移転先として決定する。また、移転対象選択部405は、インスタンス50−2の移転の頻度がF1以上F2未満の場合は100%(R1)×1.0=100%>66.6・・%(R2)となり、インスタンス50−2の移転の頻度がF2以上の場合は100%(R1)×2.0=200%>66.6・・%(R2)となるので、どちらの場合もインスタンス50−2を移転先として決定しない。
図11(b)では、図11(a)の状態からインスタンス50−1のサービス61−1が停止して空きになり、インスタンス50−1の移転後の使用率R1が66.6・・%に変わっている。この場合に、移転対象選択部405は、インスタンス50−2の移転の頻度がF1未満の場合は66.6・・%(R1)×0.5=33.3・・%<66.6・・%(R2)となり、インスタンス50−2の移転の頻度がF1以上F2未満の場合は66.6・・%(R1)×1.0=66.6・・%=66.6・・%(R2)となるのでどちらもインスタンス50−2を移転先として決定する。また、移転対象選択部405は、インスタンス50−2の移転の頻度がF2以上の場合は、66.6・・%(R1)×2.0=133.3・・%>66.6・・%(R2)なのでインスタンス50−2を移転先として決定しない。
図11(c)では、図11(b)の状態からインスタンス50−1のサービス61−2が停止して空きになり、インスタンス50−1の移転後の使用率R1が33.3・・%に変わっている。この場合に、移転対象選択部405は、インスタンス50−2の移転の頻度がF1未満の場合は33.3・・%(R1)×0.5=16.6・・%<66.6・・%(R2)となり、インスタンス50−2の移転の頻度がF1以上F2未満の場合は33.3・・%(R1)×1.0=33.3・・%<66.6・・%(R2)となり、インスタンス50−2の移転の頻度がF2以上の場合は33.3・・%(R1)×2.0=66.6・・%=66.6・・%(R2)となるので、いずれの場合もインスタンス50−2を移転先として決定する。
図11の例に表すように、本変形例では、移転先候補であるインスタンス50−2の移転履歴が示す移転の頻度が少ないほど、インスタンス50−2が移転先として決定されやすくなっている。なお、図11(c)の例のようにR2がR1よりも十分に大きいと移転の頻度に関わらず常に移転先として決定される場合があるし、反対にR2がR1に比べて小さすぎると、移転の頻度がいくら小さくても移転先として決定されない場合もある。
また、移転対象選択部405は、他のサービスの移転履歴を用いてもよい。例えば、移転対象選択部405は、記憶された移転先候補のインスタンス50の移転履歴が示す移転の回数が少ないほど、そのインスタンス50を移転先として決定するか否かを判断する際に用いる閾値を小さくする。この場合、移転対象選択部405は、移転の回数と閾値とを対応付けた閾値テーブルを用いて閾値を決定する。
図12は閾値テーブルの別の一例を表す。図12の例では、「C1未満」、「C1以上C2未満」及び「C2以上」という移転の回数の範囲に、「R1×0.5」、「R1×1.0」及び「R1×2.0」という閾値が対応付けられている。この閾値テーブルを用いることで、図10に表した移転の頻度の例と同様に、移転の回数が少ないほど小さな閾値が用いられるようになる。
サービスの中には、第2オートスケール制御部33によるスケールアウト及びスケールインが頻繁に行われるサービス(一時的に利用が集中するサービス)と、それがあまり行われないサービス(利用数の変動が少ないサービス)とがある。前者のサービスを実行しているインスタンスは、後者のサービスを実行しているインスタンスよりも移転後の使用率が小さくなって移転が生じやすく、移転の頻度及び回数が多くなりやすい。そのため、移転の頻度及び回数が少ないインスタンスにサービスを移転すると、移転の頻度及び回数が多いインスタンスを移転先にする場合に比べて移転したサービスがそのインスタンスに定着しやすくなる。
他にも、移転対象選択部405は、記憶された移転先候補のインスタンス50の移転履歴が示す最新の移転時期が古いほど、そのインスタンス50を移転先として決定するか否かを判断する際に用いる閾値を小さくしてもよい。ここでいう最新の移転時期とは、そのインスタンスにおいて現時点から遡って最後にサービスが移転した時期のことを意味する。この場合、移転対象選択部405は、最新の移転時期と閾値とを対応付けた閾値テーブルを用いて閾値を決定する。
図13は閾値テーブルの別の一例を表す。図13の例では、「T1より前」、「T1以降T2より前」及び「T2以降」という最新の移転時期の範囲に、「R1×0.5」、「R1×1.0」及び「R1×2.0」という閾値が対応付けられている。この閾値テーブルを用いることで、図10に表した移転の頻度の例と同様に、最新の移転時期が古いほど小さな閾値が用いられるようになる。
スケールアウト及びスケールインが頻繁に行われるサービスを実行しているインスタンスは、それがあまり行われないサービスを実行しているインスタンスよりも移転後の使用率が小さくなって移転が生じやすく、最新の移転時期が新しくなりやすい。そのため、最新の移転時期が古いインスタンスにサービスを移転すると、最新の移転時期が新しいインスタンスを移転先にする場合に比べて移転したサービスがそのインスタンスに定着しやすくなる。
以上のとおり、本変形例では、サービスの移転履歴に基づいて閾値を変化させることで、閾値が固定である場合に比べて、移転したサービスがそのインスタンスに定着しやすくなる。その結果、上述したサービスの実行主体の偏りが維持されやすくなり、反対にサービスの実行主体にならないインスタンスが増えやすくなって、それらのインスタンスがスケールインにより停止させられることで利用中のインスタンスの数に応じた課金が減少する。
[2−2]移転先の見直し
移転先が決定して移転準備中の状態なったサービスであっても、移転先のインスタンスで実行環境が完成するまでは停止しないので、それまでの間に移転先のインスタンスのリソース使用率が変化する場合がある。その場合に、移転対象選択部が一度決定した移転先を見直してもよい。
本変形例では、移転対象選択部405が、移転対象のサービスが実行していた処理が終了したときに移転先のインスタンスのリソース使用率が閾値未満になっていた場合、他のインスタンスをそのサービスの移転先として決定する。この場合の移転制御部40の動作手順について図14を参照して説明する。
図14は本変形例の移転処理における各装置の動作手順の一例を表す。この動作手順では、図9に表すステップS11(サービス状態の変更・サービスの停止)からステップS35(実行環境の完成の判断)までが行われる。次に、移転制御部40(移転対象選択部405)が、移転先のインスタンス(この例ではインスタンス50−1)に対してサービス状態を問い合わせる(ステップS51)。
インスタンス50−1は、この問い合わせを受け取ると自インスタンスのサービスの状況を移転制御部40に通知する(ステップS52)。移転制御部40(リソース使用率算出部403)は、通知されたサービスの状態を反映してリソース使用率を算出する(ステップS53)。次に、移転制御部40(移転対象選択部405)は、インスタンス50−1、すなわち移転先のリソース使用率が閾値未満か否かを判断する(ステップS54)。
移転制御部40(サービス停止判断部406)は、ステップS54で移転先のリソース使用率が閾値未満ではない(NO)と判断された場合は、ステップS36(サービス停止の依頼)の動作を行う。図14では図7のステップS41以降の動作を省略している。ステップS54で移転先のリソース使用率が閾値未満である(YES)と判断された場合、移転制御部40(リソース使用率算出部403)は、ステップS21(リソース使用率の算出)に戻って動作を行う。ステップS21からの動作が再び行われることで、移転先の見直しが行われる。
移転先が決定されてから実際に移転が完了するまではタイムラグがあるので、例えば移転が完了する前にサービスのスケールインが行われて実行されるサービスが少なくなり、移転先として適当でなくなることがある。本変形例では、上記のとおり移転先を見直すことで、移転先を見直さない場合に比べて、そのように移転先として適当でなくなったインスタンスへのサービスの移転が抑制される。
[2−3]割り当てられるリソース
実施例では、説明を分かり易くするため、各インスタンスに割り当てられているリソース(第1リソース)が等しく、各サービスに割り当てられているリソースも全て第1リソースの3分の1であるものとしたが、これに限らない。例えばインスタンス毎に第1リソースが異なっていてもよいし、サービス毎にも割り当てられるリソースが異なっていてもよい。また、各インスタンスで実行されるサービスの数も異なっていてもよい。
[2−4]複数のサービスの移転
リソースに空きのあるインスタンスには、複数のインスタンスから移転要求が送られてくることがある。実施例のように各サービスのリソースが等しければどちらの移転要求を受け付けても自インスタンスのリソース使用率が変わらないが、上記変形例のように各サービスのリソースが異なっていると、どの移転要求を受け付けるかによって、自インスタンスのリソース使用率が変化する。
そこで、本変形例では、移転制御部40の移転対象選択部405が、複数の移転元候補のインスタンスからのサービスを移転先候補のインスタンスに移転させた場合に、移転先候補のリソース使用率がより大きくなるサービスを移転対象として決定する。
図15は移転対象サービスの決定例を表す。図15(a)では、空きが50%のインスタンス50−1が移転先候補として検出され、40%のリソースを使用するサービスAと、30%のリソースを使用するサービスBとが移転対象候補のサービスとして検出されている。
この場合、移転対象選択部405は、移転先候補(インスタンス50−1)の移転後のリソース使用率が80%になるサービスBよりも、そのリソース使用率が90%になるサービスAを移転対象サービスとして決定する。図15(b)では、空きが50%のインスタンス50−1が移転先候補として検出され、サービスA、Bの他に、20%のリソースを使用するサービスCが移転対象候補のサービスとして検出されている。
この場合、移転対象選択部405は、移転先候補の移転後のリソース使用率が100%になるサービスB、Cを移転対象サービスとして決定する。このように移転要求を受け付けることで、移転先候補の移転後のリソース使用率に関係なく移転対象サービスを決定する場合に比べて、移転先候補のリソース使用率が高まることになる。
なお、移転対象選択部405は、他の方法で移転対象サービスを決定してもよい。移転対象選択部405は、移転可能なサービス(移転対象候補のサービス)が複数ある場合、実行中の処理が他のサービスに比べて早く終わるサービスの移転先を決定する、すなわちそのサービスを移転対象サービスとして決定する。この場合、インスタンス50のコンテナ実行部52が、サービス60の状態として、そのサービス60が実行している処理の終了見込み時刻をサービス状態管理部401に通知することで、サービス状態記憶部402がその終了見込み時刻を記憶する。
移転対象選択部405は、複数の移転対象候補のサービスの各終了見込み時刻を読み出し、その時刻が最も早いサービスを移転対象サービスとして決定する。これにより、処理の終了時期に関係なくサービスを移転させる場合に比べて、サービスの移転時期が早まるので、サービスの実行主体の特定のインスタンス50への偏りもより早く進み、停止させてもよいインスタンスもより早く生じることになる。
[2−5]サービスの冗長化
移転対象候補のサービスの中には、他のインスタンスを用いて冗長化(ホットスタンバイ型の冗長化、コールドスタンバイ型の冗長化又はレプリケーションによる冗長化等)がなされている場合がある。その場合に、移転対象選択部405は、そのように冗長化されたサービスについては移転先を決定しなくてもよい。本変形例では、インスタンス50のコンテナ実行部52が、サービス60の状態として、そのサービス60の冗長化の有無をサービス状態管理部401に通知することで、サービス状態記憶部402がその冗長化の有無を記憶する。
移転対象選択部405は、複数の移転対象候補のサービスの冗長化の有無を読み出し、冗長化がなされているサービスについては、移転対象候補から外して移転先を決定せず、冗長化がなされていないサービスについて移転先を決定する。これにより、冗長化されたサービスであっても移転先を決定して移転させる場合に比べて、その冗長化されたサービスの復旧ミスが減ることになる。
[2−6]比較するリソース使用率
移転対象選択部405は、実施例では、移転元候補及び移転先候補について比較するリソース使用率として移転後の使用率を用いたが、現時点での使用率を用いてもよい。例えば図6A(c)の例は、移転後の使用率だとインスタンス50−1よりもインスタンス50−2の方が小さいので移転が行われなかったが、現時点での使用率であれば両インスタンスとも同じ値になるので、移転が行われる。この場合でも、サービスの実行主体(インスタンス)を固定する場合に比べれば、サービスを実行するインスタンスが少なくなり、インスタンス数単位での課金が少なくなる。
[2−7]有効な決定方法の選択
移転対象選択部405は、複数の移転先候補から実際に移転を行う移転先を決定する方法として、実施例及び変形例で述べた複数の決定方法のいずれかを用いてもよい。複数の決定方法とは、例えば、図7で述べた移転対象のサービスが移転した後のリソース使用率が他の移転元候補よりも小さくなるインスタンスを移転元として決定する第1の方法、そのリソース使用率を求めるのに移転後の使用率を用いる代わりに現時点での使用率を用いる第2の方法、第1の方法で移転先を決定した後に図14で述べた移転先の見直しを行う第3の方法、又は、第1の方法で移転先を決定した後に移転先を見直す第4の方法である。
その場合に、移転対象選択部405は、それらの複数の決定方法のうち、決定した移転先にサービスを移転させたことで移転元のインスタンスが実行するサービスの数が0となった頻度又は回数が多い方法ほど優先して用いてもよい。本変形例では、インスタンス50のコンテナ実行部52が、自インスタンスのサービスの状態として、移転対象のサービスを停止させたときに実行しているサービスの数をサービス状態管理部401に通知することで、サービス状態記憶部402がそのサービス移転時の残りのサービスの数を記憶する。
移転対象選択部405は、例えば、一定期間は上記の複数の決定方法を均等に用いて移転先を決定し、その際に用いた決定方法をサービス状態管理部401に通知することで、サービス状態記憶部402が通知された決定方法を前述した残りのサービスの数に対応付けて記憶する。移転対象選択部405は、その期間が過ぎると、移転先を決定する際にサービス状態記憶部402を参照し、残りのサービスの数が0になった頻度を決定方法毎に算出する。
移転対象選択部405は、算出した頻度が多い決定方法ほど優先して用いて、移転先を決定する。具体的には、例えば第1、第2、第3、第4の方法における上記頻度の比率が3:1:4:2であれば、10分の3の確率で第1の方法を用いるという具合である。頻度ではなく回数を用いる場合も同様に行えばよい。これにより、移転先の決定方法を固定する場合に比べて、より移転元のインスタンスに残るサービスが0になりやすくなるので、サービスを実行する仮想マシンが少なくなりやすくなる。
なお、複数の決定方法として、移転対象のサービスを決定する複数の決定方法が用いられてもよい。その場合に、移転対象選択部405は、それらの複数の決定方法のうち、決定した移転対象のサービスを移転させたことで移転元のインスタンスが実行するサービスの数が0となった頻度又は回数が多い方法ほど優先して用いてもよい。また、複数の決定方法として、移転元のインスタンスを決定する複数の決定方法が用いられてもよい。その場合に、移転対象選択部405は、それらの複数の決定方法のうち、決定した移転元のインスタンスのサービスを移転させたことでその移転元のインスタンスが実行するサービスの数が0となった頻度又は回転が多い方法ほど優先して用いてもよい。
移転対象選択部405は、それらの複数の決定方法のうち、決定した移転元のインスタンスのサービスを移転させたことで移転元のインスタンスが実行するサービスの数が0となった頻度又は回数が多い方法ほど優先して用いてもよい。いずれの場合も、移転先の決定方法を固定する場合に比べて、より移転元のインスタンスに残るサービスが0になりやすくなるので、サービスを実行する仮想マシンが少なくなりやすくなる。
[2−8]移転判断のタイミング
サービス移転判断部404は、実施例では、決められた時間間隔でサービス60の移転に関する判断を行ったが、これに限らず、例えば、サービス60が処理の実行を終了したときにそのサービス60について移転に関する判断を行ってもよいし、CPU使用率又はメモリ使用率が閾値を下回ったインスタンス50があったときにそのインスタンス50で実行されているサービス60について移転に関する判断を行ってもよい。
[2−9]仮想化の方式
実施例では、コンテナ型の仮想化技術により仮想マシンが実現されたが、これに限らず、例えばVMWare(登録商標)等のハイパーバイザー型の仮想化技術により仮想マシンが実現されてもよい。要するに、物理的に区分された装置(物理マシン)ではなく、論理的に区分されて1台の装置のように振る舞う仮想マシンが実現されるのであれば、どのような技術が用いられてもよい。
[2−10]各機能の実現方法
図4、図5に表す各機能は、2以上の機能が統合されてもよいし、1つの機能が2以上の機能に分割されてもよい。例えば、リソース使用率算出部403が、現時点での使用率を算出する算出部と、移転後の使用率を算出する算出部とに分割されてもよい。また、サービス移転判断部404、移転対象選択部405及びサービス停止判断部406が統合されてサービスの移転に関する判断をまとめて行う判断部としてもよい。
また、実施例では、インスタンス以外の機能である第1オートスケール制御部32等も仮想マシンで実現されていたが、これらについては物理マシンで実現されてもよい。要するに、リソース提供システム1の全体で図4、図5に表す各機能と同等の機能が実現されていれば、機能のまとめ方はどのようになっていてもよい。
[2−11]発明のカテゴリ
本発明は、サーバ装置10及びリソース管理装置20という各情報処理装置の他、それらの情報処理装置を備えるリソース提供システムという情報処理システムとしても捉えられる。また、本発明は、各装置が実施する処理を実現するための情報処理方法としても捉えられるし、各装置を制御するコンピュータを機能させるためのプログラムとしても捉えられる。このプログラムは、それを記憶させた光ディスク等の記録媒体の形態で提供されてもよいし、インターネット等の通信回線を介してコンピュータにダウンロードさせ、それをインストールして利用可能にするなどの形態で提供されてもよい。