(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-10
(45)【発行日】2023-10-18
(54)【発明の名称】引継元特定方法、および引継元特定プログラム
(51)【国際特許分類】
H04L 45/42 20220101AFI20231011BHJP
【FI】
H04L45/42
(21)【出願番号】P 2020012760
(22)【出願日】2020-01-29
【審査請求日】2022-10-06
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】山崎 公敬
【審査官】宮島 郁美
(56)【参考文献】
【文献】特開2016-162067(JP,A)
【文献】米国特許出願公開第2017/0075716(US,A1)
【文献】特開2014-191472(JP,A)
【文献】米国特許出願公開第2017/0315838(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L12/00,13/00,41/00-49/9057,61/00-65/80,69/00-69/40
(57)【特許請求の範囲】
【請求項1】
複数のリソースクラスタのうちの第1のリソースクラスタ内で、新たに第1の仮想マシンが起動されたことを検出し、
前記第1の仮想マシンが起動されたことを検出した場合、前記複数のリソースクラスタのうち、前記第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、第2のリソースクラスタを選択し、
前記第1の仮想マシンに関する稼働データと、選択した前記第2のリソースクラスタ内で起動中の第2の仮想マシンに関する稼働データとの類似度に基づいて、前記第1の仮想マシン上で実行中の処理の引継元が、前記第2の仮想マシンであるか否かを判定する、
処理をコンピュータが実行することを特徴とする引継元特定方法。
【請求項2】
前記判定する処理は、
前記第1の仮想マシンに関する稼働データと、選択した前記第2のリソースクラスタ内で起動中のそれぞれの仮想マシンに関する稼働データとの類似度に基づいて、前記第1の仮想マシン上で実行中の処理の引継元が、前記それぞれの仮想マシンであるか否かを判定する、ことを特徴とする請求項1に記載の引継元特定方法。
【請求項3】
選択した前記第2のリソースクラスタを管理する装置から、前記第2のリソースクラスタ内で起動中のそれぞれの仮想マシンに関する稼働データを纏めて取得する、処理を前記コンピュータが実行する、ことを特徴とする請求項2に記載の引継元特定方法。
【請求項4】
前記選択する処理は、
前記第1の仮想マシン上で実行中の処理の引継元が、選択した前記第2のリソースクラスタ内で起動中のいずれの仮想マシンでもないと判定された場合、前記複数のリソースクラスタのうち、前記第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、前記複数のリソースクラスタのうち、まだ選択されていないリソースクラスタの中から、前記第2のリソースクラスタを選択し直す、ことを特徴とする請求項1~3のいずれか一つに記載の引継元特定方法。
【請求項5】
前記選択する処理は、
前記第2のリソースクラスタを選択した回数に基づいて、前記第2のリソースクラスタを選択し直すか否かを決定する、ことを特徴とする請求項4に記載の引継元特定方法。
【請求項6】
前記選択する処理は、
前記第2のリソースクラスタを選択し直す際、前記複数のリソースクラスタのうち、まだ選択されていないリソースクラスタの中から、前記第1のリソースクラスタとの通信遅延が最も小さいリソースクラスタを、前記第2のリソースクラスタに選択する、ことを特徴とする請求項4または5に記載の引継元特定方法。
【請求項7】
前記判定する処理は、
前記第1の仮想マシンに関する稼働データと、前記第2の仮想マシンに関する稼働データとの類似度が閾値以上であると判定した場合、前記第2の仮想マシンが属するシステムの負荷を変動させた際の、前記第1の仮想マシンに関する新たな稼働データと、前記第2の仮想マシンに関する新たな稼働データとを取得し、
前記第1の仮想マシンに関する新たな稼働データと、前記第2の仮想マシンに関する新たな稼働データとの類似度が閾値以上であると判定した場合、前記第1の仮想マシン上で実行中の処理の引継元が、前記第2の仮想マシンであると判定する、ことを特徴とする請求項1~6のいずれか一つに記載の引継元特定方法。
【請求項8】
前記第1の仮想マシン上で実行中の処理の引継元が、前記第2の仮想マシンであると判定した場合、前記第1の仮想マシンと、前記第2の仮想マシンとを対応付けて表す対応情報を記憶する、ことを特徴とする請求項1~7のいずれか一つに記載の引継元特定方法。
【請求項9】
異なる2つの仮想マシンを対応付けて表す対応情報を記憶している場合、前記2つの仮想マシンのそれぞれの仮想マシンに関する稼働データの類似度に基づいて、前記2つの仮想マシンを対応付けて表す対応情報を削除するか否かを決定する、ことを特徴とする請求項1~8のいずれか一つに記載の引継元特定方法。
【請求項10】
前記選択する処理は、
前記複数のリソースクラスタのうち、前記第1のリソースクラスタを管理する装置と、他のリソースクラスタを管理する装置とのレイテンシに基づいて、前記第2のリソースクラスタを選択する、ことを特徴とする請求項1~9のいずれか一つに記載の引継元特定方法。
【請求項11】
複数のリソースクラスタのうちの第1のリソースクラスタ内で、新たに第1の仮想マシンが起動されたことを検出し、
前記第1の仮想マシンが起動されたことを検出した場合、前記複数のリソースクラスタのうち、前記第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、第2のリソースクラスタを選択し、
前記第1の仮想マシンに関する稼働データと、選択した前記第2のリソースクラスタ内で起動中の第2の仮想マシンに関する稼働データとの類似度に基づいて、前記第1の仮想マシン上で実行中の処理の引継元が、前記第2の仮想マシンであるか否かを判定する、
処理をコンピュータに実行させることを特徴とする引継元特定プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、引継元特定方法、および引継元特定プログラムに関する。
【背景技術】
【0002】
従来、複数のリソースクラスタを有するシステムがある。リソースクラスタは、複数のリソース装置の集まりである。上記システムにおいて、異なるリソースクラスタに含まれるリソース装置を利用して、一つのサービスが実現されることがある。例えば、それぞれ異なるベンダが提供する複数のパブリッククラウド環境内に存在するリソース装置を利用して、一つのサービスが実現されることがある。
【0003】
先行技術としては、例えば、少なくとも1以上の第2の仮想マシンと1以上の第1の仮想マシンとを同一の時間帯に実行させた場合のスループットの測定結果に基づいて、同一の物理経路を共有する複数の仮想マシンを特定するものがある。ここで、第1の仮想マシンは、物理ストレージ装置に対して定常のアクセス負荷をかけるソフトウェアを実行する。第2の仮想マシンは、物理ストレージ装置に対して変動するアクセス負荷をかけるソフトウェアを実行する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ここで、上記システムにおいて、リソースクラスタに含まれるいずれかのリソース装置の負荷が閾値以上に増大した場合、負荷が閾値以上に増大しているリソース装置を利用して実行されていた処理を、他のリソース装置に移行することがある。しかしながら、従来技術では、上記システムを解析する外部装置で、いずれかのリソース装置で実行していた処理が、いずれの他のリソース装置に移行されたのかを把握することが難しい。例えば、外部装置が、すべてのリソース装置の負荷に関する情報を収集し、いずれかのリソース装置で実行していた処理が、いずれの他のリソース装置に移行されたのかを把握しようとすれば、通信量、処理量、および、処理時間の増大化を招くことになる。
【0006】
1つの側面では、本発明は、処理の引継元を特定する際にかかる所要時間を短縮することを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、複数のリソースクラスタのうちの第1のリソースクラスタ内で、新たに第1の仮想マシンが起動されたことを検出し、前記第1の仮想マシンが起動されたことを検出した場合、前記複数のリソースクラスタのうち、前記第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、第2のリソースクラスタを選択し、前記第1の仮想マシンに関する稼働データと、選択した前記第2のリソースクラスタ内で起動中の第2の仮想マシンに関する稼働データとの類似度に基づいて、前記第1の仮想マシン上で実行中の処理の引継元が、前記第2の仮想マシンであるか否かを判定する引継元特定方法、および引継元特定プログラムが提案される。
【発明の効果】
【0008】
一態様によれば、処理の引継元を特定する際にかかる所要時間を短縮することが可能になる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態にかかる引継元特定方法の一実施例を示す説明図である。
【
図2】
図2は、情報処理システム200の一例を示す説明図である。
【
図3】
図3は、情報処理システム200の運用例を示す説明図である。
【
図4】
図4は、情報処理装置100のハードウェア構成例を示すブロック図である。
【
図5】
図5は、距離情報管理テーブル500の記憶内容の一例を示す説明図である。
【
図6】
図6は、構成情報管理テーブル600の記憶内容の一例を示す説明図である。
【
図7】
図7は、管理装置201のハードウェア構成例を示すブロック図である。
【
図8】
図8は、リージョン情報管理テーブル800の記憶内容の一例を示す説明図である。
【
図9】
図9は、リソース装置202のハードウェア構成例を示すブロック図である。
【
図10】
図10は、情報処理システム200の機能的構成例を示すブロック図である。
【
図11】
図11は、情報処理システム200の動作例を示す説明図(その1)である。
【
図12】
図12は、情報処理システム200の動作例を示す説明図(その2)である。
【
図13】
図13は、情報処理システム200の動作例を示す説明図(その3)である。
【
図14】
図14は、情報処理システム200の動作例を示す説明図(その4)である。
【
図15】
図15は、情報処理システム200の動作例を示す説明図(その5)である。
【
図16】
図16は、情報処理システム200の動作例を示す説明図(その6)である。
【
図17】
図17は、全体処理手順の一例を示すフローチャート(その1)である。
【
図18】
図18は、全体処理手順の一例を示すフローチャート(その2)である。
【
図19】
図19は、全体処理手順の一例を示すフローチャート(その3)である。
【
図20】
図20は、集約処理手順の一例を示すフローチャートである。
【
図21】
図21は、計測処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる引継元特定方法、および引継元特定プログラムの実施の形態を詳細に説明する。
【0011】
(実施の形態にかかる引継元特定方法の一実施例)
図1は、実施の形態にかかる引継元特定方法の一実施例を示す説明図である。情報処理装置100は、複数のリソースクラスタを有するシステムを管理および運用するためのコンピュータである。上記システムは、例えば、
図2に後述する情報処理システム200に対応する。リソースクラスタは、複数のリソース装置の集まりである。管理および運用は、具体的には、キャパシティプランニング、障害検知、および、障害復旧などである。
【0012】
リソースクラスタに含まれる複数のリソース装置は、例えば、同じ場所に存在することが好ましい。リソースクラスタに含まれる複数のリソース装置のうち、一部のリソース装置は、例えば、他のリソース装置とは異なる場所に存在してもよい。リソースクラスタに含まれる複数のリソース装置が存在する場所は、例えば、他のリソースクラスタに含まれる複数のリソース装置が存在する場所と一部が重複していてもよい。リソースクラスタに含まれる複数のリソース装置が存在する場所は、例えば、ゾーン、または、リージョンとも呼ばれる。
【0013】
リソース装置は、サービスの実現に利用される。リソース装置は、例えば、サービスを形成する処理を実行するために利用される。リソース装置は、具体的には、仮想マシンを起動し、仮想マシンが、サービスを形成する処理を実行する。以下の説明では、仮想マシンを「VM(Virtual Machine)」と表記する場合がある。サービスは、例えば、複数の処理で形成され、複数の処理を、複数のVMにそれぞれ実行させることにより実現される。処理は、例えば、アプリケーションに含まれる。以下の説明では、アプリケーションを「アプリ」と表記する場合がある。
【0014】
上記システムは、例えば、異なるベンダが提供する複数のパブリッククラウド環境を組み合わせたマルチクラウド環境により実現される。パブリッククラウド環境は、リソース装置を含み、リソース装置を利用する利用者を限定せず、第三者にリソース装置を利用可能に提供する環境である。また、上記システムは、プライベートクラウド環境を含んでいてもよい。プライベートクラウド環境は、リソース装置を含み、リソース装置を利用する利用者を限定し、プライベートクラウド環境の構築者にリソース装置を利用可能に提供する環境である。プライベートクラウド環境は、例えば、オンプレミス環境である。上記システムは、例えば、リソース装置上のVMが、能動的に、HTTP(S)などの汎用プロトコルで、稼働データを外部に出力するpush型のシステムであってもよい。
【0015】
ここで、上記システムで、サービスを形成する複数の処理のいずれかの処理を実行するVMを起動中のリソース装置の負荷が閾値以上に増大し、サービスの性能低下を招いてしまうことがある。このため、auto-scale、fail-over、または、人手により、いずれのリソース装置上のVMに、いずれの処理を割り当てるかの構成が、動的に変更されることがある。例えば、負荷が閾値以上に増大しているリソース装置上のVM上で実行中の、サービスを形成する複数の処理のいずれかの処理を、2つのリソース装置のそれぞれのリソース装置上のVMに分担して実行させ、リソース装置の負荷の低減化を図る場合がある。
【0016】
この場合、従来技術では、外部装置で、上記システムを管理および運用したくても、現在、いずれかのリソース装置上のVMで実行している処理が、いずれの他のVMから移行されたのかを把握することが難しく、上記システムを管理および運用することが難しい。例えば、外部装置は、構成を動的に変更するルールを把握しなければ、現在、いずれかのリソース装置上のVMで実行している処理が、いずれの他のVMから移行されたのかを把握することができない。また、例えば、外部装置は、それぞれのクラウド環境の認証情報がなければ、いずれの処理と、いずれのリソース装置上のVMとが関連しているのかを把握することができない。
【0017】
これに対し、例えば、外部装置が、定常的なすべてのリソース装置の負荷に関する情報を収集し、いずれかのリソース装置上のVMで実行している処理が、いずれの他のVMから移行されたのかを把握しようとすることが考えられる。具体的には、外部装置が、VMによる負荷傾向が類似するリソース装置の組を特定し、特定した組の一方のリソース装置上のVMで実行され始めた処理を、他方のリソース装置上のVMから移行されてきた処理であると判定することが考えられる。
【0018】
しかしながら、外部装置で、いずれかのリソース装置上のVMで実行している処理が、いずれの他のVMから移行されたのかを把握することが依然として難しく、上記システムを管理および運用することが難しい。例えば、外部装置は、定常的なすべてのリソース装置の負荷に関する情報を収集することになり、通信量、処理量、および、処理時間の増大化を招くことになる。
【0019】
特に、上記システムがマルチクラウド環境により実現される場合、VMの数が膨大になりやすく、VMの数が多いほど、通信量、処理量、および、処理時間も多くなってしまう。また、上記システムがマルチクラウド環境により実現される場合、外部装置は、定常的なすべてのリソース装置の負荷に関する情報を収集するにあたり、専用線やイントラネットなどを利用することが難しい傾向がある。このため、外部装置は、インターネットを利用する傾向があり、インターネット上のトラフィック量の膨大化を招くこともある。
【0020】
また、外部装置は、定常的なすべてのリソース装置の負荷に関する情報では、VMによる負荷傾向が偶々類似したリソース装置の組を特定してしまうことがある。このため、外部装置は、定常的なすべてのリソース装置の負荷に関する情報を、高頻度に収集しなければ、いずれかのリソース装置上のVMで実行している処理が、いずれの他のVMから移行されたのかを、精度よく把握することはできない。
【0021】
そこで、本実施の形態では、リソースクラスタ間の距離に基づいて、いずれかのVMで実行している処理の引継元を探す対象のリソースクラスタを絞り込むことにより、引継元を特定する際にかかる所要時間の低減化を図る引継元特定方法について説明する。
【0022】
図1の例では、複数のリソースクラスタのうち、第1のリソースクラスタ内で、新たに第1のVMが起動されたとする。第1のVMは、push型で、能動的に、HTTP(S)などの汎用プロトコルで、稼働データを情報処理装置100に送信する。
【0023】
(1-1)情報処理装置100は、第1のリソースクラスタ内で、新たに第1のVMが起動されたことを検出する。情報処理装置100は、第1のVMから稼働データを受信したことに応じて、第1のリソースクラスタ内で、新たに第1のVMが起動されたことを検出する。第1のVMは、リソース装置間で移行され、移行先で起動されたVMであってもよい。
【0024】
(1-2)情報処理装置100は、第1のVMが起動されたことを検出した場合、複数のリソースクラスタのうち、第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、第2のリソースクラスタを選択する。第2のリソースクラスタは、第1のVM上で実行中の処理の引継元を探索する対象である。
【0025】
ここで、上記システムで、VM間で処理を引き継ぐ際、引継元のVMがあるリソースクラスタと、引継先のVMがあるリソースクラスタとが遠いほど、ネットワークレイテンシの増大により、サービスの性能低下を招きやすくなる傾向がある。このため、引継先のVMがあるリソースクラスタは、引継元のVMがあるリソースクラスタそのもの、あるいは、複数のリソースクラスタのうち、引継元のVMがあるリソースクラスタとの通信遅延が相対的に小さいリソースクラスタになりやすいという傾向がある。
【0026】
情報処理装置100は、例えば、上記傾向を考慮し、複数のリソースクラスタのうち、他のリソースクラスタの中から、第1のリソースクラスタとの通信遅延が相対的に小さい他のリソースクラスタを、第2のリソースクラスタに選択する。情報処理装置100は、例えば、上記傾向を考慮し、第1のリソースクラスタそのものを、第2のリソースクラスタに選択する場合があってもよい。
【0027】
(1-3)情報処理装置100は、第1のVMに関する稼働データと、選択した第2のリソースクラスタ内で起動中の第2のVMに関する稼働データとを取得する。稼働データは、VMによる、VMを起動中のリソース装置内のリソースの使用状況を示す指標値を含む。リソースは、演算装置、記憶装置、または、通信帯域などである。そして、情報処理装置100は、第1のVMに関する稼働データと、第2のVMに関する稼働データの類似度に基づいて、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを判定する。
【0028】
これにより、情報処理装置100は、第1のVM上で実行中の処理の引継元を特定することができる。また、情報処理装置100は、第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、第2のリソースクラスタを選択することができる。このため、情報処理装置100は、第1のVM上で実行中の処理の引継元を特定する際にかかる通信量、処理量、および、処理時間の低減化を図ることができる。結果として、情報処理装置100は、効率よく、上記システムを管理および運用することができる。
【0029】
また、情報処理装置100は、構成を動的に変更するルールを把握しなくても、第1のVM上で実行中の処理の引継元を特定することができる。また、情報処理装置100は、それぞれのリソースクラスタの認証情報がなくても、第1のVM上で実行中の処理の引継元を特定することができる。また、情報処理装置100は、定常的なすべてのVMに関する稼働データを収集しなくても、第1のVM上で実行中の処理の引継元を特定することができる。
【0030】
また、情報処理装置100は、上記システムがマルチクラウド環境により実現される場合も第1のVM上で実行中の処理の引継元を特定する際にかかる通信量、処理量、および、処理時間の低減化を図ることができる。また、情報処理装置100は、インターネット上のトラフィック量の低減化を図ることができる。また、情報処理装置100は、選択した第2のリソースクラスタ以外については、起動中のVMに関する稼働データを収集せずに済むようにすることができる。このため、情報処理装置100は、選択した第2のリソースクラスタ以外にかかる負荷の低減化を図り、インターネット上のトラフィック量の低減化を図ることができる。
【0031】
また、情報処理装置100は、第1のVMと稼働データが偶々類似した他のVMが、第1のリソースクラスタとの通信遅延が相対的に大きいリソースクラスタを、第2のリソースクラスタに選択しにくくすることができる。このため、情報処理装置100は、第1のVMと稼働データが偶々類似した他のVMを、第1のVM上で実行中の処理の引継元と誤認してしまう確率の低減化を図ることができる。このため、情報処理装置100は、すべてのVMに関する稼働データを高頻度に収集しなくても、第1のVM上で実行中の処理の引継元を特定することができる。
【0032】
ここでは、情報処理装置100が、第2のリソースクラスタを1回選択する場合について説明したが、これに限らない。例えば、情報処理装置100は、第2のリソースクラスタを2回以上選択する場合があってもよい。具体的には、情報処理装置100は、選択した第2のリソースクラスタ内に、第1のVM上で実行中の処理の引継元が存在しなければ、第2のリソースクラスタを選択し直すようにする場合があってもよい。この際、情報処理装置100は、まだ選択していない他のリソースクラスタの中から、第1のリソースクラスタとの通信遅延が相対的に小さい他のリソースクラスタを、第2のリソースクラスタに選択することが考えられる。
【0033】
ここでは、情報処理装置100が、最初に、第1のリソースクラスタ以外の、他のリソースクラスタの中から、第2のリソースクラスタを選択する場合について説明したが、これに限らない。例えば、情報処理装置100が、最初に、第1のリソースクラスタを、第2のリソースクラスタに選択する場合があってもよい。そして、情報処理装置100は、選択した第2のリソースクラスタ内に、第1のVM上で実行中の処理の引継元が存在しなければ、他のリソースクラスタの中から、第2のリソースクラスタを選択し直すようにする場合があってもよい。
【0034】
(情報処理システム200の一例)
次に、
図2を用いて、
図1に示した情報処理装置100を適用した、情報処理システム200の一例について説明する。
【0035】
図2は、情報処理システム200の一例を示す説明図である。
図2において、情報処理システム200は、情報処理装置100と、複数の管理装置201と、複数のリソース装置202とを含む。
【0036】
情報処理システム200において、情報処理装置100と管理装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
【0037】
情報処理システム200は、マルチクラウド環境により実現され、マルチクラウド実行基盤を実現する。情報処理システム200は、複数のリージョン220を含み、リージョン220ごとに、リソースクラスタが存在する。以下の説明では、それぞれのリージョン220を区別する際には、「#i」を付して、「リージョン220#i」と表記する場合がある。iは、自然数である。同様に、それぞれのリソースクラスタを区別する際には、リージョン220#iに存在するリソースクラスタを「リソースクラスタ#i」と表記する場合がある。
【0038】
情報処理装置100は、情報処理システム200を管理および運用するコンピュータである。情報処理装置100は、リージョン220ごとに、当該リージョン220と他のリージョン220との間で、通信に生じる遅延時間を取得し、
図5に後述する距離情報管理テーブル500を用いて記憶する。情報処理装置100は、起動済みのVMを、システムを形成するアプリ別に対応付けて、
図6に後述する構成情報管理テーブル600を用いて記憶する。情報処理装置100は、いずれかのリージョン220内で、新たなVMが起動されると、
図5に後述する距離情報管理テーブル500に基づいて、他のリージョン220を選択する。他のリージョン220は、例えば、新たなVM上で実行中の、いずれかのアプリ内の処理を引き継いできた引継元を探索する対象となる。情報処理装置100は、選択した他のリージョン220内で、新たなVM上で実行中の、いずれかのアプリ内の処理を引き継いできた引継元を探索する。情報処理装置100は、探索した結果を出力する。情報処理装置100は、例えば、サーバやPCなどである。
【0039】
管理装置201は、いずれかのリージョン220に属するコンピュータである。管理装置201は、自装置が属するリージョン220に存在するリソースクラスタを管理する。管理装置201は、リソースクラスタに含まれるそれぞれのリソース装置202の稼働データを収集し、
図8に後述するリージョン情報管理テーブル800を用いて記憶する。管理装置201は、リソースクラスタに含まれるそれぞれのリソース装置202の稼働データを集約し、情報処理装置100に送信する。管理装置201は、例えば、サーバやPC(Personal Computer)などである。以下の説明では、それぞれの管理装置201を区別する際には、リージョン220#iに属し、リソースクラスタ#iを管理する管理装置201を「管理装置201#i」と表記する場合がある。
【0040】
リソース装置202は、リソースを有し、リソースを利用してVMを実行し、実行したVMにより、サービスを実現するシステムを形成する複数のアプリのいずれかのアプリ内の処理を実行するコンピュータである。リソース装置202は、VMに関する稼働データを生成し、管理装置201に送信する。リソース装置202は、例えば、サーバやPCなどである。以下の説明では、それぞれのリソース装置202を区別する際には、リージョン220#iに存在し、リソースクラスタ#iに含まれ、管理装置201#iが管理するリソース装置202を「リソース装置202#i」と表記する場合がある。
【0041】
ここでは、管理装置201が、リソース装置202とは異なる装置である場合について説明したが、これに限らない。例えば、管理装置201が、いずれかのリソース装置202と一体である場合があってもよい。ここでは、情報処理装置100が、管理装置201とは異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、いずれかの管理装置201と一体である場合があってもよい。
【0042】
(情報処理システム200の運用例)
次に、
図3を用いて、
図2に示した情報処理システム200の運用例について説明する。
【0043】
図3は、情報処理システム200の運用例を示す説明図である。
図3において、情報処理システム200は、例えば、クラウド事業者X社のクラウド環境、クラウド事業者Y社のクラウド環境、オンプレミス環境などを組み合わせて実現されている。そして、情報処理システム200により、マルチクラウド実行基盤が実現されている。
【0044】
例えば、マルチクラウド実行基盤が、情報処理システム200から切り出したリソース装置202上のVMまたはコンテナを組み合わせて実現されている。そして、マルチクラウド実行基盤により、サービスを実現するシステムが実現されている。システムは、複数のアプリから形成され、それぞれのアプリ内の処理は、異なるVMまたはコンテナに分担して配備され、実行されている。
図3の例では、それぞれのアプリ内の処理として、処理1~4が、異なるVMまたはコンテナに分担して配備されている。
【0045】
情報処理装置100は、各環境におけるVMの稼働データを、統一的に管理したいという要望に応じて、システム情報管理サービスを実現することを目的とする。稼働データは、VMを起動中のリソース装置202内のリソースの、当該VMによる使用状況を示す指標値を含む。稼働データは、VMが、システムを形成するいずれのアプリ内の処理を実行しているのかを、具体的に特定可能にしなくてもよい。
【0046】
情報処理装置100は、具体的には、サービスを実現するシステムに関し、システム情報として、それぞれのアプリ内の処理を実行中のVMの稼働データを収集し、収集した稼働データに基づいて、システムを管理および運用する。管理および運用は、具体的には、キャパシティプランニング、障害検知、および、障害復旧などである。VMは、例えば、push型で、能動的に、HTTP(S)などの汎用プロトコルで、稼働データを情報処理装置100に送信するとする。
【0047】
(情報処理装置100のハードウェア構成例)
次に、
図4を用いて、
図2に示した情報処理システム200に含まれる情報処理装置100のハードウェア構成例について説明する。
【0048】
図4は、情報処理装置100のハードウェア構成例を示すブロック図である。
図4において、情報処理装置100は、CPU(Central Processing Unit)401と、メモリ402と、ネットワークI/F(Interface)403と、記録媒体I/F404と、記録媒体405と、ディスプレイ406と、入力装置407とを有する。また、各構成部は、バス400によってそれぞれ接続される。
【0049】
ここで、CPU401は、情報処理装置100の全体の制御を司る。メモリ402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることで、コーディングされている処理をCPU401に実行させる。
【0050】
ネットワークI/F403は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F403は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F403は、例えば、モデムやLANアダプタなどである。
【0051】
記録媒体I/F404は、CPU401の制御に従って記録媒体405に対するデータのリード/ライトを制御する。記録媒体I/F404は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体405は、記録媒体I/F404の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体405は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体405は、情報処理装置100から着脱可能であってもよい。
【0052】
ディスプレイ406は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ406は、例えば、CRT(Cathode Ray Tube)、液晶ディスプレイ、有機EL(Electroluminescence)ディスプレイなどである。入力装置407は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置407は、キーボードやマウスなどであってもよく、また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【0053】
情報処理装置100は、上述した構成部の他、例えば、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F404や記録媒体405を複数有していてもよい。また、情報処理装置100は、記録媒体I/F404や記録媒体405を有していなくてもよい。
【0054】
(距離情報管理テーブル500の記憶内容)
次に、
図5を用いて、リージョン220ごとに対応付けて生成される距離情報管理テーブル500の記憶内容の一例について説明する。距離情報管理テーブル500は、例えば、
図4に示した情報処理装置100のメモリ402や記録媒体405などの記憶領域により実現される。
【0055】
図5は、距離情報管理テーブル500の記憶内容の一例を示す説明図である。
図5に示すように、距離情報管理テーブル500は、宛先リージョン220と、遅延(リージョン間距離)と、測定時刻とのフィールドを有する。距離情報管理テーブル500は、リージョン220ごとに各フィールドに情報を設定することにより、距離情報がレコードとして記憶される。
【0056】
宛先リージョン220のフィールドには、距離情報管理テーブル500がリージョン220#iに対応する場合、宛先リージョン220として、リージョン220#iとは異なる他のリージョン220#j(≠i)を識別するリージョン名が設定される。遅延(リージョン間距離)のフィールドには、リージョン220#iに属する管理装置201#iと、宛先リージョン220となるリージョン220#jに属する管理装置201#jとの通信において生じる遅延時間が設定される。遅延時間は、例えば、ネットワークレイテンシである。測定時刻のフィールドには、遅延時間が測定された測定時刻が設定される。
【0057】
遅延(リージョン間距離)のフィールドには、リージョン220#iに存在するリソース装置202#iと、宛先リージョン220となるリージョン220#jに属するリソース装置202#jとのネットワークレイテンシが設定される場合があってもよい。遅延(リージョン間距離)のフィールドには、リージョン220#iに属する管理装置201#iと、宛先リージョン220となるリージョン220#jに属する管理装置201#jとの物理的距離が設定される場合があってもよい。物理的距離は、遅延時間を間接的に表す指標値となり得る。以下の説明では、それぞれのリージョン220#iに対応する距離情報管理テーブル500を区別する場合には「#i」を付して「距離情報管理テーブル500#i」と表記する場合がある。
【0058】
(構成情報管理テーブル600の記憶内容)
次に、
図6を用いて、構成情報管理テーブル600の記憶内容の一例について説明する。構成情報管理テーブル600は、例えば、
図4に示した情報処理装置100のメモリ402や記録媒体405などの記憶領域により実現される。
【0059】
図6は、構成情報管理テーブル600の記憶内容の一例を示す説明図である。
図6に示すように、構成情報管理テーブル600は、リージョンIDと、システムIDと、VM IDと、アプリIDと、稼働情報とのフィールドを有する。構成情報管理テーブル600は、VMごとに各フィールドに情報を設定することにより、構成情報がレコードとして記憶される。
【0060】
リージョンIDのフィールドには、リージョン220を識別するリージョンIDが設定される。システムIDのフィールドには、リージョン220上のVMに、アプリ内の処理を実行させているシステムを識別するシステムIDが設定される。システムIDは、VMを、システム別に分類可能にする情報であればよく、システム自体を具体的に特定可能な情報ではなくてもよい。VM IDのフィールドには、リージョン220上のVMを識別するVM IDが設定される。
【0061】
アプリIDのフィールドには、VMが実行中の処理が、システムを形成するいずれのアプリに関わるかを判別するためのアプリIDが設定される。アプリIDは、VM上で実行中の処理を、アプリ別に分類可能にする情報であればよく、アプリ自体を具体的に特定可能な情報ではなくてもよい。稼働情報のフィールドには、所定の時間分の、VMによる、リソース装置202内のリソースの使用状況を表す指標値が設定される。指標値は、例えば、CPU使用率、メモリ使用率、ディスクアクセス数、および、通信量などである。
【0062】
(管理装置201のハードウェア構成例)
次に、
図7を用いて、
図2に示した情報処理システム200に含まれる管理装置201のハードウェア構成例について説明する。
【0063】
図7は、管理装置201のハードウェア構成例を示すブロック図である。
図7において、管理装置201は、CPU701と、メモリ702と、ネットワークI/F703と、記録媒体I/F704と、記録媒体705と、ディスプレイ706と、入力装置707とを有する。また、各構成部は、バス700によってそれぞれ接続される。
【0064】
ここで、CPU701は、管理装置201の全体の制御を司る。メモリ702は、例えば、ROM、RAMおよびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU701のワークエリアとして使用される。メモリ702に記憶されるプログラムは、CPU701にロードされることで、コーディングされている処理をCPU701に実行させる。
【0065】
ネットワークI/F703は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F703は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F703は、例えば、モデムやLANアダプタなどである。
【0066】
記録媒体I/F704は、CPU701の制御に従って記録媒体705に対するデータのリード/ライトを制御する。記録媒体I/F704は、例えば、ディスクドライブ、SSD、USBポートなどである。記録媒体705は、記録媒体I/F704の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体705は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体705は、管理装置201から着脱可能であってもよい。
【0067】
ディスプレイ706は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ706は、例えば、CRT、液晶ディスプレイ、有機ELディスプレイなどである。入力装置707は、文字、数字、各種指示などの入力のためのキーを有し、データの入力を行う。入力装置707は、キーボードやマウスなどであってもよく、また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【0068】
管理装置201は、上述した構成部の他、例えば、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、管理装置201は、記録媒体I/F704や記録媒体705を複数有していてもよい。また、管理装置201は、記録媒体I/F704や記録媒体705を有していなくてもよい。
【0069】
(リージョン情報管理テーブル800の記憶内容)
次に、
図8を用いて、リージョン情報管理テーブル800の記憶内容の一例について説明する。リージョン情報管理テーブル800は、例えば、
図7に示した管理装置201のメモリ702や記録媒体705などの記憶領域により実現される。
【0070】
図8は、リージョン情報管理テーブル800の記憶内容の一例を示す説明図である。
図8に示すように、リージョン情報管理テーブル800は、システムIDと、VM IDと、稼働情報とのフィールドを有する。リージョン情報管理テーブル800は、リージョン220上のVMごとに各フィールドに情報を設定することにより、リージョン情報がレコードとして記憶される。
【0071】
システムIDのフィールドには、リージョン220上のVMに、アプリ内の処理を実行させているシステムを識別するシステムIDが設定される。VM IDのフィールドには、リージョン220上のVMを識別するVM IDが設定される。稼働情報のフィールドには、所定の時間分の、VMによる、リソース装置202内のリソースの使用状況を表す指標値が設定される。指標値は、例えば、CPU使用率、メモリ使用率、ディスクアクセス数、および、通信量などである。
【0072】
以下の説明では、それぞれの管理装置201#iが記憶するリージョン情報管理テーブル800を区別する場合には「#i」を付して「リージョン情報管理テーブル800#i」と表記する場合がある。
【0073】
(リソース装置202のハードウェア構成例)
次に、
図9を用いて、
図2に示した情報処理システム200に含まれるリソース装置202のハードウェア構成例について説明する。
【0074】
図9は、リソース装置202のハードウェア構成例を示すブロック図である。
図9において、リソース装置202は、CPU901と、メモリ902と、ネットワークI/F903と、記録媒体I/F904と、記録媒体905とを有する。また、各構成部は、バス900によってそれぞれ接続される。
【0075】
ここで、CPU901は、リソース装置202の全体の制御を司る。メモリ902は、例えば、ROM、RAMおよびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU901のワークエリアとして使用される。メモリ902に記憶されるプログラムは、CPU901にロードされることで、コーディングされている処理をCPU901に実行させる。
【0076】
ネットワークI/F903は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F903は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F903は、例えば、モデムやLANアダプタなどである。
【0077】
記録媒体I/F904は、CPU901の制御に従って記録媒体905に対するデータのリード/ライトを制御する。記録媒体I/F904は、例えば、ディスクドライブ、SSD、USBポートなどである。記録媒体905は、記録媒体I/F904の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体905は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体905は、リソース装置202から着脱可能であってもよい。
【0078】
リソース装置202は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、リソース装置202は、記録媒体I/F904や記録媒体905を複数有していてもよい。また、リソース装置202は、記録媒体I/F904や記録媒体905を有していなくてもよい。
【0079】
(情報処理システム200の機能的構成例)
次に、
図10を用いて、情報処理システム200の機能的構成例について説明する。
【0080】
図10は、情報処理システム200の機能的構成例を示すブロック図である。
図10において、情報処理装置100は、第1の記憶部1000と、稼働データ収集部1001と、負荷傾向解析部1002と、負荷変動制御部1003とを含む。また、管理装置201は、第2の記憶部1010と、稼働データ送信部1011とを含む。また、リソース装置202は、稼働データ計測部1021と、負荷実行部1022とを含む。
【0081】
第1の記憶部1000は、例えば、
図4に示したメモリ402や記録媒体405などの記憶領域によって実現される。以下では、第1の記憶部1000が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、第1の記憶部1000が、情報処理装置100とは異なる装置に含まれ、第1の記憶部1000の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0082】
稼働データ収集部1001~負荷変動制御部1003は、制御部の一例として機能する。稼働データ収集部1001~負荷変動制御部1003は、例えば、
図4に示したメモリ402や記録媒体405などの記憶領域に記憶されたプログラムをCPU401に実行させることにより、または、ネットワークI/F403により、その機能を実現する。各機能部の処理結果は、例えば、
図4に示したメモリ402や記録媒体405などの記憶領域に記憶される。
【0083】
第1の記憶部1000は、各機能部の処理において参照され、または更新される各種情報を記憶する。第1の記憶部1000は、リソースクラスタ間の通信遅延を表す指標値を記憶する。第1の記憶部1000は、例えば、リソースクラスタごとに、当該リソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値を記憶する。指標値は、例えば、ネットワークレイテンシである。指標値は、例えば、物理的距離であってもよい。第1の記憶部1000は、具体的には、リージョン220ごとに、当該リージョン220と他のリージョン220との間で、通信に生じる遅延時間を、
図5に示した距離情報管理テーブル500を用いて記憶する。遅延時間は、例えば、ネットワークレイテンシである。
【0084】
第1の記憶部1000は、異なる2つのVMを対応付けて表す対応情報を記憶する。第1の記憶部1000は、例えば、同じアプリ内の異なる処理を分担して実行中と判断された2つのVMを対応付けて表す対応情報を記憶する。第1の記憶部1000は、具体的には、起動済みのVMを、システムを形成するアプリ別に対応付けて、
図6に示した構成情報管理テーブル600を用いて記憶する。第1の記憶部1000は、VMに関する稼働データを記憶する。稼働データは、例えば、稼働データ収集部1001によって取得される。第1の記憶部1000は、具体的には、VMに関する稼働データを、
図6に示した構成情報管理テーブル600を用いて記憶する。
【0085】
稼働データ収集部1001は、VMに関する稼働データを、能動的または受動的に取得する。稼働データは、VMによる、リソース装置202のリソースの使用状況を示す指標値を含む。稼働データ収集部1001は、例えば、リソースクラスタ内で起動中のそれぞれのVMに関する稼働データを、当該リソースクラスタを管理する管理装置201から纏めて取得する。これにより、稼働データ収集部1001は、ネットワーク上のトラフィック量の増大化を抑制することができる。
【0086】
稼働データ収集部1001は、複数のリソースクラスタのうち、第1のリソースクラスタ内で起動中のそれぞれのVMに関する稼働データを取得する。稼働データ収集部1001は、取得した稼働データに基づいて、第1のリソースクラスタ内で、新たに第1のVMが起動されたことを検出する。稼働データ収集部1001は、例えば、前回取得した稼働データと、今回取得した稼働データとの差分に基づいて、第1のリソースクラスタ内で、新たに第1のVMが起動されたことを検出する。これにより、稼働データ収集部1001は、処理を引き継いだ可能性があり、処理対象となり得る第1のVMを検出することができる。
【0087】
稼働データ収集部1001は、第1のVMが起動されたことを検出した場合、第2のリソースクラスタを選択する。第2のリソースクラスタは、第1のVM上で実行中の処理の引継元のVMを探索する対象である。稼働データ収集部1001は、例えば、第1のVMが起動されたことを検出した場合、複数のリソースクラスタのうち、第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、第2のリソースクラスタを選択する。指標値は、例えば、ネットワークレイテンシ、または、物理的距離などである。
【0088】
稼働データ収集部1001は、具体的には、複数のリソースクラスタのうち、第1のリソースクラスタを管理する管理装置201と、他のリソースクラスタを管理する管理装置201とのネットワークレイテンシに基づいて、第2のリソースクラスタを選択する。稼働データ収集部1001は、より具体的には、第1のリソースクラスタを管理する管理装置201とのネットワークレイテンシが最も小さい他のリソースクラスタを、第2のリソースクラスタに選択する。
【0089】
また、稼働データ収集部1001は、より具体的には、第1のリソースクラスタを管理する管理装置201とのネットワークレイテンシが閾値以下である他のリソースクラスタを、第2のリソースクラスタに選択してもよい。また、稼働データ収集部1001は、より具体的には、複数のリソースクラスタを、第1のリソースクラスタを管理する管理装置201とのネットワークレイテンシが小さい順にソートしてもよい。この場合、稼働データ収集部1001は、所定の順位までの他のリソースクラスタを、第2のリソースクラスタに選択することが考えられる。
【0090】
また、稼働データ収集部1001は、具体的には、第1のリソースクラスタを、第2のリソースクラスタに選択してもよい。これにより、稼働データ収集部1001は、通信遅延を表す指標値に基づいて、第1のVM上で実行中の処理の引継元となるVMを起動中である確率が高いと判断されるリソースクラスタが、第2のリソースクラスタに選択されやすくすることができる。結果として、稼働データ収集部1001は、第1のVM上で実行中の処理の引継元を特定しやすくすることができる。
【0091】
稼働データ収集部1001は、具体的には、複数のリソースクラスタのうち、第1のリソースクラスタを管理する管理装置201と、他のリソースクラスタを管理する管理装置201との物理的距離に基づいて、第2のリソースクラスタを選択する。稼働データ収集部1001は、より具体的には、第1のリソースクラスタを管理する管理装置201との物理的距離が最も小さい他のリソースクラスタを、第2のリソースクラスタに選択する。
【0092】
また、稼働データ収集部1001は、より具体的には、第1のリソースクラスタを管理する管理装置201との物理的距離が閾値以下である他のリソースクラスタを、第2のリソースクラスタに選択してもよい。また、稼働データ収集部1001は、より具体的には、複数のリソースクラスタを、第1のリソースクラスタを管理する管理装置201との物理的距離が小さい順にソートしてもよい。この場合、稼働データ収集部1001は、所定の順位までの他のリソースクラスタを、第2のリソースクラスタに選択することが考えられる。
【0093】
また、稼働データ収集部1001は、具体的には、第1のリソースクラスタを、第2のリソースクラスタに選択してもよい。これにより、稼働データ収集部1001は、通信遅延を表す指標値に基づいて、第1のVM上で実行中の処理の引継元のVMを起動中である確率が高いと判断されるリソースクラスタが、第2のリソースクラスタに選択されやすくすることができる。結果として、稼働データ収集部1001は、第1のVM上で実行中の処理の引継元を特定しやすくすることができる。
【0094】
稼働データ収集部1001は、第2のリソースクラスタを選択した場合、選択した第2のリソースクラスタ内で起動中の第2のVMに関する稼働データを収集する。第1のVMに関する稼働データと、第2のVMに関する稼働データとは、同一の時間帯に関することが好ましい。稼働データ収集部1001は、第1のVMに関する稼働データを取得し直してもよい。これにより、稼働データ収集部1001は、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを判定する基準となる情報を取得することができる。
【0095】
稼働データ収集部1001は、第2のリソースクラスタを選択した場合、第1のVMに関する稼働データと、選択した第2のリソースクラスタ内で起動中のそれぞれのVMに関する稼働データとを収集してもよい。この際、稼働データ収集部1001は、選択した第2のリソースクラスタを管理する管理装置201から、第2のリソースクラスタ内で起動中のそれぞれのVMに関する稼働データを纏めて収集してもよい。これにより、稼働データ収集部1001は、第2のリソースクラスタ内のそれぞれのリソース装置202と通信しなくても、第2のリソースクラスタ内で起動中のそれぞれのVMに関する稼働データを収集することができる。このため、稼働データ収集部1001は、ネットワーク上のトラフィック量の増大化を抑制することができる。
【0096】
稼働データ収集部1001は、負荷傾向解析部1002によって、第1のVM上で実行中の処理の引継元が、選択した第2のリソースクラスタ内で起動中のいずれのVMでもないと判定された場合、第2のリソースクラスタを選択し直す。稼働データ収集部1001は、例えば、第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、まだ選択されていないリソースクラスタの中から、第2のリソースクラスタを選択し直す。これにより、稼働データ収集部1001は、第1のVM上で実行中の処理の引継元を特定しやすくすることができる。稼働データ収集部1001は、例えば、選択済みの第2のリソースクラスタ以外で、新たに選択した第2のリソースクラスタ内で、第1のVM上で実行中の処理の引継元を探索することができる。
【0097】
稼働データ収集部1001は、第2のリソースクラスタを選択した回数に基づいて、第2のリソースクラスタを選択し直すか否かを決定する。これにより、稼働データ収集部1001は、第1のVM上で実行中の処理の引継元となるVMを起動している確率が相対的に低いと判断されるリソースクラスタを、第2のリソースクラスタに選択せずに済むようにすることができる。このため、稼働データ収集部1001は、通信量、処理量、および、処理時間の低減化を図ることができる。
【0098】
稼働データ収集部1001は、第2のリソースクラスタを選択し直す際、まだ選択されていないリソースクラスタの中から、第1のリソースクラスタとの通信遅延が最も小さいリソースクラスタを、第2のリソースクラスタに選択してもよい。これにより、稼働データ収集部1001は、第1のVM上で実行中の処理の引継元となるVMを起動中である確率が高いと判断されるリソースクラスタが、第2のリソースクラスタに選択されやすくすることができる。結果として、稼働データ収集部1001は、第1のVM上で実行中の処理の引継元を特定しやすくすることができる。
【0099】
稼働データ収集部1001は、第1のVMに関する稼働データと、第2のVMに関する稼働データとの類似度が閾値以上であるか否かを判定する。稼働データ収集部1001は、閾値以上であると判定した場合、負荷変動制御部1003によって、第2のVMが属するシステムの負荷が変動された際の、第1のVMに関する新たな稼働データと、第2のVMに関する新たな稼働データとを取得する。これにより、稼働データ収集部1001は、定常的な稼働データ以外に、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを判定する用途に適した、新たな各種稼働データを取得することができる。このため、稼働データ収集部1001は、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを判定する精度の向上を図ることができる。
【0100】
負荷傾向解析部1002は、第1のVMに関する稼働データと、選択した第2のリソースクラスタ内で起動中の第2のVMに関する稼働データとの類似度に基づいて、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを判定する。ここで、負荷傾向解析部1002は、例えば、第1のVMに関する稼働データと、選択した第2のリソースクラスタ内で起動中の第2のVMに関する稼働データとの類似度が閾値以上であると判定する場合がある。この場合、負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元が、第2のVMであると判定する。
【0101】
一方で、負荷傾向解析部1002は、例えば、第1のVMに関する稼働データと、選択した第2のリソースクラスタ内で起動中の第2のVMに関する稼働データとの類似度が閾値未満であると判定する場合がある。この場合、負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元が、第2のVMではないと判定する。これにより、負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元を特定することができる。また、負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元を特定する際にかかる通信量、処理量、および、処理時間の低減化を図ることができる。
【0102】
負荷傾向解析部1002は、第1のVMに関する稼働データと、選択した第2のリソースクラスタ内で起動中のそれぞれのVMに関する稼働データとの類似度に基づいて、第1のVM上で実行中の処理の引継元が、それぞれのVMであるか否かを判定してもよい。ここで、負荷傾向解析部1002は、例えば、第1のVMに関する稼働データと、第2のリソースクラスタ内で起動中のいずれかのVMに関する稼働データとの類似度が閾値以上であると判定する場合がある。この場合、負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元が、当該いずれかのVMであると判定する。
【0103】
一方で、負荷傾向解析部1002は、例えば、第1のVMに関する稼働データと、第2のリソースクラスタ内で起動中のいずれかのVMに関する稼働データとの類似度が閾値未満であると判定する場合がある。この場合、負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元が、当該いずれかのVMではないと判定する。これにより、負荷傾向解析部1002は、第2のリソースクラスタ内で起動中のVM全体から、第1のVM上で実行中の処理の引継元を特定することができる。また、負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元を特定する際にかかる通信量、処理量、および、処理時間の低減化を図ることができる。
【0104】
負荷傾向解析部1002は、稼働データ収集部1001によって取得された第1のVMに関する新たな稼働データと第2のVMに関する新たな稼働データとの類似度に基づいて、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを判定してもよい。ここで、負荷傾向解析部1002は、例えば、稼働データ収集部1001によって取得された、第1のVMに関する新たな稼働データと、第2のVMに関する新たな稼働データとの類似度が閾値以上であると判定する場合がある。この場合、負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元が、第2のVMであると判定する。
【0105】
一方で、負荷傾向解析部1002は、例えば、稼働データ収集部1001によって取得された、第1のVMに関する新たな稼働データと、第2のVMに関する新たな稼働データとの類似度が閾値未満であると判定する場合がある。この場合、負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元が、第2のVMではないと判定する。これにより、負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを精度よく判定することができる。
【0106】
負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを判定した結果を出力してもよい。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F403による外部装置への送信、または、メモリ402や記録媒体405などの記憶領域への記憶である。
【0107】
負荷傾向解析部1002は、第1のVM上で実行中の処理の引継元が、第2のVMであると判定した場合、第1のVMと、第2のVMとを対応付けて表す対応情報を記憶する。負荷傾向解析部1002は、例えば、構成情報管理テーブル600に基づいて、第2のVMに対応するアプリIDを、第1のVMにも対応付けることにより、第1のVMと、第2のVMとを対応付けて表す対応情報を記憶する。これにより、負荷傾向解析部1002は、同じアプリ内の異なる処理を分担して実行中のVMを対応付けておくことができる。そして、負荷傾向解析部1002は、新たに起動されたVMが、いずれの他のVMから、いずれのアプリ内の処理を引き継いで実行中のVMであるかを把握可能にすることができる。
【0108】
負荷傾向解析部1002は、2つのVMのそれぞれのVMに関する稼働データの類似度に基づいて、2つのVMを対応付けて表す対応情報を削除するか否かを決定する。これにより、負荷傾向解析部1002は、同じアプリ内の異なる処理を分担して実行しなくなった2つのVMの対応付けを解除することができる。このため、負荷傾向解析部1002は、いずれのVMに、いずれのアプリ内の処理が対応するかの構成を示す情報を、最新の状態に更新することができ、システムを管理および運用しやすくすることができる。
【0109】
負荷変動制御部1003は、稼働データ収集部1001によって、第1のVMに関する稼働データと、第2のVMに関する稼働データとの類似度が閾値以上であると判定された場合、第2のVMが属するシステムの負荷を変動させる。負荷変動制御部1003は、例えば、第2のVMが属するシステムの負荷を変動させる指示を、第2のVMを起動中のリソース装置202が有する負荷実行部1022に送信する。これにより、負荷変動制御部1003は、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを判定する用途に適した、新たな各種稼働データを取得可能にすることができる。
【0110】
第2の記憶部1010は、例えば、
図7に示したメモリ702や記録媒体705などの記憶領域によって実現される。以下では、第2の記憶部1010が、管理装置201に含まれる場合について説明するが、これに限らない。例えば、第2の記憶部1010が、管理装置201とは異なる装置に含まれ、第2の記憶部1010の記憶内容が管理装置201から参照可能である場合があってもよい。
【0111】
稼働データ送信部1011は、具体的には、例えば、
図7に示したメモリ702や記録媒体705などの記憶領域に記憶されたプログラムをCPU701に実行させることにより、または、ネットワークI/F703により、その機能を実現する。各機能部の処理結果は、例えば、
図7に示したメモリ702や記録媒体705などの記憶領域に記憶される。
【0112】
第2の記憶部1010は、受信した稼働データを記憶する。第2の記憶部1010は、例えば、稼働データを、リージョン情報管理テーブル800を用いて記憶する。稼働データ送信部1011は、稼働データを、情報処理装置100に送信する。稼働データ送信部1011は、例えば、自装置で管理するリソースクラスタ内で起動中のそれぞれのVMに関する稼働データを集約し、情報処理装置100に送信する。これにより、稼働データ送信部1011は、情報処理装置100が、自装置で管理するリソースクラスタ内のそれぞれのリソース装置202と通信しなくても、VMに関する稼働データを収集可能にすることができる。そして、稼働データ送信部1011は、情報処理装置100が、VMに関する稼働データを収集する際における、ネットワーク上のトラフィック量の増大化を抑制することができる。
【0113】
稼働データ計測部1021と、負荷実行部1022とは、例えば、
図9に示したメモリ902や記録媒体905などの記憶領域に記憶されたプログラムをCPU901に実行させることにより、または、ネットワークI/F903により、その機能を実現する。各機能部の処理結果は、例えば、
図9に示したメモリ902や記録媒体905などの記憶領域に記憶される。稼働データ計測部1021と、負荷実行部1022とは、VM上で実現されてもよい。
【0114】
稼働データ計測部1021は、VMに関する稼働データを計測する。稼働データ計測部1021は、VMに関する稼働データを、管理装置201に送信する。これにより、稼働データ計測部1021は、VMに関する稼働データを、管理装置201に集約することができる。負荷実行部1022は、負荷変動制御部1003の指示に従って、VMが属するシステムの負荷を変動させる。これにより、負荷実行部1022は、稼働データ計測部1021で、定常的な稼働データ以外を計測可能にすることができる。
【0115】
(情報処理システム200の動作例)
次に、
図11~
図16を用いて、情報処理システム200の動作例について説明する。
【0116】
図11~
図16は、情報処理システム200の動作例を示す説明図である。
図11において、(11-0)リージョン220#1に存在するリソースクラスタ#1に含まれるいずれかのリソース装置202#1は、新たにVMを起動する。以下の説明では、新たにVMを起動したリソース装置202#1を、「リソース装置202#1-N」と表記する場合がある。また、新たに起動されたVMを「新規VM」と表記する場合がある。新規VMは、他のリソース装置202#1から移行されたVMであってもよい。
【0117】
(11-1)リソース装置202#1-Nは、新規VMにより、新規VMに関する稼働データを計測し、情報処理装置100に送信する。
【0118】
(11-2)情報処理装置100は、新規VMに関する稼働データを受信すると、新規VMが起動されたことを検出する。情報処理装置100は、新規VMが起動されたことを検出すると、距離情報管理テーブル500に基づいて、複数のリージョン220のうち、新規VM上で実行中の処理の引継元を探索する対象とするリージョン220を選択する。以下の説明では、対象とするリージョン220を、「対象リージョン220」と表記する場合がある。
【0119】
ここで、複数のリージョン220のうち、まだ選択していないリージョン220の中で、リージョン220#1に最も近く、処理の引継元が存在する確率が相対的に高いと判断されるリージョン220は、リージョン220#1そのものであると判断される。
図11の例では、情報処理装置100は、リージョン220#1を、対象リージョン220に選択する。これにより、情報処理装置100は、サービスの性能低下を抑制する観点から、新規VM上で実行中の処理の引継元となる他のVMが存在する確率が高いと判断されるリージョン220を、対象リージョン220に選択することができる。結果として、情報処理装置100は、新規VM上で実行中の処理の引継元となる他のVMを特定しやすくすることができる。
【0120】
(11-3)情報処理装置100は、対象リージョン220に選択したリージョン220#1を管理する管理装置201#1に、一定時間分の、リージョン220#1内のそれぞれのVMに関する稼働データを集約する依頼を送信する。管理装置201#1は、一定時間分の、リージョン220#1内のそれぞれのVMに関する稼働データを集約する。
【0121】
(11-4)管理装置201#1は、一定時間分の、集約されたリージョン220#1内のそれぞれのVMに関する稼働データを、情報処理装置100に送信する。情報処理装置100は、一定時間分の、集約されたリージョン220#1内のそれぞれのVMに関する稼働データを、管理装置201#1から受信する。これにより、情報処理装置100は、リージョン220#1内のそれぞれのリソース装置202#1と直接通信しなくても、リージョン220#1内のそれぞれのVMに関する稼働データを収集することができる。このため、情報処理装置100は、通信量、処理量、および、処理時間の低減化を図ることができる。また、情報処理装置100は、管理装置201#1以外の管理装置201#k(≠1)とは通信せずに済ませることができる。このため、情報処理装置100は、ネットワーク上のトラフィック量の増大化を抑制することができる。次に、
図12の説明に移行する。
【0122】
図12において、(12-1)情報処理装置100は、一定時間分の、リージョン220#1内のそれぞれのVMに関する稼働データに基づいて、新規VMと負荷傾向が類似する他のVMを抽出する。抽出したVMは、新規VM上で実行中の処理の引継元となるVMであるか否かを判定する対象となるVMである。以下の説明では、抽出したVMを「対象VM」と表記する場合がある。
【0123】
負荷傾向が類似するか否かを判定する手法は、例えば、多項式回帰分析を用いる手法が考えられる。この手法は、具体的には、稼働データを、多項式で表現し、多項式が近似可能であれば、負荷傾向が類似すると判定する。また、負荷傾向が類似するか否かを判定する手法は、例えば、比較的短い時間間隔で線形回帰分析を用いる手法が考えられる。
【0124】
(12-2)情報処理装置100は、構成情報管理テーブル600に基づいて、それぞれの対象VMを利用するシステムを特定する。情報処理装置100は、対象VMごとに、対象VMを起動中のリソース装置202#1と通信し、対象VMを利用するシステムにかかる負荷を変動させる制御を行う。この際、情報処理装置100は、一つのシステムで2以上の対象VMが利用されていれば、2以上の対象VMについては、一括して、2以上の対象VMを利用するシステムにかかる負荷を変動させる制御を行ってもよい。
【0125】
また、この際、情報処理装置100は、負荷を変動させたことにより、さらに別の新規VMが起動されてしまうことを防止するため、対象VMの過去の最大の負荷を超えない範囲で、負荷を変動させることが好ましい。これにより、情報処理装置100は、対象リージョン220以外では、負荷を変動させることがないため、情報処理システム200を利用する他のシステムへの悪影響を抑制することができる。また、情報処理装置100は、対象リージョン220内でも、対象VMを利用しないシステムにかかる負荷を変動させることがないため、対象リージョン220内の対象VM以外を利用する他のシステムへの悪影響を抑制することができる。
【0126】
(12-3)情報処理装置100は、対象VMごとに、対象VMを利用するシステムにかかる負荷を変動させた際の、一定時間分の、新規VMに関する稼働データと、対象VMに関する稼働データとを、管理装置201#1から受信する。情報処理装置100は、例えば、管理装置201#1に依頼し、いずれかの対象VMを利用するシステムにかかる負荷を変動させた際の、一定時間分の、新規VMに関する稼働データと、対象VMに関する稼働データとを受信する。
【0127】
また、情報処理装置100は、例えば、管理装置201#1から、いずれかの対象VMを利用するシステムにかかる負荷を変動させた際の、一定時間分の、新規VMに関する稼働データと、対象VMに関する稼働データとを受信するまで待機してもよい。これにより、情報処理装置100は、リージョン220#1内のそれぞれのリソース装置202#1と直接通信しなくても、新規VMに関する稼働データと、対象VMに関する稼働データとを収集することができる。このため、情報処理装置100は、通信量、処理量、および、処理時間の低減化を図ることができる。また、情報処理装置100は、管理装置201#1以外の管理装置201#k(≠1)とは通信せずに済ませることができる。また、情報処理装置100は、管理装置201#1が、対象VMを起動していないリソース装置202#1とは通信せずに済ませることができる。このため、情報処理装置100は、ネットワーク上のトラフィック量の増大化を抑制することができる。
【0128】
(12-4)情報処理装置100は、一定時間分の、新規VMに関する稼働データと、それぞれの対象VMに関する稼働データとに基づいて、新規VMと、それぞれの対象VMとの負荷傾向を比較する。ここで、情報処理装置100は、新規VMと負荷傾向が類似する対象VMがあれば、新規VMと負荷傾向が類似する対象VMを、新規VM上で実行中の処理の引継元であると判定する。
【0129】
図12の例では、情報処理装置100は、いずれの対象VMも、新規VM上で実行中の処理の引継元ではないと判定し、リージョン220#1内では、新規VM上で実行中の処理の引継元を特定しなかったとする。これにより、情報処理装置100は、リージョン220#1内から、新規VM上で実行中の処理の引継元を探索することができる。次に、
図13の説明に移行する。
【0130】
図13において、(13-1)情報処理装置100は、リージョン220#1内では、新規VM上で実行中の処理の引継元を特定しなかったため、確率で、対象リージョン220を選択し直すか否かを決定する。情報処理装置100は、例えば、今回までに対象リージョン220を選択した回数をNとし、1/Nの確率で、対象リージョン220を選択し直すと決定する。ここでは、N=1のため、情報処理装置100は、対象リージョン220を選択し直すと決定する。情報処理装置100は、対象リージョン220を選択し直すと決定した場合、距離情報管理テーブル500に基づいて、対象リージョン220を選択し直す。
【0131】
ここで、複数のリージョン220のうち、まだ選択していないリージョン220の中で、リージョン220#1に最も近く、処理の引継元が存在する確率が相対的に高いと判断されるリージョン220は、リージョン220#2であると判断される。
図13の例では、情報処理装置100は、リージョン220#2を、対象リージョン220に選択する。これにより、情報処理装置100は、サービスの性能低下を抑制する観点から、新規VM上で実行中の処理の引継元となる他のVMが存在する確率が高いと判断されるリージョン220を、対象リージョン220に選択することができる。結果として、情報処理装置100は、新規VM上で実行中の処理の引継元となる他のVMを特定しやすくすることができる。
【0132】
(13-2)情報処理装置100は、対象リージョン220に選択したリージョン220#2を管理する管理装置201#2に、一定時間分の、リージョン220#2内のそれぞれのVMに関する稼働データを集約する依頼を送信する。管理装置201#2は、一定時間分の、リージョン220#2内のそれぞれのVMに関する稼働データを集約する。
【0133】
(13-3)管理装置201#2は、一定時間分の、集約されたリージョン220#2内のそれぞれのVMに関する稼働データを、情報処理装置100に送信する。情報処理装置100は、一定時間分の、集約されたリージョン220#2内のそれぞれのVMに関する稼働データを、管理装置201#2から受信する。これにより、情報処理装置100は、リージョン220#2内のそれぞれのリソース装置202#2と直接通信しなくても、リージョン220#2内のそれぞれのVMに関する稼働データを収集することができる。このため、情報処理装置100は、通信量、処理量、および、処理時間の低減化を図ることができる。また、情報処理装置100は、管理装置201#2以外の管理装置201#k(≠2)とは通信せずに済ませることができる。このため、情報処理装置100は、ネットワーク上のトラフィック量の増大化を抑制することができる。次に、
図14の説明に移行する。
【0134】
図14において、(14-1)情報処理装置100は、一定時間分の、リージョン220#2内のそれぞれのVMに関する稼働データに基づいて、新規VMと負荷傾向が類似する他のVMを、対象VMとして抽出する。
【0135】
(14-2)情報処理装置100は、構成情報管理テーブル600に基づいて、それぞれの対象VMを利用するシステムを特定する。情報処理装置100は、対象VMごとに、対象VMを起動中のリソース装置202#2と通信し、対象VMを利用するシステムにかかる負荷を変動させる制御を行う。この際、情報処理装置100は、一つのシステムで2以上の対象VMが利用されていれば、2以上の対象VMについては、一括して、2以上の対象VMを利用するシステムにかかる負荷を変動させる制御を行ってもよい。
【0136】
また、この際、情報処理装置100は、負荷を変動させたことにより、さらに別の新規VMが起動されてしまうことを防止するため、対象VMの過去の最大の負荷を超えない範囲で、負荷を変動させることが好ましい。これにより、情報処理装置100は、対象リージョン220以外では、負荷を変動させることがないため、情報処理システム200を利用する他のシステムへの悪影響を抑制することができる。また、情報処理装置100は、対象リージョン220内でも、対象VMを利用しないシステムにかかる負荷を変動させることがないため、対象リージョン220内の対象VM以外を利用する他のシステムへの悪影響を抑制することができる。
【0137】
(14-3)情報処理装置100は、対象VMごとに、対象VMを利用するシステムにかかる負荷を変動させた際の、一定時間分の、新規VMに関する稼働データと、対象VMに関する稼働データとを、管理装置201#2から受信する。情報処理装置100は、例えば、管理装置201#2に依頼し、いずれかの対象VMを利用するシステムにかかる負荷を変動させた際の、一定時間分の、新規VMに関する稼働データと、対象VMに関する稼働データとを受信する。
【0138】
また、情報処理装置100は、例えば、管理装置201#2から、いずれかの対象VMを利用するシステムにかかる負荷を変動させた際の、一定時間分の、新規VMに関する稼働データと、対象VMに関する稼働データとを受信するまで待機してもよい。これにより、情報処理装置100は、リージョン220#2内のそれぞれのリソース装置202#2と直接通信しなくても、新規VMに関する稼働データと、対象VMに関する稼働データとを収集することができる。このため、情報処理装置100は、通信量、処理量、および、処理時間の低減化を図ることができる。また、情報処理装置100は、管理装置201#2以外の管理装置201#k(≠1)とは通信せずに済ませることができる。また、情報処理装置100は、管理装置201#2が、対象VMを起動していないリソース装置202#2とは通信せずに済ませることができる。このため、情報処理装置100は、ネットワーク上のトラフィック量の増大化を抑制することができる。
【0139】
(14-4)情報処理装置100は、一定時間分の、新規VMに関する稼働データと、それぞれの対象VMに関する稼働データとに基づいて、新規VMと、それぞれの対象VMとの負荷傾向を比較する。ここで、情報処理装置100は、新規VMと負荷傾向が類似する対象VMがあれば、新規VMと負荷傾向が類似する対象VMを、新規VM上で実行中の処理の引継元であると判定する。
図14の例では、情報処理装置100は、いずれかの対象VMが、新規VM上で実行中の処理の引継元であると判定したとする。これにより、情報処理装置100は、第1のVM上で実行中の処理の引継元となる対象VMを特定することができる。
【0140】
(14-5)情報処理装置100は、構成情報管理テーブル600に基づいて、新規VMと、引継元であると判定した対象VMとを対応付ける。情報処理装置100は、例えば、構成情報管理テーブル600に基づいて、対象VMに対応するアプリIDを抽出する。そして、情報処理装置100は、新規VMに抽出したアプリIDを対応付けて、構成情報管理テーブル600を更新する。これにより、情報処理装置100は、対象VMと新規VMとを、同じアプリ内の処理を分担するVMの組として対応付けることができ、システムを管理および運用しやすくすることができる。
【0141】
次に、
図15の説明に移行し、
図14の例でも、情報処理装置100が、いずれの対象VMも、新規VM上で実行中の処理の引継元ではないと判定し、リージョン220#2内で、新規VM上で実行中の処理の引継元を特定しなかったとした場合について説明する。
【0142】
図15において、(15-1)情報処理装置100は、リージョン220#2内では、新規VM上で実行中の処理の引継元を特定しなかったため、確率で、対象リージョン220を選択し直すか否かを決定する。情報処理装置100は、例えば、今回までに対象リージョン220を選択した回数をNとし、1/Nの確率で、対象リージョン220を選択し直すと決定する。ここでは、N=2のため、情報処理装置100は、1/2の確率で、対象リージョン220を選択し直すか否かを決定する。
【0143】
図15の例では、情報処理装置100は、対象リージョン220を選択し直さないと決定したとする。これにより、情報処理装置100は、サービスの性能低下を抑制する観点から、新規VM上で実行中の処理の引継元となる他のVMが存在する確率が相対的に低いと判断されるリージョン220を、対象リージョン220に選択しにくくすることができる。このため、情報処理装置100は、新規VM上で実行中の処理の引継元となる他のVMを特定する確率の低下を抑制しつつ、通信量、処理量、および、処理時間の低減化を図ることができる。
【0144】
(15-2)情報処理装置100は、対象リージョン220を選択し直さないと決定した場合、今回の新規VM上で実行中の処理の引継元を特定する処理を保留する。そして、情報処理装置100は、次回、さらに新規VMが起動されたことを検出した際に、今回の新規VM上で実行中の処理の引継元を特定する処理を実行し直すようにする。これにより、情報処理装置100は、今回の新規VM上で実行中の処理の引継元が特定されやすくすることができる。次に、
図16の説明に移行し、情報処理装置100が、構成情報管理テーブル600を更新し、VM間の対応付けを解消する場合について説明する。
【0145】
図16において、(16-1)情報処理装置100は、リージョン220#1を管理する管理装置201#1に、一定時間分の、リージョン220#1内のそれぞれのVMに関する稼働データを集約する依頼を送信する。管理装置201#1は、一定時間分の、リージョン220#1内のそれぞれのVMに関する稼働データを集約する。
【0146】
(16-2)管理装置201#1は、一定時間分の、集約されたリージョン220#1内のそれぞれのVMに関する稼働データを、情報処理装置100に送信する。情報処理装置100は、一定時間分の、集約されたリージョン220#1内のそれぞれのVMに関する稼働データを、管理装置201#1から受信する。
【0147】
(16-3)情報処理装置100は、リージョン220#2を管理する管理装置201#2に、一定時間分の、リージョン220#2内のそれぞれのVMに関する稼働データを集約する依頼を送信する。管理装置201#2は、一定時間分の、リージョン220#2内のそれぞれのVMに関する稼働データを集約する。
【0148】
(16-4)管理装置201#2は、一定時間分の、集約されたリージョン220#2内のそれぞれのVMに関する稼働データを、情報処理装置100に送信する。情報処理装置100は、一定時間分の、集約されたリージョン220#2内のそれぞれのVMに関する稼働データを、管理装置201#2から受信する。
【0149】
(16-5)情報処理装置100は、構成情報管理テーブル600と、リージョン220#1内およびリージョン220#2内のそれぞれのVMに関する稼働データとに基づいて、同一のアプリIDに対応しているが、負荷傾向が類似しないVMの組を特定する。情報処理装置100は、同一のアプリIDに対応しているが、負荷傾向が類似しないVMの組があれば、当該組の少なくともいずれかのVMに対応付けられたアプリIDを削除し、構成情報管理テーブル600を更新する。これにより、情報処理装置100は、構成情報管理テーブル600を、最新の情報処理システム200の状態に合わせて更新することができ、システムを管理および運用しやすくすることができる。
【0150】
その後、情報処理装置100は、アプリIDを削除したVMを、上記新規VMとして、再び他のVMとの対応付けを検討するようにしてもよい。以下の説明では、上記新規VMとして、再び他のVMとの対応付けを検討するVMを、「再対応付けVM」と表記する場合がある。また、情報処理装置100は、再対応付けVMについて、他のVMとの対応付けを所定の回数以上検討しても、いずれのVMとも対応付けられない場合、構成情報管理テーブル600から、再対応付けVMについてのレコードを削除してもよい。これにより、情報処理装置100は、構成情報管理テーブル600に、情報処理システム200の正確な状態が反映されるようにすることができ、システムを管理および運用しやすくすることができる。
【0151】
ここでは、情報処理装置100が、異なるリージョン220内で、負荷傾向が類似しないVMの組を特定し、構成情報管理テーブル600を更新する場合について説明したが、これに限らない。例えば、情報処理装置100が、同一のリージョン220内で、負荷傾向が類似しないVMの組を特定し、構成情報管理テーブル600を更新する場合があってもよい。
【0152】
ここでは、情報処理装置100が、負荷傾向が類似しないVMの組の少なくともいずれかのVMに対応付けられたアプリIDを削除する場合について説明したが、これに限らない。例えば、情報処理装置100が、負荷傾向が類似しないVMの組の少なくともいずれかのVMに、新たなアプリIDを対応付けるようにする場合があってもよい。
【0153】
(全体処理手順)
次に、
図17~
図19を用いて、情報処理装置100が実行する、全体処理手順の一例について説明する。全体処理は、例えば、
図4に示したCPU401と、メモリ402や記録媒体405などの記憶領域と、ネットワークI/F403とによって実現される。
【0154】
図17~
図19は、全体処理手順の一例を示すフローチャートである。
図17において、情報処理装置100は、管理装置201から、いずれかのリージョン220内のVMに関する稼働データを受信する(ステップS1701)。
【0155】
次に、情報処理装置100は、受信した稼働データに関わるVMが、新規VMであるか否かを判定する(ステップS1702)。ここで、新規VMではない場合(ステップS1702:No)、情報処理装置100は、
図19のステップS1901の処理に移行する。一方で、新規VMである場合(ステップS1702:Yes)、情報処理装置100は、ステップS1703の処理に移行する。
【0156】
ステップS1703では、情報処理装置100は、距離情報管理テーブル500に基づいて、まだ選択していない1以上のリージョン220の中から、対象リージョン220を選択する(ステップS1703)。次に、情報処理装置100は、選択した対象リージョン220に属する管理装置201に、稼働データ集約依頼を送信する(ステップS1704)。そして、情報処理装置100は、集約された稼働データを受信する(ステップS1705)。その後、情報処理装置100は、
図18のステップS1801の処理に移行する。
【0157】
図18において、情報処理装置100は、対象リージョン220内で、処理済みではないVMを選択し、新規VMと、選択したVMとの負荷傾向が類似するか否かを判定する(ステップS1801)。ここで、負荷傾向が類似しない場合(ステップS1801:No)、情報処理装置100は、ステップS1808の処理に移行する。一方で、負荷傾向が類似する場合(ステップS1801:Yes)、情報処理装置100は、ステップS1802の処理に移行する。
【0158】
ステップS1802では、情報処理装置100は、選択したVMを、対象VMに設定する(ステップS1802)。次に、情報処理装置100は、対象VMを含むシステムの負荷変動依頼を、直接、または、管理装置201を介して、対象VMを起動中のリソース装置202に送信する(ステップS1803)。そして、情報処理装置100は、負荷変動中の、新規VMに関する稼働データと、対象VMに関する稼働データとを収集する(ステップS1804)。
【0159】
次に、情報処理装置100は、新規VMと、対象VMとの負荷傾向が一致するか否かを判定する(ステップS1805)。ここで、負荷傾向が一致しない場合(ステップS1805:No)、情報処理装置100は、ステップS1806の処理に移行する。一方で、負荷傾向が一致する場合(ステップS1805:Yes)、情報処理装置100は、ステップS1807の処理に移行する。
【0160】
ステップS1806では、情報処理装置100は、選択したVMを、処理済みに設定する(ステップS1806)。そして、情報処理装置100は、ステップS1809の処理に移行する。
【0161】
ステップS1807では、情報処理装置100は、新規VMを、対象VMと同一のアプリIDに対応付ける(ステップS1807)。そして、情報処理装置100は、全体処理を終了する。
【0162】
ステップS1808では、情報処理装置100は、選択したVMを、処理済みに設定する(ステップS1808)。次に、情報処理装置100は、すべてのVMを処理済みか否かを判定する(ステップS1809)。ここで、すべてのVMを処理済みではない場合(ステップS1809:No)、情報処理装置100は、ステップS1801の処理に戻る。一方で、すべてのVMを処理済みである場合(ステップS1809:Yes)、情報処理装置100は、ステップS1810の処理に移行する。
【0163】
ステップS1810では、情報処理装置100は、1/nの確率で、処理を継続するか否かを判定する(ステップS1810)。ここで、処理を継続する場合(ステップS1810:Yes)、情報処理装置100は、
図17のステップS1703の処理に戻る。一方で、処理を継続しない場合(ステップS1810:No)、情報処理装置100は、全体処理を終了する。
【0164】
図19において、情報処理装置100は、受信した稼働データに関わるVMが、再対応付けVMであるか否かを判定する(ステップS1901)。ここで、再対応付けVMである場合(ステップS1901:Yes)、情報処理装置100は、ステップS1902の処理に移行する。一方で、再対応付けVMではない場合(ステップS1901:No)、情報処理装置100は、ステップS1903の処理に移行する。
【0165】
ステップS1902では、情報処理装置100は、同一のVMについて、ステップS1901の処理を行った回数が、N回以上であるか否かを判定する(ステップS1902)。ここで、N回以上である場合(ステップS1902:Yes)、情報処理装置100は、全体処理を終了する。一方で、N回未満である場合(ステップS1902:No)、情報処理装置100は、再対応付けVMを、新規VMとして設定し、
図17のステップS1703の処理に戻る。
【0166】
ステップS1903では、情報処理装置100は、再対応付けVMと、再対応付けVMに対応付けられた他のVMとの負荷傾向が一致するか否かを判定する(ステップS1903)。ここで、負荷傾向が一致する場合(ステップS1903:Yes)、情報処理装置100は、全体処理を終了する。一方で、負荷傾向が一致しない場合(ステップS1903:No)、情報処理装置100は、再対応付けVMと、他のVMとの対応付けを解消する(ステップS1904)。そして、情報処理装置100は、全体処理を終了する。
【0167】
(集約処理手順)
次に、
図20を用いて、管理装置201が実行する、集約処理手順の一例について説明する。集約処理は、例えば、
図9に示したCPU901と、メモリ902や記録媒体905などの記憶領域と、ネットワークI/F903とによって実現される。
【0168】
図20は、集約処理手順の一例を示すフローチャートである。
図20において、管理装置201は、稼働データの集約依頼を受信したか否かを判定する(ステップS2001)。ここで、集約依頼を受信していない場合(ステップS2001:No)、管理装置201は、ステップS2001の処理に戻る。一方で、集約依頼を受信している場合(ステップS2001:Yes)、管理装置201は、ステップS2002の処理に移行する。
【0169】
ステップS2002では、管理装置201は、稼働データの収集依頼を、自装置が属するリージョン220内のそれぞれのVMに送信する(ステップS2002)。次に、管理装置201は、稼働データを受信したか否かを判定する(ステップS2003)。ここで、稼働データを受信していない場合(ステップS2003:No)、管理装置201は、ステップS2003の処理に戻る。一方で、稼働データを受信している場合(ステップS2003:Yes)、管理装置201は、ステップS2004の処理に移行する。
【0170】
ステップS2004では、管理装置201は、受信済みの稼働データを集約する(ステップS2004)。次に、管理装置201は、自装置が属するリージョン220内のすべてのVMについて稼働データを受信したか否かを判定する(ステップS2005)。ここで、すべてのVMについて稼働データを受信していない場合(ステップS2005:No)、管理装置201は、ステップS2003の処理に戻る。一方で、すべてのVMについて稼働データを受信している場合(ステップS2005:Yes)、管理装置201は、ステップS2006の処理に移行する。
【0171】
ステップS2006では、管理装置201は、集約された稼働データを、情報処理装置100に送信する(ステップS2006)。そして、管理装置201は、集約処理を終了する。
【0172】
(計測処理手順)
次に、
図21を用いて、リソース装置202が、VMにより実行する、計測処理手順の一例について説明する。計測処理は、例えば、
図4に示したCPU401と、メモリ402や記録媒体405などの記憶領域と、ネットワークI/F403とによって実現される。
【0173】
図21は、計測処理手順の一例を示すフローチャートである。
図21において、リソース装置202は、稼働データの収集依頼を受信したか否かを判定する(ステップS2101)。ここで、収集依頼を受信していない場合(ステップS2101:No)、リソース装置202は、ステップS2101の処理に戻る。一方で、収集依頼を受信している場合(ステップS2101:Yes)、リソース装置202は、ステップS2102の処理に移行する。
【0174】
ステップS2102では、リソース装置202は、稼働データを収集し、収集した稼働データを管理装置201に送信する(ステップS2102)。次に、リソース装置202は、負荷変動依頼を受信したか否かを判定する(ステップS2103)。ここで、負荷変動依頼を受信していない場合(ステップS2103:No)、リソース装置202は、ステップS2101の処理に戻る。一方で、負荷変動依頼を受信している場合(ステップS2103:Yes)、リソース装置202は、ステップS2104の処理に移行する。
【0175】
ステップS2104では、リソース装置202は、負荷変動を実施する(ステップS2104)。そして、リソース装置202は、計測処理を終了する。
【0176】
以上説明したように、情報処理装置100によれば、複数のリソースクラスタのうちの第1のリソースクラスタ内で、新たに第1のVMが起動されたことを検出することができる。情報処理装置100によれば、第1のVMが起動されたことを検出した場合、複数のリソースクラスタのうち、第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、第2のリソースクラスタを選択することができる。情報処理装置100によれば、第1のVMに関する稼働データと、選択した第2のリソースクラスタ内で起動中の第2のVMに関する稼働データとの類似度に基づいて、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを判定することができる。これにより、情報処理装置100は、第1のVM上で実行中の処理の引継元を特定することができる。また、情報処理装置100は、第1のVM上で実行中の処理の引継元を特定する際にかかる通信量、処理量、および、処理時間の低減化を図ることができる。
【0177】
情報処理装置100によれば、第1のVMに関する稼働データと、第2のリソースクラスタ内で起動中のそれぞれのVMに関する稼働データとの類似度に基づいて、第1のVM上で実行中の処理の引継元が、それぞれのVMであるか否かを判定することができる。これにより、情報処理装置100は、第2のリソースクラスタ内で起動中のVM全体から、第1のVM上で実行中の処理の引継元を特定することができる。また、情報処理装置100は、第1のVM上で実行中の処理の引継元を特定する際にかかる通信量、処理量、および、処理時間の低減化を図ることができる。
【0178】
情報処理装置100によれば、選択した第2のリソースクラスタを管理する装置から、第2のリソースクラスタ内で起動中のそれぞれのVMに関する稼働データを纏めて取得することができる。これにより、情報処理装置100は、第2のリソースクラスタ内のそれぞれのリソース装置202と通信しなくても、第2のリソースクラスタ内で起動中のそれぞれのVMに関する稼働データを収集することができる。このため、情報処理装置100は、ネットワーク上のトラフィック量の増大化を抑制することができる。
【0179】
情報処理装置100によれば、第1のVM上で実行中の処理の引継元が、選択した第2のリソースクラスタ内で起動中のいずれのVMでもないと判定された場合、第2のリソースクラスタを選択し直すことができる。これにより、情報処理装置100は、第1のVM上で実行中の処理の引継元を特定しやすくすることができる。情報処理装置100は、例えば、選択済みの第2のリソースクラスタ以外で、新たに選択した第2のリソースクラスタ内で、第1のVM上で実行中の処理の引継元を探索することができる。
【0180】
情報処理装置100によれば、第2のリソースクラスタを選択した回数に基づいて、第2のリソースクラスタを選択し直すか否かを決定することができる。これにより、情報処理装置100は、第1のVM上で実行中の処理の引継元となるVMを起動している確率が相対的に低いと判断されるリソースクラスタを、第2のリソースクラスタに選択せずに済むようにすることができる。このため、情報処理装置100は、通信量、処理量、および、処理時間の低減化を図ることができる。
【0181】
情報処理装置100によれば、第2のリソースクラスタを選択し直す際、まだ選択されていないリソースクラスタの中から、第1のリソースクラスタとの通信遅延が最も小さいリソースクラスタを、第2のリソースクラスタに選択することができる。これにより、情報処理装置100は、第1のVM上で実行中の処理の引継元となるVMを起動中である確率が高いと判断されるリソースクラスタが、第2のリソースクラスタに選択されやすくすることができる。結果として、情報処理装置100は、第1のVM上で実行中の処理の引継元を特定しやすくすることができる。
【0182】
情報処理装置100によれば、第1のVMに関する稼働データと、第2のVMに関する稼働データとの類似度が閾値以上であるか否かを判定することができる。情報処理装置100によれば、閾値以上と判定した場合、第2のVMが属するシステムの負荷を変動させた際の、第1のVMに関する新たな稼働データと、第2のVMに関する新たな稼働データとを取得することができる。情報処理装置100によれば、第1のVMに関する新たな稼働データと、第2のVMに関する新たな稼働データとの類似度が閾値以上であると判定した場合、第1のVM上で実行中の処理の引継元が、第2のVMであると判定することができる。これにより、情報処理装置100は、定常的な稼働データ以外に、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを判定する用途に適した、新たな各種稼働データを取得することができる。そして、情報処理装置100は、取得した新たな各種稼働データに基づいて、第1のVM上で実行中の処理の引継元が、第2のVMであるか否かを精度よく判定することができる。
【0183】
情報処理装置100によれば、第1のVM上で実行中の処理の引継元が、第2のVMであると判定した場合、第1のVMと、第2のVMとを対応付けて表す対応情報を記憶することができる。これにより、情報処理装置100は、関連する処理を実行中のVMを対応付けておくことができ、新たに起動されたVMが、いずれのVMから引き継いだ処理を実行中のVMであるかを把握可能にすることができる。
【0184】
情報処理装置100によれば、異なる2つのVMを対応付けて表す対応情報を記憶している場合、2つのVMのそれぞれのVMに関する稼働データの類似度に基づいて、2つのVMを対応付けて表す対応情報を削除するか否かを決定することができる。これにより、情報処理装置100は、関連する処理を分担して実行しなくなった2つのVMの対応付けを解除することができる。このため、情報処理装置100は、いずれのVMに、いずれのアプリ内の処理が対応するかの構成を示す情報を、最新の状態に更新することができ、システムを管理および運用しやすくすることができる。
【0185】
情報処理装置100によれば、複数のリソースクラスタのうち、第1のリソースクラスタを管理する装置と、他のリソースクラスタを管理する装置とのレイテンシに基づいて、第2のリソースクラスタを選択することができる。これにより、情報処理装置100は、第1のVM上で実行中の処理の引継元となるVMを起動中である確率が高いと判断されるリソースクラスタが、第2のリソースクラスタに選択されやすくすることができる。
【0186】
情報処理装置100によれば、複数のリソースクラスタのうち、第1のリソースクラスタを管理する装置と、他のリソースクラスタを管理する装置との物理的距離に基づいて、第2のリソースクラスタを選択することができる。これにより、情報処理装置100は、レイテンシを計測しなくても済むようにすることができ、ネットワーク上のトラフィック量の低減化を図ることができる。
【0187】
なお、本実施の形態で説明した引継元特定方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した引継元特定プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した引継元特定プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0188】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0189】
(付記1)複数のリソースクラスタのうちの第1のリソースクラスタ内で、新たに第1の仮想マシンが起動されたことを検出し、
前記第1の仮想マシンが起動されたことを検出した場合、前記複数のリソースクラスタのうち、前記第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、第2のリソースクラスタを選択し、
前記第1の仮想マシンに関する稼働データと、選択した前記第2のリソースクラスタ内で起動中の第2の仮想マシンに関する稼働データとの類似度に基づいて、前記第1の仮想マシン上で実行中の処理の引継元が、前記第2の仮想マシンであるか否かを判定する、
処理をコンピュータが実行することを特徴とする引継元特定方法。
【0190】
(付記2)前記判定する処理は、
前記第1の仮想マシンに関する稼働データと、選択した前記第2のリソースクラスタ内で起動中のそれぞれの仮想マシンに関する稼働データとの類似度に基づいて、前記第1の仮想マシン上で実行中の処理の引継元が、前記それぞれの仮想マシンであるか否かを判定する、ことを特徴とする付記1に記載の引継元特定方法。
【0191】
(付記3)選択した前記第2のリソースクラスタを管理する装置から、前記第2のリソースクラスタ内で起動中のそれぞれの仮想マシンに関する稼働データを纏めて取得する、処理を前記コンピュータが実行する、ことを特徴とする付記2に記載の引継元特定方法。
【0192】
(付記4)前記選択する処理は、
前記第1の仮想マシン上で実行中の処理の引継元が、選択した前記第2のリソースクラスタ内で起動中のいずれの仮想マシンでもないと判定された場合、前記複数のリソースクラスタのうち、前記第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、前記複数のリソースクラスタのうち、まだ選択されていないリソースクラスタの中から、前記第2のリソースクラスタを選択し直す、ことを特徴とする付記1~3のいずれか一つに記載の引継元特定方法。
【0193】
(付記5)前記選択する処理は、
前記第2のリソースクラスタを選択した回数に基づいて、前記第2のリソースクラスタを選択し直すか否かを決定する、ことを特徴とする付記4に記載の引継元特定方法。
【0194】
(付記6)前記選択する処理は、
前記第2のリソースクラスタを選択し直す際、前記複数のリソースクラスタのうち、まだ選択されていないリソースクラスタの中から、前記第1のリソースクラスタとの通信遅延が最も小さいリソースクラスタを、前記第2のリソースクラスタに選択する、ことを特徴とする付記4または5に記載の引継元特定方法。
【0195】
(付記7)前記判定する処理は、
前記第1の仮想マシンに関する稼働データと、前記第2の仮想マシンに関する稼働データとの類似度が閾値以上であると判定した場合、前記第2の仮想マシンが属するシステムの負荷を変動させた際の、前記第1の仮想マシンに関する新たな稼働データと、前記第2の仮想マシンに関する新たな稼働データとを取得し、
前記第1の仮想マシンに関する新たな稼働データと、前記第2の仮想マシンに関する新たな稼働データとの類似度が閾値以上であると判定した場合、前記第1の仮想マシン上で実行中の処理の引継元が、前記第2の仮想マシンであると判定する、ことを特徴とする付記1~6のいずれか一つに記載の引継元特定方法。
【0196】
(付記8)前記第1の仮想マシン上で実行中の処理の引継元が、前記第2の仮想マシンであると判定した場合、前記第1の仮想マシンと、前記第2の仮想マシンとを対応付けて表す対応情報を記憶する、ことを特徴とする付記1~7のいずれか一つに記載の引継元特定方法。
【0197】
(付記9)異なる2つの仮想マシンを対応付けて表す対応情報を記憶している場合、前記2つの仮想マシンのそれぞれの仮想マシンに関する稼働データの類似度に基づいて、前記2つの仮想マシンを対応付けて表す対応情報を削除するか否かを決定する、ことを特徴とする付記1~8のいずれか一つに記載の引継元特定方法。
【0198】
(付記10)前記選択する処理は、
前記複数のリソースクラスタのうち、前記第1のリソースクラスタを管理する装置と、他のリソースクラスタを管理する装置とのレイテンシに基づいて、前記第2のリソースクラスタを選択する、ことを特徴とする付記1~9のいずれか一つに記載の引継元特定方法。
【0199】
(付記11)前記選択する処理は、
前記複数のリソースクラスタのうち、前記第1のリソースクラスタを管理する装置と、他のリソースクラスタを管理する装置との物理的距離に基づいて、前記第2のリソースクラスタを選択する、ことを特徴とする付記1~9のいずれか一つに記載の引継元特定方法。
【0200】
(付記12)複数のリソースクラスタのうちの第1のリソースクラスタ内で、新たに第1の仮想マシンが起動されたことを検出し、
前記第1の仮想マシンが起動されたことを検出した場合、前記複数のリソースクラスタのうち、前記第1のリソースクラスタと、他のリソースクラスタとの通信遅延を表す指標値に基づいて、第2のリソースクラスタを選択し、
前記第1の仮想マシンに関する稼働データと、選択した前記第2のリソースクラスタ内で起動中の第2の仮想マシンに関する稼働データとの類似度に基づいて、前記第1の仮想マシン上で実行中の処理の引継元が、前記第2の仮想マシンであるか否かを判定する、
処理をコンピュータに実行させることを特徴とする引継元特定プログラム。
【符号の説明】
【0201】
100 情報処理装置
200 情報処理システム
201 管理装置
202 リソース装置
210 ネットワーク
220 リージョン
400,700,900 バス
401,701,901 CPU
402,702,902 メモリ
403,703,903 ネットワークI/F
404,704,904 記録媒体I/F
405,705,905 記録媒体
406,706 ディスプレイ
407,707 入力装置
500 距離情報管理テーブル
600 構成情報管理テーブル
800 リージョン情報管理テーブル
1000,1010 記憶部
1001 稼働データ収集部
1002 負荷傾向解析部
1003 負荷変動制御部
1011 稼働データ送信部
1021 稼働データ計測部
1022 負荷実行部