IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7401776制御方法、制御プログラムおよび情報処理装置
<>
  • 特許-制御方法、制御プログラムおよび情報処理装置 図1
  • 特許-制御方法、制御プログラムおよび情報処理装置 図2
  • 特許-制御方法、制御プログラムおよび情報処理装置 図3
  • 特許-制御方法、制御プログラムおよび情報処理装置 図4
  • 特許-制御方法、制御プログラムおよび情報処理装置 図5
  • 特許-制御方法、制御プログラムおよび情報処理装置 図6
  • 特許-制御方法、制御プログラムおよび情報処理装置 図7
  • 特許-制御方法、制御プログラムおよび情報処理装置 図8
  • 特許-制御方法、制御プログラムおよび情報処理装置 図9
  • 特許-制御方法、制御プログラムおよび情報処理装置 図10
  • 特許-制御方法、制御プログラムおよび情報処理装置 図11
  • 特許-制御方法、制御プログラムおよび情報処理装置 図12
  • 特許-制御方法、制御プログラムおよび情報処理装置 図13
  • 特許-制御方法、制御プログラムおよび情報処理装置 図14
  • 特許-制御方法、制御プログラムおよび情報処理装置 図15
  • 特許-制御方法、制御プログラムおよび情報処理装置 図16
  • 特許-制御方法、制御プログラムおよび情報処理装置 図17
  • 特許-制御方法、制御プログラムおよび情報処理装置 図18
  • 特許-制御方法、制御プログラムおよび情報処理装置 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-12
(45)【発行日】2023-12-20
(54)【発明の名称】制御方法、制御プログラムおよび情報処理装置
(51)【国際特許分類】
   G06F 9/48 20060101AFI20231213BHJP
   G06F 9/455 20180101ALI20231213BHJP
【FI】
G06F9/48 300H
G06F9/455 150
【請求項の数】 8
(21)【出願番号】P 2020085396
(22)【出願日】2020-05-14
(65)【公開番号】P2021179853
(43)【公開日】2021-11-18
【審査請求日】2023-02-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】小林 宏次
(72)【発明者】
【氏名】加藤 新吾
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2013-152513(JP,A)
【文献】特開2004-264994(JP,A)
【文献】特開2016-170670(JP,A)
【文献】特開2013-148950(JP,A)
【文献】特開2009-134598(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
第1の情報処理装置と複数の仮想マシンを動作させる1以上の第2の情報処理装置とを含むシステムで実行される仮想マシンの制御方法において、
前記第1の情報処理装置または前記複数の仮想マシンそれぞれが、前記仮想マシンを特定する特定情報を取得すると、前記特定情報を入力とするハッシュ関数の関数値を算出し、
前記複数の仮想マシンそれぞれが、自仮想マシンに対応する前記関数値に基づくタイミングで、前記第1の情報処理装置に情報を送信する、
制御方法。
【請求項2】
前記情報は、前記仮想マシンによる特定処理の実行権限の有効期限を延長する申請である、請求項1記載の制御方法。
【請求項3】
前記第1の情報処理装置または前記複数の仮想マシンそれぞれが、所定期間に属する、前記関数値に対応する時刻を、前記仮想マシンにより前記情報を送信する前記タイミングと決定する、請求項1記載の制御方法。
【請求項4】
前記システムは、前記第2の情報処理装置を有するクラウドサービスシステムを含み、
前記特定情報は、前記クラウドサービスシステムが前記仮想マシンごとに一意に付与する前記仮想マシンの第1の識別情報であるか、または、前記クラウドサービスシステムが提供するクラウドサービスの利用契約ごとに前記クラウドサービスシステムが一意に付与する第2の識別情報と前記仮想マシンに対してユーザが付与する仮想マシン名とを含む組合せ情報である、
請求項1記載の制御方法。
【請求項5】
コンピュータに、
1以上の情報処理装置で動作する複数の仮想マシンそれぞれから仮想マシンを特定する特定情報を取得すると、前記特定情報を入力とするハッシュ関数の関数値を算出し、
前記複数の仮想マシンそれぞれに対応する前記関数値に基づいて、当該仮想マシンから前記コンピュータに情報を送信するタイミングを、前記複数の仮想マシンそれぞれに対して指示する、
処理を実行させる制御プログラム。
【請求項6】
コンピュータに、
前記コンピュータで動作する仮想マシンを特定する特定情報を取得すると、前記特定情報を入力とするハッシュ関数の関数値を算出し、
前記仮想マシンから、前記仮想マシンを含む複数の仮想マシンの情報を収集する情報処理装置へ、前記関数値に基づくタイミングで前記情報を送信する、
処理を実行させる制御プログラム。
【請求項7】
1以上の他の情報処理装置で動作する複数の仮想マシンそれぞれから取得された、仮想マシンを特定する特定情報を記憶する記憶部と、
前記特定情報を入力とするハッシュ関数の関数値を算出し、前記複数の仮想マシンそれぞれに対応する前記関数値に基づいて、当該仮想マシンから自装置に情報を送信するタイミングを、前記複数の仮想マシンそれぞれに対して指示する処理部と、
を有する情報処理装置。
【請求項8】
自装置で動作する仮想マシンにより取得された、前記仮想マシンを特定する特定情報を記憶する記憶部と、
前記特定情報を入力とするハッシュ関数の関数値を算出し、前記仮想マシンから、前記仮想マシンを含む複数の仮想マシンの情報を収集する他の情報処理装置へ、前記関数値に基づくタイミングで前記情報を送信する処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は制御方法、制御プログラムおよび情報処理装置に関する。
【背景技術】
【0002】
情報処理の分野では、物理的なコンピュータ(物理マシンや物理ホストと呼ぶことがある)上で、複数の仮想的なコンピュータ(仮想マシンや仮想ホストと呼ぶことがある)を動作させる仮想化技術が利用されている。各仮想マシン上では、OS(Operating System)などのソフトウェアを実行できる。また、情報処理システムでは比較的多くの仮想マシンが実行され得る。
【0003】
ところで、情報処理システムでは、サーバコンピュータなどの情報処理装置が、複数のクライアントコンピュータから所定の処理の要求を受け付けたり、情報の収集を行ったりすることがある。
【0004】
例えば、ホストコンピュータより新聞記事などの情報をダウンロードする自動通信装置の提案がある。提案の自動通信装置は、設定した収集日時に対し、ユーザの個人情報あるいは当該装置に固有の番号を用いて、ネットワーク回線を介してホストコンピュータとの通信を開始する日時を演算により決定する。
【0005】
また、ユーザにより選択された時間範囲内において乱数によりコンテンツサーバへのダウンロード要求タイミングを決定し、決定したダウンロード要求タイミングに従って、ダウンロード要求情報をコンテンツサーバに送信するコンピュータの提案もある。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2001-75909号公報
【文献】特開2003-208376号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
情報処理装置が複数の仮想マシンから情報を受信することがある。この場合、複数の仮想マシンによる情報の送信が比較的短い時間内に集中すると、情報を受信する情報処理装置の負荷が増大する。
【0008】
1つの側面では、本発明は、負荷集中を軽減できる制御方法、制御プログラムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、第1の情報処理装置と複数の仮想マシンを動作させる1以上の第2の情報処理装置とを含むシステムで実行される仮想マシンの制御方法が提供される。この制御方法では、第1の情報処理装置または複数の仮想マシンそれぞれが、当該仮想マシンを特定する特定情報を取得すると、特定情報を入力とするハッシュ関数の関数値を算出し、複数の仮想マシンそれぞれが、自仮想マシンに対応する関数値に基づくタイミングで、第1の情報処理装置に情報を送信する。
【0010】
また、1つの態様では、制御プログラムが提供される。
また、1つの態様では、情報処理装置が提供される。
【発明の効果】
【0011】
1つの側面では、負荷集中を軽減できる。
【図面の簡単な説明】
【0012】
図1】第1の実施の形態の情報処理装置の処理例を示す図である。
図2】第2の実施の形態の情報処理システムの例を示す図である。
図3】管理サーバのハードウェア例を示す図である。
図4】仮想化機構の例を示す図である。
図5】VMの識別に用いられる情報の例を示す図である。
図6】管理サーバによるデータ取得例を示す図である。
図7】管理サーバの機能例を示す図である。
図8】VMの機能例を示す図である。
図9】アクセス権限管理テーブルの例を示す図である。
図10】要求時刻データの例を示す図である。
図11】VMの処理例を示すフローチャートである。
図12】管理サーバの要求時刻提供の処理例を示すフローチャートである。
図13】管理サーバのアクセス権限更新の処理例を示すフローチャートである。
図14】VM固有情報およびハッシュ値の例を示す図である。
図15】ハッシュ値を時刻に変換する例を示す図である。
図16】要求の分散の例を示す図である。
図17】第3の実施の形態の管理サーバの機能例を示す図である。
図18】VMの機能例を示す図である。
図19】VMの処理例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0014】
図1は、第1の実施の形態の情報処理装置の処理例を示す図である。
システム1は、情報処理装置10,20を含む。情報処理装置10,20は、ネットワークを介して接続される。情報処理装置10は、システム1で動作する複数の仮想マシンから情報を受信する。情報処理装置20は、複数の仮想マシンを実行する。システム1は、それぞれが1以上の仮想マシンを動作させる複数の情報処理装置を含んでもよい。
【0015】
情報処理装置10は、記憶部11および処理部12を有する。情報処理装置20は、記憶部21および処理部22を有する。
記憶部11,21は、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12,22は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
【0016】
例えば、情報処理装置20では、処理部22によりハイパーバイザと呼ばれるソフトウェアが実行され、ハイパーバイザの機能により、記憶部21や処理部22のリソースが、情報処理装置20上の仮想マシンに割り当てられる。情報処理装置20は、仮想マシン31,32,33,…を実行する。
【0017】
システム1では、仮想マシン31,32,33,…それぞれから情報処理装置10に対して、特定の処理の要求など、所定の情報が送信されることがある。システム1では、仮想マシン31,32,33,…それぞれから情報処理装置10に対する情報の送信のタイミングが、次のように制御される。
【0018】
まず、仮想マシン31,32,33,…それぞれは、仮想マシン31,32,33,…の作成や起動/停止などを制御する制御装置(図1では図示を省略している)から、自仮想マシンを特定する特定情報を取得する。特定情報は、システム1の中で、仮想マシンを一意に識別する情報である。特定情報の例は、当該管理装置における仮想マシンの管理方法による。例えば、特定情報は、仮想マシン単位に一意に付与される仮想マシンID(IDentifier)でもよい。あるいは、特定情報は、例えば仮想マシン31,32,33,…がクラウドサービスシステムにより提供されるものである場合、クラウドサービスの利用に関する契約を示す契約IDとユーザが仮想マシンに付与した名称とを含む組合せ情報でもよい。
【0019】
例えば、仮想マシン31は、仮想マシン31を特定する特定情報k1を取得する。仮想マシン32は、仮想マシン32を特定する特定情報k2を取得する。仮想マシン33は、仮想マシン33を特定する特定情報k3を取得する。他の仮想マシンも、自仮想マシンを特定する特定情報を取得する。取得された特定情報は記憶部21に格納される。
【0020】
第1の例では、仮想マシン31,32,33,…は、それぞれ特定情報k1,k2,k3,…を取得すると、それぞれ取得した特定情報k1,k2,k3,…を情報処理装置10に送信する。この場合、仮想マシン31,32,33,…それぞれによる特定情報の取得および情報処理装置10への特定情報の送信は、該当の仮想マシンが作成され起動されたときに実行される。仮想マシン31,32,33,…それぞれが作成され起動されるタイミングは、互いに異なることが多いため、情報処理装置10への特定情報k1,k2,k3,…の送信は、互いに異なるタイミングで行われる可能性が高い。
【0021】
情報処理装置10は、仮想マシン31,32,33,…それぞれから、当該仮想マシンを特定する特定情報を取得する。取得された特定情報は記憶部11に格納される。情報処理装置10は、特定情報を取得すると、当該特定情報を入力とするハッシュ関数の関数値を算出する。
【0022】
ここで、変数をxとして、ハッシュ関数をhash(x)と表す。ハッシュ関数hash(x)には、例えば、SHA-256(Secure Hash Algorithm 256-bits)やMD5(message digest algorithm 5)などを用いることができる。ハッシュ関数の関数値は、ハッシュ値と呼ばれることがある。
【0023】
例えば、処理部12は、仮想マシン31から特定情報k1を取得すると、特定情報k1を入力とするハッシュ関数の関数値hash(k1)を算出する。更に、処理部12は、関数値hash(x)を時刻に変換する関数f(hash(x))を用いて、関数値hash(k1)に対応する時刻time1=f(hash(k1))を求める。処理部12は、求めた時刻time1を仮想マシン31に送信する。
【0024】
ここで、関数f(hash(x))は、関数値hash(x)を、特定期間に含まれる何れかの時刻に対応付ける関数である。例えば、関数f(hash(x))は、1つの関数値hash(x)を当該特定期間に含まれる1つの時刻に一意に対応付けるものでもよいし、2つ以上の一定数の関数値hash(x)を当該特定期間に含まれる1つの時刻に対応付けるものでもよい。例えば、MD5では128ビットの関数値であり、SHA-256では256ビットの関数値となる。このため、仮想マシンの数が比較的多く(例えば、10000程度)、特定期間の長さが比較的短い(例えば、1週間程度)場合であっても、2つ以上の特定情報xに対して、関数f(hash(x))で求められる時刻が衝突する可能性は低い。
【0025】
処理部12は、仮想マシン32に対して、時刻time2=f(hash(k2))を提供する。処理部12は、仮想マシン33に対して、時刻time3=f(hash(k3))を提供する。処理部12は、他の仮想マシンに対しても、当該他の仮想マシンの特定情報を入力としたハッシュ関数の関数値に対応する時刻を提供する。
【0026】
このように、第1の例では、処理部12は、複数の仮想マシンそれぞれに対応する関数値に基づいて、当該仮想マシンから情報処理装置10に情報を送信するタイミングを、複数の仮想マシンそれぞれに対して指示する。
【0027】
第2の例として、情報処理装置10ではなく、仮想マシン31,32,33,…それぞれが、自仮想マシンの特定情報を入力とするハッシュ関数の関数値と、当該関数値に対応する時刻とを求めてもよい。なお、仮想マシン31,32,33,…それぞれにより実行される処理は、処理部22により実行される処理であると言える。
【0028】
例えば、仮想マシン31は、取得した特定情報k1に基づいて、時刻time1=f(hash(k1))を求めてもよい。また、仮想マシン32は、取得した特定情報k2に基づいて、時刻time2=f(hash(k2))を求めてもよい。更に、仮想マシン33は、取得した特定情報k3に基づいて、時刻time3=f(hash(k3))を求めてもよい。他の仮想マシンも同様である。第2の例の場合、仮想マシン31,32,33,…は、情報処理装置10に特定情報を送信しなくてよい。
【0029】
仮想マシン31,32,33,…それぞれは、自仮想マシンに対応するハッシュ関数の関数値に基づくタイミングで、情報処理装置10に情報を送信する。
例えば、仮想マシン31は、時刻time1に達したことを検出すると、情報処理装置10に情報を送信する。仮想マシン32は、時刻time2に達したことを検出すると、情報処理装置10に情報を送信する。仮想マシン33は、時刻time3に達したことを検出すると、情報処理装置10に情報を送信する。
【0030】
このように、情報処理装置10または仮想マシン31,32,33,…それぞれにより、当該仮想マシンを特定する特定情報が取得されると、特定情報を入力とするハッシュ関数の関数値が算出される。仮想マシン31,32,33,…により、自仮想マシンに対応する関数値に基づくタイミングで、情報処理装置10に情報が送信される。
【0031】
これにより、情報処理装置10における負荷集中を軽減できる。
すなわち、ハッシュ関数hash(x)により、仮想マシンの特定情報xに対して、十分に分散したハッシュ値を得ることができる。このため、当該ハッシュ値に基づくタイミングで、仮想マシン31,32,33,…それぞれから情報処理装置10への情報の送信を行うことで、仮想マシン31,32,33,…それぞれによる送信タイミングを適切に分散させることができる。例えば、仮想マシン31,32,33,…による送信タイミングを示す時刻time1,time2,time3,…を適切に分散させることができる。よって、比較的短い期間のうちに、仮想マシン31,32,33,…から情報処理装置10へ大量の情報が集中的に送信される可能性が低減される。その結果、情報処理装置10における負荷集中を軽減することができる。
【0032】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
【0033】
第2の実施の形態の情報処理システムは、クラウドサービスシステム2,3、クラウドストレージ4および管理サーバ100を有する。クラウドサービスシステム2,3、クラウドストレージ4および管理サーバ100は、ネットワーク5に接続されている。ネットワーク5は、例えばインターネットである。
【0034】
クラウドサービスシステム2,3は、ユーザに対してクラウドサービスを提供するコンピュータシステムである。クラウドサービスシステム2は、物理マシン200,200aを含む。クラウドサービスシステム3は、物理マシン300,300aを含む。ただし、クラウドサービスシステム2,3は、それぞれ3以上の物理マシンを含み得る。クラウドサービスの例としては、Azure(登録商標)やAWS(登録商標)などが挙げられる。
【0035】
物理マシン200,300は、複数の仮想マシンを実行するサーバコンピュータである。
物理マシン200a,300aは、それぞれ物理マシン200,300に対する仮想マシンの作成や起動/停止を制御するサーバコンピュータである。
【0036】
クラウドストレージ4は、クラウドサービスシステム2,3で動作する複数の仮想マシンおよび管理サーバ100によりアクセス可能なストレージ装置である。
クラウドサービスシステム2,3およびクラウドストレージ4を提供する事業者(ベンダー)は同じでもよいし異なっていてもよい。ユーザは、クラウドサービスシステム2,3が提供する複数の仮想マシンを連携させて、種々のアプリケーションを構築することができる。このように、複数のクラウドサービスシステムを用いたユーザのアプリケーションの構築環境あるいは運用環境は、マルチクラウドと呼ばれることがある。
【0037】
管理サーバ100は、クラウドサービスシステム2,3で動作する複数の仮想マシンを管理するサーバコンピュータである。管理サーバ100は、当該複数の仮想マシンそれぞれの稼働状況の管理や、当該複数の仮想マシンそれぞれによるクラウドストレージ4に対するアクセス権限の管理を行う。管理サーバ100を提供する事業者は、クラウドサービスシステム2,3およびクラウドストレージ4を提供する事業者と同じでもよいし異なっていてもよい。
【0038】
ここで、第2の実施の形態の情報処理システムは、第1の実施の形態のシステム1の一例である。管理サーバ100は、第1の実施の形態の情報処理装置10の一例である。物理マシン200,300は、第1の実施の形態の情報処理装置20の一例である。
【0039】
図3は、管理サーバのハードウェア例を示す図である。
管理サーバ100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106およびNIC(Network Interface Card)107を有する。なお、CPU101は、第1の実施の形態の処理部12の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
【0040】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、管理サーバ100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0041】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、管理サーバ100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0042】
HDD103は、OSやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、管理サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0043】
画像信号処理部104は、CPU101からの命令に従って、管理サーバ100に接続されたディスプレイ51に画像を出力する。ディスプレイ51としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0044】
入力信号処理部105は、管理サーバ100に接続された入力デバイス52から入力信号を取得し、CPU101に出力する。入力デバイス52としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、管理サーバ100に、複数の種類の入力デバイスが接続されていてもよい。
【0045】
媒体リーダ106は、記録媒体53に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体53として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0046】
媒体リーダ106は、例えば、記録媒体53から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体53は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体53やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0047】
NIC107は、スイッチやルータなどの通信装置を介してネットワーク5に接続され、ネットワーク5を介して他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
【0048】
なお、物理マシン200,200a,300,300aも、管理サーバ100と同様のハードウェアにより実現される。
図4は、仮想化機構の例を示す図である。
【0049】
物理マシン200は、ハードウェアhw1を有する。物理マシン200は、ハードウェアhw1を用いて、ハイパーバイザhv1および仮想マシン201,202を動作させる。物理マシン200上では、1つの仮想マシンが動作することもあるし、3以上の仮想マシンが動作することもある。
【0050】
ハードウェアhw1は、物理マシン200におけるデータ入出力や演算のための物理リソースである。ハードウェアhw1は、物理マシン200が備えるCPUやRAMなどを含む。
【0051】
ハイパーバイザhv1は、物理マシン200のハードウェアhw1を、仮想マシン201,202に割り振ることで、物理マシン200上に、仮想マシン201,202を動作させる。ハイパーバイザhv1は、仮想マシン201,202の通信を中継する仮想スイッチの機能を有する。
【0052】
仮想マシン201,202は、ハードウェアhw1のリソースを用いて動作する仮想的なコンピュータである。
なお、物理マシン300も、物理マシン200と同様に、1以上の仮想マシンを実行する。
【0053】
また、図4で例示した仮想化機構は一例であり、例えば、ハイパーバイザhv1に相当するソフトウェアが、物理マシン200のOS上で実行されて、仮想マシン201,202を動作させてもよい。以下の説明では、仮想マシンを、VM(Virtual Machine)と略記することがある。
【0054】
図5は、VMの識別に用いられる情報の例を示す図である。
例えば、クラウドサービスシステム2,3では、ユーザによる利用の契約の単位で、次の情報によりVMが識別される。
【0055】
1つの契約単位は、サブスクリプションと呼ばれる。サブスクリプションは、サブスクリプションIDで識別される。サブスクリプションIDは、グローバルで一意である。
サブスクリプションには、1以上のリソースグループが属する。リソースグループは、該当のサブスクリプションで利用可能なリソースの集合である。リソースは、CPUやRAMなどの演算リソース、スイッチなどの通信リソースおよびHDDやSSDなどの記憶リソースおよびVMを含み得る。
【0056】
リソースグループには、ユーザによりリソースグループ名が付与される。リソースグループ名は、サブスクリプション内で一意である。また、リソースは、リソースIDで識別される。リソースIDは、グローバルで一意である。
【0057】
VMには、ユーザにより仮想マシン名(VM名)が付与される。VM名はリソースグループ内で一意である。
また、VMは、仮想マシンID(vmID)で識別される。vmIDは、グローバルで一意である。
【0058】
このように、VMにはグローバルで一意な識別情報として、リソースIDおよびvmIDが付与される。
なお、クラウドサービスによっては、グローバルに一意であるインスタンスIDと呼ばれる識別情報により、VMを識別することもある。
【0059】
例えば、グローバルで一意なサブスクリプションID、リソースIDおよびvmID(あるいはインスタンスID)は、VMを管理する物理マシン200a,300aによって付与される。
【0060】
図5の例では、サブスクリプション60,70が例示されている。サブスクリプション60のサブスクリプションIDは「ss1」である。サブスクリプション70のサブスクリプションIDは「ss2」である。ここで、VM203~208は、VM201,202と同様に、クラウドサービスシステム2で動作する。
【0061】
サブスクリプション60は、リソースグループ61,62を有する。リソースグループ61のリソースグループ名は「rg1」である。リソースグループ62のリソースグループ名は「rg2」である。
【0062】
リソースグループ61は、VM201,202を有する。VM201のVM名は「vm1」である。VM202のVM名は「vm2」である。
リソースグループ62は、VM203,204を有する。VM203のVM名は「vm1」である。VM204のVM名は「vm3」である。
【0063】
サブスクリプション70は、リソースグループ71,72を有する。リソースグループ71のリソースグループ名は「rg1」である。リソースグループ72のリソースグループ名は「rg3」である。
【0064】
リソースグループ71は、VM205,206を有する。VM205のVM名は「vm1」である。VM206のVM名は「vm2」である。
リソースグループ72は、VM207,208を有する。VM207のVM名は「vm1」である。VM208のVM名は「vm3」である。
【0065】
このように、各VMは、グローバルで一意であるvmIDやリソースIDで識別される他、サブスクリプションIDなどのグローバルで一意な識別情報とサブスクリプション内やリソースグループ内などのローカルで一意である識別名との組合せで識別されてもよい。
【0066】
例えば、VM201は、サブスクリプションID「ss1」とリソースグループ名「rg1」とVM名「vm1」との組合せにより、グローバルで一意に識別される。
同様に、例えばVM205は、サブスクリプションID「ss2」とリソースグループ名「rg1」とVM名「vm1」との組合せにより、グローバルで一意に識別される。
【0067】
上記のように、各VMを、グローバルに一意に識別する識別情報を、「VM固有情報」と称する。VM固有情報は、第1の実施の形態の特定情報の一例である。
図6は、管理サーバによるデータ取得例を示す図である。
【0068】
VM201,202,…には、管理サーバ100により提供されるサービスにより所定のソフトウェアがインストールされる。管理サーバ100は、所定のタイミング(例えば、毎時0分)で、VM201,202,…に関するVM情報やVM201,202,…にインストール済みのソフトウェアに関するソフトウェア情報を取得する。
【0069】
ここで、VM201,202,…は、管理サーバ100に対してVM情報やソフトウェア情報を直接送信するのではなく、クラウドストレージ4を経由して、管理サーバ100にVM情報やソフトウェア情報を通知する。すなわち、VM201,202,…は、自VMのVM情報やソフトウェア情報を、所定のタイミングでクラウドストレージ4に格納する。そして、管理サーバ100は、クラウドストレージ4に格納されたVMごとのVM情報やソフトウェア情報を参照する。これにより、管理サーバ100は、管理サーバ100にとって都合の良いタイミングでVM情報やソフトウェア情報を取得可能になる。
【0070】
ただし、VM201,202,…それぞれからクラウドストレージ4に情報を格納するためには、VM201,202,…がクラウドストレージ4に対するアクセス権限を有することが必要となる。例えば、クラウドストレージ4が前述のAzureにより提供される場合、当該アクセス権限は、共有アクセス署名(Shared Access Signature)により付与される。
【0071】
クラウドストレージ4へのアクセス権限には、有効期限があるため、定期的にアクセス権限を更新する必要がある。管理サーバ100は、VM201,202,…それぞれに対するアクセス権限を管理し、VM201,202,…それぞれから受け付けるアクセス権限の更新要求に応じて、アクセス権限を更新する。
【0072】
この場合、VM201,202,…が、管理サーバ100に対してアクセス権限の更新要求を、日曜午前0時00分00秒などの特定のタイミングに集中して行うと、管理サーバ100の負荷が増大する。そこで、管理サーバ100は、VM201,202,…によるアクセス権限の更新要求が異なるタイミングで分散して行われるように制御する機能を提供する。
【0073】
図7は、管理サーバの機能例を示す図である。
管理サーバ100は、記憶部110、VM固有情報受信部120、ハッシュ値算出部130、変換部140、時刻送信部150、権限更新要求受信部160および権限管理部170を有する。
【0074】
記憶部110には、RAM102やHDD103の記憶領域が用いられる。VM固有情報受信部120、ハッシュ値算出部130、変換部140、時刻送信部150、権限更新要求受信部160および権限管理部170は、RAM102に記憶されたプログラムがCPU101により実行されることで実現される。
【0075】
記憶部110は、アクセス権限管理テーブルを記憶する。アクセス権限管理テーブルは、クラウドサービスシステム2,3それぞれで動作するVMの、クラウドストレージ4に対するアクセス権限を管理するためのテーブルである。
【0076】
VM固有情報受信部120は、各VMからVM固有情報を受信し、ハッシュ値算出部130にVM固有情報を出力する。VM固有情報受信部120は、受信したVM固有情報を、記憶部110に格納してもよい(図7ではVM固有情報受信部120と記憶部110との関連線を省略している)。例えば、VM固有情報は、アクセス権限管理テーブルにおけるVMごとのアクセス権限の管理に用いられてもよい。
【0077】
ハッシュ値算出部130は、VM固有情報を入力としたハッシュ関数の関数値を算出する。ハッシュ関数の関数値は、ハッシュ値と呼ばれる。ハッシュ関数には、例えば、SHA-256やMD5などが用いられる。ただし、ハッシュ関数にはその他のアルゴリズムによりハッシュ値を求める関数を用いてもよい。SHA-256やMD5などのアルゴリズムによりハッシュ値を求めるハッシュ関数は、一方向ハッシュ関数と呼ばれることがある。
【0078】
変換部140は、ハッシュ値算出部130により算出されたハッシュ値を時刻に変換する。例えば、クラウドストレージ4に対する各VMのアクセス権限の有効期限は、1週間とされる。この場合、変換部140は、日曜午前0時00分00秒~土曜午後23時59分59秒までの1週間を単位期間とする。変換部140は、ハッシュ値を当該単位期間の何れかの時刻に割り当てることで、当該ハッシュ値に対応する時刻を求める。時刻としては、例えば協定世界時(UTC:Universal Time, Coordinated)が用いられる。変換部140により求められた時刻は、該当のVMにアクセス権限の更新要求を行わせる時刻である。VMにアクセス権限の更新要求を行わせる時刻を「要求時刻」と称する。
【0079】
時刻送信部150は、変換部140により求められた要求時刻を該当のVMに送信する。
権限更新要求受信部160は、VMからアクセス権限の更新要求を受信し、権限管理部170に当該更新要求を出力する。
【0080】
権限管理部170は、アクセス権限の更新要求を受け付けると、アクセス権限管理テーブルに記録されている該当のVMのアクセス権限を更新する。例えば、権限管理部170は、該当のVMの既存のアクセス権限の有効期間を1週間延長する。権限管理部170は、アクセス権限の更新完了を、該当のVMに応答する。当該更新完了の応答は、更新後の権限有効期間、クラウドストレージ4におけるアクセス先およびクラウドストレージ4における認証用情報などの権限情報を含む。
【0081】
図8は、VMの機能例を示す図である。
VM201は、記憶部210、VM固有情報取得部220、VM固有情報送信部230、時刻受信部240、権限更新要求部250およびストレージアクセス処理部260を有する。
【0082】
記憶部210には、物理マシン200が備えるRAMやHDDなどの記憶領域が用いられる。VM固有情報取得部220、VM固有情報送信部230、時刻受信部240、権限更新要求部250およびストレージアクセス処理部260は、物理マシン200が備えるCPUが、物理マシン200のRAMに記憶されたプログラムを実行することで実現される。
【0083】
VM固有情報取得部220は、物理マシン200aからVM201に対応するVM固有情報を取得し、VM固有情報をVM固有情報送信部230に出力する。VM固有情報取得部220は、VM201が物理マシン200に作成されて起動された際に、VM固有情報取得用のAPI(Application Programming Interface)を用いて物理マシン200aからVM固有情報を取得する。VM固有情報取得部220は、取得したVM固有情報を記憶部210に格納して、例えば、次の権限更新の際などに再利用可能としてもよい。
【0084】
VM固有情報送信部230は、VM固有情報取得部220からVM固有情報を取得すると、VM固有情報送信用のAPIを用いて当該VM固有情報を管理サーバ100に送信する。各VMでVM固有情報が取得されるタイミングは、前述のように当該VMが物理マシン上に作成されて起動されたタイミングである。物理マシン200aによる各VMの作成や起動は、VMごとに異なるタイミングで行われる。このため、各VMから管理サーバ100に対してVM固有情報が送信されるタイミングは、VMごとに異なるタイミングとなる可能性が高い。
【0085】
時刻受信部240は、管理サーバ100から要求時刻を受信し、受信した要求時刻を記憶部210に格納する。時刻受信部240は、新たに要求時刻を受信した場合、その旨を権限更新要求部250に通知してもよい。
【0086】
権限更新要求部250は、現在時刻が記憶部210に格納された要求時刻に到達したか否かを監視する。権限更新要求部250は、現在時刻が要求時刻に到達すると、クラウドストレージ4に対するアクセス権限の更新要求を管理サーバ100に送信する。権限更新要求部250は、アクセス権限の更新完了の応答を管理サーバ100から受信する。当該応答には、クラウドストレージ4にアクセスするための権限情報が含まれる。すると、権限更新要求部250は、ストレージアクセス処理部260に、クラウドストレージ4にアクセスするための権限情報をストレージアクセス処理部260に通知する。
【0087】
また、権限更新要求部250は、現在時刻が要求時刻に到達していない場合には、現在時刻が要求時刻に到達するまで更新要求の送信を行わずに待機する。
ストレージアクセス処理部260は、権限更新要求部250から取得した権限情報を用いて、クラウドストレージ4にアクセスし、VM情報やソフトウェア情報の書き込みを行う。
【0088】
なお、クラウドサービスシステム2,3で動作する他のVMも、VM201と同様の機能を有する。
図9は、アクセス権限管理テーブルの例を示す図である。
【0089】
アクセス権限管理テーブル111は、記憶部110に格納される。アクセス権限管理テーブル111は、vmID、アクセス先および権限有効期間の項目を含む。
vmIDの項目には、vmIDが登録される。アクセス先の項目には、クラウドストレージ4におけるアクセスを許容するディレクトリを示すアドレスが登録される。権限有効期間の項目には、アクセス権限の有効期間が登録される。
【0090】
例えば、アクセス権限管理テーブル111には、vmID「vmID1」、アクセス先「cs1」、権限有効期間「20200501_12:00:00~20200508_11:59:59」のレコードが登録されている。このレコードは、vmID「vmID1」のVMが、クラウドストレージ4のアドレス「cs1」で示されるディレクトリに、2020年5月1日12時00分00秒~2020年5月8日11時59分59秒の期間だけアクセスが許可されることを示す。ここで、vmID「vmID1」は、VM201のvmIDであるとする。
【0091】
アクセス権限管理テーブル111には、他のVMについても同様にアクセス権限のレコードが登録される。
なお、図9の例では、権限有効期間をvmIDに対応付けて管理するものとしたが、管理サーバ100は、各仮想マシンから通知される、vmID以外のVM固有情報に対応付けて、権限有効期間を管理してもよい。
【0092】
図10は、要求時刻データの例を示す図である。
要求時刻データ211は、記憶部210に格納される。要求時刻データ211には、要求時刻が登録される。例えば、要求時刻データ211には、要求時刻「20200508_12:00:00」が登録されている。VM201は、要求時刻データ211に基づいて、2020年5月8日12時00分00秒に、クラウドストレージ4に対するアクセス権限の更新要求を管理サーバ100に送信する。
【0093】
なお、VM201から管理サーバ100に対するアクセス権限の更新要求は、管理サーバ100で管理されるアクセス権限の有効期間が満了した後に行われてもよいし、当該有効期間が満了する前に行われてもよい。当該有効期間が満了する前にアクセス権限の更新要求が行われる場合、管理サーバ100は、VM201のアクセス権限の有効期間を所定期間(本例では1週間)延長する。
【0094】
次に、第2の実施の形態の処理手順を説明する。
以下ではVM201を主に例示して説明するが、クラウドサービスシステム2,3で動作する他のVMに関してもVM201と同様の手順となる。
【0095】
図11は、VMの処理例を示すフローチャートである。
(S10)VM固有情報取得部220は、クラウドサービスからVM201のVM固有情報を取得する。例えば、VM固有情報取得部220は、クラウドサービスを管理する物理マシン200aからVM固有情報を取得することができる。
【0096】
(S11)VM固有情報送信部230は、VM固有情報を管理サーバ100に送信する。
(S12)時刻受信部240は、管理サーバ100から要求時刻を受信し、受信した要求時刻を示す要求時刻データ211を記憶部210に保存する。
【0097】
(S13)権限更新要求部250は、現在時刻が記憶部210に保存された要求時刻データ211が示す要求時刻に達すると、クラウドストレージ4に対するアクセス権限の更新要求を管理サーバ100に送信する。
【0098】
(S14)権限更新要求部250は、アクセス権限の更新完了応答を管理サーバ100から受信する。例えば、当該更新完了応答は、クラウドストレージ4へのアクセスに用いられる権限情報を含み得る。そして、VM201の処理が終了する。
【0099】
なお、ストレージアクセス処理部260は、権限更新要求部250が管理サーバ100から取得した権限情報を用いて、クラウドストレージ4にアクセスし、VM情報やソフトウェア情報の書き込みを行う。ストレージアクセス処理部260によるクラウドストレージ4へのVM情報やソフトウェア情報の書き込みは、ステップS14の直後に行われてもよいし、更新後のアクセス権限の有効期間内におけるその他のタイミングで行われてもよい。
【0100】
また、VM201は、例えば、アクセス権限の有効期間が1週間の場合、要求時刻データ211が示す前回の要求時刻から1週間経過するごとにアクセス権限の更新要求を管理サーバ100に送信してもよい。あるいは、VM201は、例えば、次週の最初、または、権限有効期間の満了後にVM201が起動された際に、クラウドサービスから取得したVM固有情報を管理サーバ100に再度送信して、管理サーバ100から新たな要求時刻を取得してもよい。
【0101】
次に、管理サーバ100の要求時刻提供の手順を説明する。
図12は、管理サーバの要求時刻提供の処理例を示すフローチャートである。
(S20)VM固有情報受信部120は、VM201からVM固有情報を受信する。
【0102】
(S21)ハッシュ値算出部130は、VM固有情報からハッシュ値を算出する。すなわち、ハッシュ値算出部130は、VM固有情報をハッシュ関数に入力することで、VM固有情報に対するハッシュ値を求める。
【0103】
(S22)変換部140は、ハッシュ値を時刻に変換する。例えば、変換部140は、当該ハッシュ値を、翌週日曜の0:00:00から翌週土曜の23:59:59までの時間範囲に属する何れかの時刻に変換する。時刻としては、例えばUTCが用いられる。
【0104】
(S23)時刻送信部150は、得られた時刻を要求時刻として、VM201に送信する。そして、要求時刻提供の処理が終了する。
図13は、管理サーバのアクセス権限更新の処理例を示すフローチャートである。
【0105】
(S30)権限更新要求受信部160は、VM201からアクセス権限の更新要求を受信する。
(S31)権限管理部170は、受信した更新要求に基づいて、クラウドストレージ4に対するVM201のアクセス権限を更新する。例えば、権限管理部170は、アクセス権限管理テーブル111におけるVM201の権限有効期間を、現時点から1週間延長してもよいし、現在の権限有効期間の満了時点から1週間延長してもよい。
【0106】
(S32)権限管理部170は、アクセス権限の更新完了応答をVM201に送信する。更新完了応答は、更新後の権限有効期間、クラウドストレージ4におけるアクセス先およびクラウドストレージ4における認証用情報などの権限情報を含み得る。そして、アクセス権限更新の処理が終了する。
【0107】
図14は、VM固有情報およびハッシュ値の例を示す図である。
例えば、VM201は、物理マシン200上にVM201が作成されて起動されると、物理マシン200aからVM201のVM固有情報81を取得する。
【0108】
例えば、VM固有情報81として、前述のvmIDを用いることができる。vmIDのサイズは、例えば36バイトである。
VM201は、管理サーバ100にVM固有情報81を提供する。すると、ハッシュ値算出部130は、VM固有情報81に基づいてハッシュ値82を算出する。ハッシュ関数として、例えばMD5を用いる場合、VM固有情報81から128ビットのハッシュ値82が得られる。図14では、16進数の数字32文字でハッシュ値82を表している。
【0109】
なお、VM固有情報81としては、前述のようにvmID以外のものを用いることができる。例えば、VM固有情報81は、サブスクリプションIDとリソースグループ名とVM名との組合せでもよい。また、VM固有情報81は、リソースIDでもよい。VM固有情報81の候補であるサブスクリプションIDとリソースグループ名とVM名との組合せ、リソースID、および、vmIDのうち、vmIDの情報量が最も少ないことがある。また、上記のvmIDに代えて、VMをグローバルに一意に識別する識別情報としてインスタンスIDも使用され得る。インスタンスIDのサイズは、17バイト程度であることがある。
【0110】
図15は、ハッシュ値を時刻に変換する例を示す図である。
ハッシュ値範囲90は、MD5で求められるハッシュ値が取り得る値の範囲である。図15では、16進数の数字32文字でハッシュ値を表している。ハッシュ値範囲90に含まれるハッシュ値の個数は、2^128通りとなる。
【0111】
ここで、1週間は、604,800秒である。したがって、変換部140は、2^128通りのハッシュ値を含むハッシュ値範囲90を、604,800個のサブ範囲に分割し、各サブ範囲を、日曜日0時00分00秒を起点とする時刻に対応付ける。1つのサブ範囲に属するハッシュ値の数は、2^128/604,800=5.6*10^32である。
【0112】
例えば、変換部140は、ハッシュ値範囲90の最小値を含む最初のサブ範囲を、日曜日0時00分00秒に対応付け、次のサブ範囲を日曜日0時00分01秒に対応付け、…というようにして、各サブ範囲に属するハッシュ値を時刻に対応付ける。変換部140は、ハッシュ値の小さい方から順に早い時刻となるように対応付けてもよいし、ハッシュ値の大きい方から順に早い時刻となるように対応付けてもよい。
【0113】
ここで、管理サーバ100でクラウドストレージ4へのアクセス権限を管理しているVMの数をaとし、アクセス権限の1つの更新要求のトランザクションの所要時間をbとし、管理サーバ100が受け付ける更新要求の並列数をcとする。
【0114】
すると、a台のVMと管理サーバ100とのアクセス権限の更新要求に関するやり取りの総所要時間は、ab/cとなる。例えば、a=10000とし、c=1とし、b=10秒とすると、当該総所要時間は、100,000秒となる。
【0115】
図16は、要求の分散の例を示す図である。
図16(A)は、VMからの要求が適切に分散されている例を示す。図16(A)の例は、管理サーバ100によりVM固有情報のハッシュ値を用いて決定された更新時刻で各VMがアクセス権限の更新要求を送信する場合である。
【0116】
更新要求群rq1は、VM10000台から送信された10000個の更新要求である。図16(A)の例では、1週間(604,800秒)の各時刻において、各VMからほぼ重複しないタイミングで、アクセス権限の更新要求が管理サーバ100に送信される。
【0117】
図16(B)は、VMからの要求が適切に分散されていない例を示す。図16(B)は、図16(A)の比較例である。図16(B)の例は、VM固有情報のハッシュ値を用いずに決定された時刻で各VMがアクセス権限の更新要求を送信する場合である。
【0118】
更新要求群rq2は、VM10000台から送信された10000個の更新要求である。図16(B)の例では、1週間(604,800秒)の各時刻において、2以上のVMによる更新要求が重複して行われる時刻が、図16(A)の場合に比べて多くなる。
【0119】
このように、VM固有情報のハッシュ値を用いて決定された更新時刻で各VMがアクセス権限の更新要求を管理サーバ100に送信することで、管理サーバ100における負荷集中を軽減できる。
【0120】
すなわち、ハッシュ関数を用いることで、各VMのVM固有情報に対して、十分に分散したハッシュ値を得ることができる。このため、当該ハッシュ値に基づくタイミングで、各VMから管理サーバ100への更新要求の送信を行うことで、各VMによる更新要求の送信タイミングを適切に分散させることができる。言い換えれば、各VMにより更新要求が送信されるタイミングが平滑化される。よって、比較的短い期間のうちに、各VMから管理サーバ100へ大量の更新要求が集中的に送信される可能性が低減される。その結果、管理サーバ100における負荷集中を軽減することができる。
【0121】
[第3の実施の形態]
次に第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0122】
第3の実施の形態の情報処理システムの構成は、図2で例示した第2の実施の形態の情報処理システムの例と同様であるため説明を省略する。
第3の実施の形態では、要求時刻の計算を、管理サーバ100ではなくVM201,202,…で行う点が第2の実施の形態と異なる。そこで、まず、第3の実施の形態における管理サーバ100およびVM201,202,…の機能を説明する。
【0123】
図17は、第3の実施の形態の管理サーバの機能例を示す図である。
管理サーバ100は、記憶部110、権限更新要求受信部160および権限管理部170を有する。記憶部110、権限更新要求受信部160および権限管理部170は、図7で例示した第2の実施の形態における同名の機能と同様の機能である。第3の実施の形態の例では、管理サーバ100は、VM固有情報受信部120、ハッシュ値算出部130、変換部140および時刻送信部150の機能を有していなくてよい。
【0124】
図18は、VMの機能例を示す図である。
VM201は、記憶部210、VM固有情報取得部220、権限更新要求部250、ストレージアクセス処理部260、ハッシュ値算出部270および変換部280を有する。記憶部210、VM固有情報取得部220、権限更新要求部250およびストレージアクセス処理部260は、図8で例示した第2の実施の形態における同名の機能と同様の機能である。第3の実施の形態では、VM201がハッシュ値算出部270および変換部280を有し、VM固有情報送信部230および時刻受信部240を有さない点が、第2の実施の形態と異なる。
【0125】
ハッシュ値算出部270は、VM固有情報取得部220により取得されたVM固有情報を入力としたハッシュ関数の関数値、すなわち、ハッシュ値を算出する。ハッシュ関数には、例えば、SHA-256やMD5などが用いられる。ただし、ハッシュ関数にはその他のアルゴリズムよりハッシュ値を求める関数を用いてもよい。
【0126】
変換部280は、ハッシュ値算出部270により算出されたハッシュ値を時刻に変換する。当該時刻は、第2の実施の形態の要求時刻に相当する。変換部280は、求めた要求時刻を記憶部210に格納する。変換部280は、要求時刻が更新されたことを権限更新要求部250に通知してもよい。
【0127】
なお、クラウドサービスシステム2,3で動作する他のVMも、VM201と同様の機能を有する。
次に、第3の実施の形態における処理手順を説明する。第3の実施の形態では、各VMの処理手順が第2の実施の形態と異なる。具体的には、管理サーバ100は、図12で例示した第2の実施の形態の要求時刻提供の処理を実行しなくてよい。要求時刻の計算は、各VMによって実行される。以下では、VM201を主に例示して説明するが、他のVMも同様の手順を実行する。
【0128】
図19は、VMの処理例を示すフローチャートである。
(S40)VM固有情報取得部220は、クラウドサービスからVM201のVM固有情報を取得する。例えば、VM固有情報取得部220は、クラウドサービスを管理する物理マシン200aからVM固有情報を取得することができる。
【0129】
(S41)ハッシュ値算出部270は、取得したVM固有情報からハッシュ値を算出する。すなわち、ハッシュ値算出部270は、VM固有情報をハッシュ関数に入力することで、VM固有情報に対するハッシュ値を求める。
【0130】
(S42)変換部280は、ハッシュ値を時刻に変換する。例えば、変換部280は、当該ハッシュ値を、翌週日曜の0:00:00から翌週土曜の23:59:59までの時間範囲に属する時刻に変換する。時刻としては、例えばUTCが用いられる。
【0131】
(S43)変換部280は、得られた時刻を要求時刻とする。変換部280は、当該要求時刻を示す要求時刻データ211を記憶部210に保存する。
(S44)権限更新要求部250は、現在時刻が記憶部210に保存された要求時刻データ211が示す要求時刻に達すると、クラウドストレージ4に対するアクセス権限の更新要求を管理サーバ100に送信する。
【0132】
(S45)権限更新要求部250は、アクセス権限の更新完了応答を管理サーバ100から受信する。例えば、当該更新完了応答は、クラウドストレージ4へのアクセスに用いられる権限情報を含み得る。そして、VM201の処理が終了する。
【0133】
なお、ストレージアクセス処理部260は、権限更新要求部250が管理サーバ100から取得した権限情報を用いて、クラウドストレージ4にアクセスし、VM情報やソフトウェア情報の書き込みを行う。ストレージアクセス処理部260によるクラウドストレージ4へのVM情報やソフトウェア情報の書き込みは、ステップS45の直後に行われてもよいし、更新後のアクセス権限の有効期間内におけるその他のタイミングで行われてもよい。
【0134】
また、管理サーバ100によるアクセス権限更新処理は、図13で例示した手順と同様の手順となる。
このように、VM固有情報のハッシュ値を用いて決定された更新時刻で各VMがアクセス権限の更新要求を管理サーバ100に送信することで、管理サーバ100における負荷集中を軽減できる。
【0135】
すなわち、ハッシュ関数を用いることで、各VMのVM固有情報に対して、十分に分散したハッシュ値を得ることができる。このため、当該ハッシュ値に基づくタイミングで、各VMから管理サーバ100への更新要求の送信を行うことで、各VMによる更新要求の送信タイミングを適切に分散させることができる。言い換えれば、各VMにより更新要求が送信されるタイミングが平滑化される。よって、比較的短い期間のうちに、各VMから管理サーバ100へ大量の更新要求が集中的に送信される可能性が低減される。その結果、管理サーバ100における負荷集中を軽減することができる。
【0136】
なお、第2,第3の実施の形態では、管理サーバ100がクラウドストレージ4に対するアクセス権限の更新要求を各VMから送信するタイミングを決定する例を説明したが、各VMから管理サーバ100へ他の情報を送信するタイミングを決定してもよい。当該タイミングの決定方法は、各VMからの要求がリアルタイム性のないもの、すなわち、一定の時間間隔で定期的に発生する要求のうち、クライアント数が増えると管理サーバの負荷が増大するものである場合に特に有用である。
【0137】
例えば、Webサイトの訪問者情報を、各VM上に構築されたWebサーバごとに一定の間隔で定期的に管理サーバ100に発信するサービスが考えられる。この場合、複数のWebサーバが訪問者情報を同時に管理サーバ100に送信すると、管理サーバ100の負荷が増大し得る。一方、管理サーバ100は、各VMのVM固有情報に対するハッシュ値に基づいて、訪問者情報を送信する時刻をVMごとに決定することで、各VMが訪問者情報を送信するタイミングを適切に分散させることができる。その結果、管理サーバ100における負荷集中を軽減することができる。
【0138】
その他の情報を各VMから管理サーバ100に送信する場合も、同様の方法により、当該情報の送信タイミングをVMごとに適切に分散させることができ、管理サーバ100における負荷集中を軽減することができる。
【0139】
第2,第3の実施の形態に対する比較例として、例えば、VMセットアップ時に、管理サーバ100で情報の受信が可能である空き時刻を各VMから問い合わせて、当該VM内の設定ファイルに保存し、当該VMから当該時刻に情報の送信を行うことも考えられる。
【0140】
しかし、VMは、ある1つのVMイメージを複製することで作成され、起動されることでスケールアウトされることが多い。このため、例えば、同じ設定ファイルのVMが増える可能性が高く、同じ時刻に各VMから一斉に情報が送信される可能性が高まる。
【0141】
また、例えば、VMにおけるプログラム実行時の時刻を乱数の種にしてランダムなタイミングで情報送信を行わせることも考えられる。しかし、上記のように、同じVMイメージの複製によるVMのクローン同士では、同じプログラムが同じ時刻に動作するため、結局、各VMによる情報送信のタイミングが衝突する可能性が高い。
【0142】
一方、一般的なクラウドサービスであれば取得できる、VM固有情報は、同じVMイメージを複製しても、VMごとに異なる値となる。したがって、第2,第3の実施の形態のように、VM固有情報のハッシュ値を用いて決定された時刻に各VMから管理サーバ100に情報を送信することで、各VMによる情報送信のタイミングが適切に分散され、管理サーバ100における負荷集中を軽減できる。
【0143】
以上をまとめると、第2,第3の実施の形態の情報処理システムは例えば次の機能を有する。
管理サーバ100またはVM201,202,…それぞれは、当該VMを特定する特定情報を取得すると、特定情報を入力とするハッシュ関数の関数値、すなわち、ハッシュ値を算出する。VM201,202,…それぞれは、自VMに対応するハッシュ値に基づくタイミングで、管理サーバ100に情報を送信する。
【0144】
これにより、管理サーバ100の負荷集中を軽減できる。
例えば、管理サーバ100がハッシュ値を算出する場合、管理サーバ100は、複数のVMそれぞれに対応するハッシュ値に基づいて、当該VMから管理サーバ100(自装置)に情報を送信するタイミングを、複数のVMそれぞれに対して指示する。
【0145】
あるいは、VM201,202,…それぞれがハッシュ値を算出する場合、VM201,202,…それぞれは、自VMから、各VMの情報を収集する管理サーバ100へ、当該ハッシュ値に基づくタイミングで情報を送信する。
【0146】
VM201,202,…それぞれから管理サーバ100に送信される情報は、例えば、当該VMによる特定処理の実行権限の有効期限を延長する申請である。これにより、管理サーバ100において比較的短い時間に当該実行権限の有効期限の延長の処理が集中することが避けられ、当該有効期限の延長の処理による管理サーバ100の負荷集中を軽減できる。
【0147】
また、管理サーバ100またはVM201,202,…それぞれは、所定期間に属する、ハッシュ値に対応する時刻を、当該VMにより管理サーバ100へ情報を送信するタイミングと決定する。
【0148】
これにより、各VMにより情報を送信する時刻を、当該送信のタイミングが当該所定期間内に分散するように、適切に得ることができる。
また、第2,第3の実施の形態の情報処理システムは、物理マシン200,300を有するクラウドサービスシステム2,3を含む。
【0149】
この場合、特定情報は、クラウドサービスシステム2,3それぞれがVMごとに一意に付与するVMの第1の識別情報でもよい。前述のvmID、インスタンスIDおよびリソースIDそれぞれは、第1の識別情報の一例である。
【0150】
あるいは、特定情報は、クラウドサービスシステム2,3が提供するクラウドサービスの利用契約ごとにクラウドサービスシステム2,3それぞれが一意に付与する第2の識別情報とVMに対してユーザが付与するVM名とを含む組合せ情報でもよい。前述のサブスクリプションIDは、第2の識別情報の一例である。また、前述のように、当該組合せ情報は、リソースグループ名などの、ユーザにより付与される他の情報を含んでもよい。
【0151】
これにより、各VMに対して、求められるハッシュ値を適度に分散させることができ、2以上のVMによる情報の送信タイミングが衝突する(あるいは重複する)可能性を低減できる。このため、管理サーバ100における負荷集中を一層軽減できる。
【0152】
なお、第1の実施の形態の情報処理は、処理部12,22にプログラムを実行させることで実現できる。また、第2,第3の実施の形態の情報処理は、CPU101や物理マシン200,300が有するCPUにプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体53に記録できる。
【0153】
例えば、プログラムを記録した記録媒体53を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体53に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0154】
1 システム
10,20 情報処理装置
11,21 記憶部
12,22 処理部
31,32,33 仮想マシン
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19