(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024129247
(43)【公開日】2024-09-27
(54)【発明の名称】プログラム、情報処理方法および情報処理装置
(51)【国際特許分類】
G06F 11/20 20060101AFI20240919BHJP
【FI】
G06F11/20 628
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023038328
(22)【出願日】2023-03-13
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】金谷 良太
(72)【発明者】
【氏名】竹内 幸大
(72)【発明者】
【氏名】高石 明伸
(72)【発明者】
【氏名】小島 直己
【テーマコード(参考)】
5B034
【Fターム(参考)】
5B034BB02
5B034CC01
5B034DD05
(57)【要約】
【課題】可用性を効率的に向上する。
【解決手段】処理部12は、運用系ノード21によりアクセスされる第1記憶部23および待機系ノード22によりアクセスされる第2記憶部24それぞれに、複数のユーザのジョブの実行に共通に用いられる共通データを配置する。処理部12は、運用系ノード21によるジョブの実行に応じて、または、第1ユーザにより更新される、第1ユーザに対応するジョブの固有データを、運用系ノードおよび待機系ノードにより共有される共有ストレージ25に書き込ませる。処理部12は、運用系ノード21の稼働中には待機系ノード22を停止状態とする。処理部12は、ジョブの実行主体を運用系ノード21から待機系ノード22に切り替える際に、待機系ノード22を起動し、共有ストレージ25からの、待機系ノード22による固有データの読み取りを可能にする設定を行う。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータに、
複数のユーザのうちの第1ユーザに対応するジョブに用いられる運用系ノードによりアクセスされる第1記憶部および前記運用系ノードに対応する待機系ノードによりアクセスされる第2記憶部それぞれに、前記複数のユーザそれぞれに対応する前記ジョブの実行に共通に用いられる共通データを配置し、
前記運用系ノードによる前記ジョブの実行に応じて、または、前記第1ユーザにより更新される、前記第1ユーザに対応する前記ジョブの固有データを、前記運用系ノードおよび前記待機系ノードにより共有される共有ストレージに書き込ませるとともに、前記運用系ノードの稼働中には前記待機系ノードを停止状態とし、
前記ジョブの実行主体を前記運用系ノードから前記待機系ノードに切り替える際に、前記待機系ノードを起動し、前記共有ストレージからの、前記待機系ノードによる前記固有データの読み取りを可能にする設定を行う、
処理を実行させるプログラム。
【請求項2】
前記共有ストレージは、前記運用系ノードおよび前記待機系ノードにマウント可能であり、
前記設定では、前記共有ストレージを前記待機系ノードにマウントする、
処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項3】
前記設定では、前記共有ストレージを前記待機系ノードにマウントする前に、前記運用系ノードから前記共有ストレージをアンマウントする、
処理を前記コンピュータに実行させる請求項2記載のプログラム。
【請求項4】
前記運用系ノードから前記共有ストレージをアンマウントする前に、アクセス元ノードにより送信されるリクエストを前記運用系ノードへ中継する中継ノードが保持する接続先情報から前記運用系ノードの情報を削除し、
前記共有ストレージを前記待機系ノードにマウントした後に、前記接続先情報に前記待機系ノードの情報を追加する、
処理を前記コンピュータに実行させる請求項3記載のプログラム。
【請求項5】
前記共通データは、前記ジョブを動作させる所定プログラムであり、
前記所定プログラムをアップグレードした新ノードを用意して停止状態とし、
前記ジョブの実行主体を前記運用系ノードから前記新ノードに切り替える際に、前記新ノードを起動し、前記共有ストレージからの、前記新ノードによる前記固有データの読み取りを可能にする設定を行う、
処理を前記コンピュータに実行させる請求項1記載のプログラム。
【請求項6】
前記新ノードを用意すると、ノードの管理に用いられる管理テーブルに、前記運用系ノードに対して前記新ノードを用意済であることを記録し、
前記管理テーブルに基づいて前記新ノードを用意済であることを検出すると、前記運用系ノードの前記ジョブの実行状況に応じて前記ジョブの実行主体を前記運用系ノードから前記新ノードに切り替えるタイミングを決定し、
決定した前記タイミングにおいて前記ジョブの実行主体を前記運用系ノードから前記新ノードに切り替える際に、前記管理テーブルにおいて、前記運用系ノードの情報を削除し、前記新ノードを新たな運用系として設定する、
処理を前記コンピュータに実行させる請求項5記載のプログラム。
【請求項7】
前記運用系ノードは、第1アベイラビリティゾーンで動作し、
前記待機系ノードは、第2アベイラビリティゾーンで動作し、
前記第1アベイラビリティゾーンおよび前記第2アベイラビリティゾーンのうちの一方のアベイラビリティゾーンに前記新ノードを用意し、他方のアベイラビリティゾーンに前記新ノードに対応する待機系のノードを用意する、
処理を前記コンピュータに実行させる請求項5記載のプログラム。
【請求項8】
前記共通データは、前記ジョブを動作させる所定プログラムであり、
前記固有データは、前記所定プログラムによって使用される、前記ジョブの定義および前記ジョブの状態を示す情報である、
請求項1記載のプログラム。
【請求項9】
コンピュータが、
複数のユーザのうちの第1ユーザに対応するジョブに用いられる運用系ノードによりアクセスされる第1記憶部および前記運用系ノードに対応する待機系ノードによりアクセスされる第2記憶部それぞれに、前記複数のユーザそれぞれに対応する前記ジョブの実行に共通に用いられる共通データを配置し、
前記運用系ノードによる前記ジョブの実行に応じて、または、前記第1ユーザにより更新される、前記第1ユーザに対応する前記ジョブの固有データを、前記運用系ノードおよび前記待機系ノードにより共有される共有ストレージに書き込ませるとともに、前記運用系ノードの稼働中には前記待機系ノードを停止状態とし、
前記ジョブの実行主体を前記運用系ノードから前記待機系ノードに切り替える際に、前記待機系ノードを起動し、前記共有ストレージからの、前記待機系ノードによる前記固有データの読み取りを可能にする設定を行う、
情報処理方法。
【請求項10】
複数のユーザのうちの第1ユーザに対応するジョブに用いられる運用系ノードおよび前記運用系ノードに対応する待機系ノードとの通信に用いられる通信部と、
前記運用系ノードによりアクセスされる第1記憶部および前記待機系ノードによりアクセスされる第2記憶部それぞれに、前記複数のユーザそれぞれに対応する前記ジョブの実行に共通に用いられる共通データを配置し、前記運用系ノードによる前記ジョブの実行に応じて、または、前記第1ユーザにより更新される、前記第1ユーザに対応する前記ジョブの固有データを、前記運用系ノードおよび前記待機系ノードにより共有される共有ストレージに書き込ませるとともに、前記運用系ノードの稼働中には前記待機系ノードを停止状態とし、前記ジョブの実行主体を前記運用系ノードから前記待機系ノードに切り替える際に、前記待機系ノードを起動し、前記共有ストレージからの、前記待機系ノードによる前記固有データの読み取りを可能にする設定を行う処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はプログラム、情報処理方法および情報処理装置に関する。
【背景技術】
【0002】
近年、アプリケーションプログラムを実行する情報処理環境をユーザが自ら所有する代わりに、サービス事業者のもつ情報処理環境をネットワーク経由で利用することが増えている。ネットワーク経由で情報処理環境を利用させる情報処理システムはクラウドシステムと言われることがある。クラウドシステムは、物理マシンや仮想マシンなどの計算リソースをユーザに貸し出し、ユーザが利用するアプリケーションプログラムをその計算リソース上で実行する。
【0003】
ところで、情報処理システムではサービスの可用性の向上が図られている。例えば、地震や火災といった災害が発生した場合のデータロストに備えて、複数のサイトに配置された複数ストレージシステム間でデータを多重化して保持するシステムの提案がある。
【0004】
また、メインサイトのマスタストレージ装置にマスタデータを格納し、リモートサイトのリモートストレージ装置にマスタデータのバックアップであるバックアップデータを格納するディザスタリカバリシステムの提案がある。
【0005】
また、運用系仮想サーバがハートビートを受信せず、サービスが稼働している場合には、待機系のシステムを再起動することで、スプリットブレインの問題を回避するサービス継続システムの提案がある。
【0006】
更に、アクティブノードとスタンバイノードとを含むクラスタシステムで、アクティブノードが同期データを生成して外部記憶部に記憶させるとともに、スタンバイノードの起動指示を制御装置へ送信する同期方法の提案がある。提案の同期方法では、制御装置は、起動指示を受信した場合にスタンバイノードを起動する。スタンバイノードは、外部記憶部から同期データを取得し、同期データにより示される更新内容をスタンバイノードの記憶部に反映させる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2021-33782号公報
【特許文献2】特開2017-174107号公報
【特許文献3】特開2019-197352号公報
【特許文献4】国際公開第2017/047065号
【発明の概要】
【発明が解決しようとする課題】
【0008】
上記提案のように、運用系ノードで同期データが生成されるたびに待機系ノードを起動して、同期データを待機系ノードへ反映させることがある。しかし、このような同期処理のたびに待機系ノードを実行すると、その分の計算リソースが消費される。このため、ユーザが本来実行したいジョブの他に、同期処理による余計なコストが発生する。
【0009】
1つの側面では、本発明は、可用性を効率的に向上することを目的とする。
【課題を解決するための手段】
【0010】
1つの態様では、プログラムが提供される。このプログラムは、コンピュータに次の処理を実行させる。コンピュータは、複数のユーザのうちの第1ユーザに対応するジョブに用いられる運用系ノードによりアクセスされる第1記憶部および運用系ノードに対応する待機系ノードによりアクセスされる第2記憶部それぞれに、複数のユーザそれぞれに対応するジョブの実行に共通に用いられる共通データを配置する。コンピュータは、運用系ノードによるジョブの実行に応じて、または、第1ユーザにより更新される、第1ユーザに対応するジョブの固有データを、運用系ノードおよび待機系ノードにより共有される共有ストレージに書き込ませるとともに、運用系ノードの稼働中には待機系ノードを停止状態にする。コンピュータは、ジョブの実行主体を運用系ノードから待機系ノードに切り替える際に、待機系ノードを起動し、共有ストレージからの、待機系ノードによる固有データの読み取りを可能にする設定を行う。
【0011】
また、1つの態様では、情報処理方法が提供される。また、1つの態様では、通信部と処理部とを有する情報処理装置が提供される。
【発明の効果】
【0012】
1つの側面では、可用性を効率的に向上できる。
【図面の簡単な説明】
【0013】
【
図1】第1の実施の形態の情報処理装置を説明する図である。
【
図2】第2の実施の形態のクラウドシステムの例を示す図である。
【
図3】物理マシンのハードウェア例を示す図である。
【
図4】クラウドシステムのネットワーク接続関係の例を示す図である。
【
図7】運用系/待機系マシンによる共有ストレージのマウント例を示す図である。
【
図8】運用系/待機系マシンの切り替えの例を示すフローチャートである。
【
図9】第3の実施の形態のマシン作成例を示す図である。
【
図11】サーバレス関数による管理テーブルの編集例を示す図である。
【
図12】サーバレス関数によるロードバランサの制御例を示す図である。
【
図13】サービスアップグレード済マシン用意の例を示すフローチャートである。
【
図14】サービスアップグレード済マシン作成の例を示すフローチャートである。
【
図15】管理テーブルのマシンタイプ更新の例を示すフローチャートである。
【
図16】管理テーブルのマシンタイプ更新の具体例を示す図である。
【
図17】サービスアップグレード制御の例を示すフローチャートである。
【
図18】サービスアップグレード可否判定の例を示すフローチャートである。
【
図19】フェールオーバの各処理の例を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0015】
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置10は、情報処理システム20に接続される。情報処理装置10は、情報処理システム20に含まれてもよい。情報処理システム20は、複数の物理マシンや複数の仮想マシンで実現される複数のノードをユーザにより利用可能にする。情報処理システム20は、複数のユーザにより利用される。なお、情報処理装置10はコンピュータと言われてもよい。情報処理システム20はクラウドシステムと言われてもよい。ユーザはテナントと言われてもよい。
【0016】
情報処理システム20に含まれるノードは、ユーザにより利用されるサービスに係るジョブを実行する。例えば、ユーザは、アクセス元ノード30を用いて、情報処理システム20に含まれるノードを利用する。アクセス元ノード30は、ユーザが使用するスマートフォン、タブレットおよびPC(Personal Computer)などの端末装置でもよいし、情報処理システム20に含まれる物理マシンまたは仮想マシンでもよい。
【0017】
情報処理装置10は、情報処理システム20に含まれる複数のノードを制御する。情報処理装置10は、記憶部11と処理部12と通信部13を有する。記憶部11は、RAM(Random Access Memory)などの揮発性の半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。記憶部11は、処理部12の処理に用いられるデータを記憶する。
【0018】
処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0019】
通信部13は、情報処理システム20に含まれる各ノードとの通信に用いられる通信インタフェースである。例えば、処理部12は、通信部13を介して各ノードと通信する。
情報処理システム20は、運用系ノード21、待機系ノード22、第1記憶部23、第2記憶部24、共有ストレージ25および中継ノード26を有する。運用系ノード21は、複数のユーザのうちの第1ユーザのジョブを実行する運用系のノードである。待機系ノード22は、運用系ノード21に対応する待機系のノードである。運用系ノード21および待機系ノード22は、災害などの影響を考慮して、地理的に離れたデータセンタなどの拠点に設けられてもよい。
【0020】
第1記憶部23は、運用系ノード21によりアクセスされる、運用系ノード21のローカルストレージである。第1記憶部23には、運用系ノード21に割り当てられた、HDDやSSDなどの記憶領域が用いられる。第2記憶部24は、待機系ノード22によりアクセスされる、待機系ノード22のローカルストレージである。第2記憶部24には待機系ノード22に割り当てられた、HDDやSSDなどの記憶領域が用いられる。共有ストレージ25は、運用系ノード21および待機系ノード22により共有されるストレージであり、運用系ノード21および待機系ノード22にマウント可能である。共有ストレージ25は、HDDやSSDなどの記憶装置を有し、当該記憶装置の記憶領域を運用系ノード21や待機系ノード22に提供する。共有ストレージ25は、運用系ノード21および待機系ノード22からネットワーク経由でマウントされる。
【0021】
中継ノード26は、アクセス元ノード30からのアクセスを、運用系ノード21または待機系ノード22へ中継するノードである。運用系ノード21でジョブ運用する場合、中継ノード26はアクセス元ノード30からの要求を運用系ノード21へ転送する。待機系ノード22でジョブ運用する場合、中継ノード26はアクセス元ノード30からの要求を待機系ノード22へ転送する。
【0022】
上記のように、情報処理システム20では、運用系ノード21に対して待機系ノード22を設けることで、運用系ノード21での異常発生時などに、待機系ノード22での運用に切り替えることができる。このとき、処理部12は、運用系ノード21および待機系ノード22と通信部13を介して通信し、運用系ノード21および待機系ノード22を次のように制御する。下記の制御は、例えばクラウドシステムにおけるサーバレス関数と呼ばれる軽量プログラムを、処理部12が実行することで実現されてもよい。
【0023】
処理部12は、第1記憶部23および第2記憶部24それぞれに、複数のユーザそれぞれに対応するジョブの実行に共通に用いられる共通データを配置する。共通データは、例えばジョブの定義および実行などのジョブ管理を行うジョブ管理ソフトウェアのプログラムである。各ユーザは、当該ソフトウェアの機能により自身が利用したいサービスに関する処理をジョブとして定義し、自身が利用するノードに当該ジョブを実行させることができる。
【0024】
運用系ノード21および待機系ノード22がそれぞれ仮想マシンで実現される場合、処理部12は、共通データを含む仮想マシンイメージを用いて運用系ノード21および待機系ノード22を作成する。これにより、処理部12は、仮想マシンイメージを基に運用系ノード21に割り当てられる第1記憶部23、および、仮想マシンイメージを基に待機系ノード22に割り当てられる第2記憶部24それぞれに共通データを配置することができる。
【0025】
処理部12は、運用系ノード21による、第1ユーザに対応するジョブの実行に応じて、または、第1ユーザにより更新される固有データを、運用系ノード21により共有ストレージ25に書き込ませる。固有データは、ジョブの実行に用いられる、ユーザ固有のデータである。第1ユーザの固有データは、例えば第1ユーザにより定義されたジョブの内容を示すジョブ定義情報、および、ジョブの実行状態や実行結果を示すジョブ状態情報の少なくとも何れかを含む。ジョブ定義情報は、実行するジョブの内容に応じて、第1ユーザにより更新される。ジョブ状態情報は、ジョブの実行状況に応じて更新される。また、処理部12は、運用系ノード21の稼働中には待機系ノード22を停止状態にする。具体的には、処理部12は、運用系ノード21に共有ストレージ25をマウントすることで、運用系ノード21により固有データを共有ストレージ25に直接書き込み可能にする。また、待機系ノード22が仮想マシンで実現される場合、処理部12は、仮想マシンイメージから作成した待機系ノード22を停止させ、待機系ノード22を起動可能な状態に維持する。
【0026】
処理部12は、ジョブの実行主体を運用系ノード21から待機系ノード22に切り替える際に、待機系ノード22を起動し、共有ストレージ25からの、待機系ノード22による固有データの読み取りを可能にする設定を行う。具体的には、処理部12は、待機系ノード22に共有ストレージ25をマウントすることで固有データを待機系ノード22により読み取り可能にする。
【0027】
例えば、処理部12は、運用系ノード21におけるソフトウェアのエラーなど、運用系ノード21でジョブ運用を継続できない異常を検知すると、ジョブの実行主体を運用系ノード21から待機系ノード22に切り替える。このとき、処理部12は、共有ストレージ25を運用系ノード21からアンマウントし、起動させた待機系ノード22に共有ストレージ25をマウントする。これにより、例えば共有ストレージ25の固有データが書き込まれた所定の記憶領域が、待機系ノード22のマウントポイントにマウントされる。すると、待機系ノード22は、当該マウントポイントを介して、共有ストレージ25に書き込まれた固有データを読み取ることができる。待機系ノード22は、第2記憶部24に記憶される共通データおよび共有ストレージ25に記憶される固有データに基づいて、運用系ノード21からジョブを引き継いで実行する。
【0028】
なお、処理部12は、運用系ノード21から待機系ノード22への切り替えを行う場合、アクセス元ノード30によるアクセス先を運用系ノード21から待機系ノード22へ切り替える設定を中継ノード26に対して行う。例えば、処理部12は、共有ストレージ25を運用系ノード21からアンマウントする前に、中継ノード26が保持する接続先情報から運用系ノード21の情報(例えばホスト名またはIP(Internet Protocol)アドレス)を削除する。ここで、接続先情報は、中継ノード26によるリクエストの転送先を示し、例えば、リクエストの送信元のIPアドレスなどの情報に対応付けて、転送先のIPアドレスなどの情報が登録される。そして、処理部12は、待機系ノード22に共有ストレージ25をマウントした後に、中継ノード26が保持する接続先情報に待機系ノード22の情報(例えばホスト名またはIPアドレス)を追加する。これにより、運用系ノード21で異常が発生しても、待機系ノード22により第1ユーザへのサービスの提供が継続される。
【0029】
第1の実施の形態の情報処理装置10によれば、運用系ノード21によりアクセスされる第1記憶部23および待機系ノード22によりアクセスされる第2記憶部24それぞれに、各ユーザのジョブの実行に共通に用いられる共通データが配置される。運用系ノード21によるジョブの実行に応じて、または、第1ユーザにより更新される、第1ユーザに対応するジョブの固有データが共有ストレージ25に書き込まれるとともに、運用系ノード21の稼働中には待機系ノード22が停止状態とされる。ジョブの実行主体を運用系ノード21から待機系ノード22に切り替える際に、待機系ノード22が起動される。そして、共有ストレージ25からの、待機系ノード22による固有データの読み取りを可能にする設定が行われる。
【0030】
これにより、情報処理装置10は、サービスの可用性を効率的に向上できる。具体的には次の通りである。
運用系ノード21と待機系ノード22とのデータの連携は共有ストレージ25を用いて行われる。待機系ノード22は、運用系ノード21が更新した固有データを共有ストレージ25から読み取れる。このため、運用系ノード21と待機系ノード22とで定期的な、あるいは、データ更新毎のデータの同期処理を行わなくてよくなり、運用系ノード21から待機系ノード22へ切り替えるときに待機系ノード22を起動させればよい。
【0031】
ただし、共有ストレージ25を運用系ノード21および待機系ノード22からマウント可能とするなどの方法により両ノードで共有する場合、共有ストレージ25は、運用系ノード21および待機系ノード22によりネットワーク経由で共有される。このため、切り替え時に共有ストレージ25から待機系ノード22へ比較的多量のデータを読み取らせると、当該データの読み取りに時間がかかる可能性がある。これは、切り替え完了の遅延の原因になり可用性に影響する。
【0032】
そこで、情報処理装置10は、運用系ノード21の第1記憶部23および待機系ノード22の第2記憶部24それぞれに共通データが配置され、共有ストレージ25には共通データ以外の固有データが書き込まれるようにする。これにより、共有ストレージ25に共通データおよび固有データの両方を書き込むよりも、切り替え時において待機系ノード22により共有ストレージ25から読み取るデータ量が低減される。その結果、例えば運用系ノード21の異常検知から待機系ノード22によりサービスに係るジョブを再開までに要する時間が低減され、運用系ノード21から待機系ノード22への迅速な切り替えを行えるようになる。
【0033】
こうして、情報処理装置10は、同期処理の都度、待機系ノード22を起動して同期処理を行う方法に比べて、切り替え時の遅延を抑えて、当該同期処理を省略することができる。このため、情報処理装置10は、待機系ノード22の実行に係るコストを抑制しつつ可用性を確保できる。
【0034】
更に、共通データが共有ストレージ25に保存されないので、共通データおよび固有データの両方を共有ストレージ25に保存するよりも、共有ストレージ25として割く記憶リソースを低減できるという利点もある。また、運用系ノード21が異常により停止した場合でも、待機系ノード22により共有ストレージ25から最新の固有データを取得して、ジョブ運用を継続できるという利点もある。
【0035】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態のクラウドシステムの例を示す図である。
【0036】
クラウドシステム2は、クラウドサービスを提供する。クラウドサービスの一例として、AWS(Amazon Web Services)がある。AWSは登録商標である。Amazonは登録商標である。ただし、クラウドシステム2は、他のクラウドサービスを提供してもよい。クラウドシステム2は、物理マシン100,100a,…を有する。物理マシン100,100a,…は、ユーザに提供される計算リソースを有するサーバである。図示を省略しているが、クラウドシステム2は、更に、ネットワーク機器やストレージ装置などのハードウェアを多数含む。クラウドシステム2は、物理マシン100,100a,…、ネットワーク機器およびストレージ装置などのリソースをユーザに貸し出し、ユーザにより利用可能にする。
【0037】
クラウドシステム2は、ユーザが利用したリソースの性能、量および利用時間などに応じた料金をユーザに課する。当該料金は、クラウドシステム2の利用に伴うユーザのコストの一例である。ただし、当該コストは、消費電力や消費電力に応じた電気代などの他の指標でもよい。
【0038】
クラウドシステム2は、インターネット3に接続される。また、インターネット3には、端末装置4が接続される。端末装置4は、ユーザが操作するクライアントコンピュータである。ユーザは端末装置4を操作して、クラウドシステム2のサービスを利用することができる。ここで、クラウドシステム2を利用するユーザまたはユーザのグループを、以下ではテナントと言う。
【0039】
図3は、物理マシンのハードウェア例を示す図である。
物理マシン100は、プロセッサ101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。物理マシン100が有するこれらのユニットは、物理マシン100の内部でバスに接続されている。プロセッサ101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。通信インタフェース107は、第1の実施の形態の通信部13に対応する。
【0040】
プロセッサ101は、プログラムの命令を実行する演算装置である。プロセッサ101は、例えばCPUである。プロセッサ101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、プロセッサ101は複数のプロセッサコアを含んでもよい。また、物理マシン100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0041】
RAM102は、プロセッサ101が実行するプログラムやプロセッサ101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、物理マシン100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0042】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、物理マシン100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0043】
GPU104は、プロセッサ101からの命令に従って、物理マシン100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0044】
入力インタフェース105は、物理マシン100に接続された入力デバイス112から入力信号を取得し、プロセッサ101に出力する。入力デバイス112としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、物理マシン100に、複数の種類の入力デバイスが接続されていてもよい。
【0045】
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0046】
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、プロセッサ101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0047】
通信インタフェース107は、ネットワーク114に接続され、ネットワーク114を介して他の情報処理装置と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。なお、ネットワーク114は、クラウドシステム2の内部ネットワークである。
【0048】
物理マシン100aを含む、クラウドシステム2の他の物理マシンや、端末装置4も物理マシン100と同様のハードウェアにより実現される。
図4は、クラウドシステムのネットワーク接続関係の例を示す図である。
【0049】
クラウドシステム2は、リージョン2a、仮想プライベートクラウド(VPC:Virtual Private Cloud)2bおよびアベイラビリティゾーン(AZ:Availability Zone)2c1,2c2を有する。
【0050】
リージョン2aは、複数のデータセンタを有する地域である。VPC2bは、リージョン2a内において、クラウドシステム2に構築された、テナントの仮想ネットワークである。VPCはテナントごとに論理的に分離される。すなわち、複数のテナントに対して複数のVPCが存在し得る。AZ2c1,2c2は、それぞれリージョン2a内に立地する1以上のデータセンタの集合である。図示を省略しているが、AZ2c1,2c2は、テナントが利用するネットワークの管理単位であるサブネットを含む。
【0051】
クラウドシステム2は、監視ノード40、サーバレス関数実行ノード50、マシンイメージ管理ノード60、管理DB(DataBase)70、インターネットゲートウェイ80およびロードバランサ90を有する。
【0052】
監視ノード40は、テナントが利用する仮想マシンを監視することでイベントを検知し、当該イベントに応じてサーバレス関数実行ノード50によるサーバレス関数の実行を指示する。
【0053】
サーバレス関数実行ノード50は、サーバレス関数を実行する。サーバレス関数による処理には、テナントの仮想マシンの起動および停止などやロードバランサ90の設定変更などの制御がある。制御内容ごとに異なるサーバレス関数が予め用意され、実行する制御内容に応じたサーバレス関数が実行されてもよい。
【0054】
マシンイメージ管理ノード60は、テナントが利用する仮想マシンのマシンイメージを管理する。マシンイメージは、仮想マシンの起動に用いられるデータである。
監視ノード40、サーバレス関数実行ノード50およびマシンイメージ管理ノード60は、例えばクラウドシステム2におけるリージョン2aと同位のネットワークに配置される。リージョン2aのネットワークは、VPC2bのネットワークと接続される。監視ノード40、サーバレス関数実行ノード50およびマシンイメージ管理ノード60は、リージョン2aのネットワークを介して、VPC2b内のノードと通信し得る。
【0055】
管理DB70は、監視ノード40やサーバレス関数実行ノード50の処理に用いられるデータを記憶する。管理DB70は、リージョン2aのネットワークに配置される。
インターネットゲートウェイ80は、インターネット3に接続され、インターネット3とVPC2b内のノードとの通信を中継するノードである。インターネットゲートウェイ80は、リージョン2aに設けられる。
【0056】
ロードバランサ90は、インターネットゲートウェイ80とAZ2c1,2c2内の仮想マシンとの間の通信を中継するノードである。ロードバランサ90は、端末装置4により送信されるテナントのリクエストを、インターネットゲートウェイ80を介して受信し、AZ2c1,2c2内の仮想マシンへ振り分ける制御を行う。ロードバランサ90は、VPC2bに設けられる。
【0057】
AZ2c1は、運用系マシン200とストレージ201とを有する。運用系マシン200は、VPC2bに対応するテナントにより利用される運用系の仮想マシンであり、当該テナントが利用するサービスに係るジョブを実行する。ストレージ201は、運用系マシン200のローカルストレージである。
【0058】
AZ2c2は、待機系マシン300とストレージ301とを有する。待機系マシン300は、運用系マシン200に対応する待機系の仮想マシンである。待機系マシン300は、VPC2bに対応するテナントにより利用される。待機系マシン300は、運用系マシン200の稼働時には停止状態とされる。待機系マシン300が停止されていれば、待機系マシン300の分の計算リソースは使用されないため、テナントへの課金は生じない。待機系マシン300は、運用系マシン200の異常時に起動され、運用系マシン200のジョブを引き継いで実行する。ストレージ301は、待機系マシン300のローカルストレージである。ここで、運用系マシン200での運用を待機系マシン300に切り替える制御は、フェールオーバと言われる。後述されるように、フェールオーバは、マシンアップグレードの際にも用いられる。
【0059】
VPC2bには、運用系マシン200および待機系マシン300からVPC2b内のネットワークを介してアクセス可能な共有ストレージ400が設けられる。共有ストレージ400は、運用系マシン200および待機系マシン300からマウント可能である。共有ストレージ400には、運用系マシン200から待機系マシン300への切り替えの際に、待機系マシン300へ引き継ぐデータが格納される。
【0060】
ここで、監視ノード40、サーバレス関数実行ノード50およびマシンイメージ管理ノード60は、物理マシン100,100a,…に含まれる物理マシンにより実現される。監視ノード40、サーバレス関数実行ノード50およびマシンイメージ管理ノード60は、当該物理マシンのハードウェアリソースを用いて実行される仮想マシンにより実現されてもよい。監視ノード40、サーバレス関数実行ノード50およびマシンイメージ管理ノード60は、1つの物理マシンによって実現されてもよいし、異なる物理マシンによって実現されてもよい。インターネットゲートウェイ80やロードバランサ90は、クラウドシステム2に含まれる通信装置や当該物理マシン、あるいは、当該物理マシン上の仮想マシンにより実現される。
【0061】
運用系マシン200および待機系マシン300は、物理マシン100,100a,…に含まれる物理マシンのハードウェアリソースを用いて実行される仮想マシンである。ストレージ201は運用系マシン200に割り当てられる物理マシンのHDDやSSDなどの記憶領域により実現される。ストレージ301は待機系マシン300に割り当てられる物理マシンのHDDやSSDなどの記憶領域により実現される。管理DB70は、リージョン2aに含まれる物理マシンやHDDやSSDなどを有するストレージ装置により実現される。
【0062】
共有ストレージ400は、運用系マシン200および待機系マシン300によりVPC2bのネットワーク経由でアクセス可能なストレージ装置により実現される。当該ストレージ装置は、HDDやSSDなどを有する。例えば、当該ストレージ装置の記憶領域の一部が、共有ストレージ400として、VPC2bに対応するテナントに割り当てられる。
【0063】
図5は、クラウドシステムの機能例を示す図である。
クラウドシステム2は、監視部41およびサーバレス関数51を有する。監視部41は、監視ノード40のプロセッサが監視ノード40のRAMに記憶されたプログラムを実行することで実現される。サーバレス関数51は、サーバレス関数実行ノード50のプロセッサがサーバレス関数実行ノード50のRAMに記憶された軽量プログラムを実行することで実現される。
【0064】
監視部41は、運用系マシン200を監視し、運用系マシン200の異常を検知すると、サーバレス関数実行ノード50によりサーバレス関数51を起動させる。監視部41は、サーバレス関数51によりフェールオーバが行われると、新たにジョブの実行主体(新運用系)となった待機系マシン300の監視を行う。
【0065】
サーバレス関数51は、フェールオーバを行う。フェールオーバの際、サーバレス関数51は、運用系マシン200からの共有ストレージ400のアンマウント、待機系マシン300の起動、待機系マシン300への共有ストレージのマウント、ロードバランサ90によるリクエストの振り分け先の変更を行う。なお、サーバレス関数51のこれらの処理は、複数のサーバレス関数により分担して行われてもよい。
【0066】
ここで、ストレージ201およびストレージ301には、運用系マシン200および待機系マシン300で実行されるジョブに係るテナント共通データが格納される。テナント共通データは、複数のテナントそれぞれのジョブの実行に共通に用いられるデータであり、各テナントのジョブを実行するための基盤のソフトウェアのプログラムである。各テナントは、当該ソフトウェアの機能により自身が利用したいサービスに関する処理をジョブとして定義し、自身が利用するノードに当該ジョブを実行させることができる。
【0067】
また、共有ストレージ400には、運用系マシン200のジョブの実行などに応じて更新される、テナント固有データが格納される。テナント固有データは、ジョブの状態(ジョブ状態)や定義(ジョブ定義)を示す情報である。ジョブ定義は、ジョブの処理内容やジョブの実行スケジュールを含み得る。ジョブ定義は、テナントが実行したいジョブの内容に応じて、当該テナントによって更新される。ジョブ状態は、これまでのジョブの実行結果を含み得る。ジョブ状態は、運用系マシン200によるジョブの実行に応じて更新される。
【0068】
テナント共通データを共有ストレージ400に配置しないことで、共有ストレージ400として使用される記憶容量を節約できる。共有ストレージ400は、利用料が比較的安価な標準ストレージと、標準ストレージよりも利用料が高い高速ストレージを含むことがある。その場合、例えば、テナント固有データのうち、比較的更新頻度の少ないジョブ定義のデータを標準ストレージに保存し、比較的更新頻度の多いジョブ状態のデータを高速ストレージに保存するようにしてもよい。これにより、運用への影響を抑えながら、テナントによる共有ストレージ400の利用コストが低減される。
【0069】
また、管理DB70は、フェールオーバの制御に用いられる管理テーブル71を記憶する。管理テーブル71は、運用系マシン200および待機系マシン300を含む、テナントごとの運用系/待機系マシンの稼働状態やマシンイメージの管理に用いられる。
【0070】
図6は、管理テーブルの例を示す図である。
管理テーブル71は、テナントID(IDentifier)、テナントステータス、マシンID、マシンタイプおよびイメージIDの項目を含む。テナントIDの項目には、テナントIDが登録される。テナントIDはテナントの識別情報である。
【0071】
テナントステータスの項目には、テナントステータスが登録される。テナントステータスは、テナントに対するサービスアップグレードの状態を示す。テナントステータスには「normal」または「patch」が設定される。テナントステータス「normal」は通常運用している状態を示す。テナントステータス「patch」は、後述されるサービスアップグレード済マシンを用意済の状態を示す。
【0072】
マシンIDの項目には、マシンIDが登録される。マシンIDは、仮想マシンの識別情報である。
マシンタイプの項目には、マシンタイプが登録される。マシンタイプは、仮想マシンの種類を示す。マシンタイプ、すなわち、仮想マシンの種類には次の6種類がある。マシンタイプ「production」は、運用系マシンを示す。マシンタイプ「standby」は、待機系マシンを示す。マシンタイプ「standby_new」は、サービスアップグレード済の待機系マシンを示す。マシンタイプ「production_new」は、サービスアップグレード済の運用系マシンを示す。マシンタイプ「standby_old」は、フェールオーバによる切り替え直前の待機系マシン、すなわち、旧待機系マシンを示す。マシンタイプ「production_old」は、フェールオーバによる切り替え直前の運用系マシン、すなわち、旧運用系マシンを示す。
【0073】
イメージIDは、マシンIDに対応する仮想マシンの作成元のマシンイメージの識別情報である。イメージIDは、マシンイメージのデータ本体の取得に用いられる。
例えば、管理テーブル71は、テナントID「1」に対してテナントステータス「normal」を保持する。また、管理テーブル71は、マシンID「1」に対して、マシンタイプ「production」、イメージID「imageXXX1」のレコードを有する。当該レコードは、運用系マシン200を示すデータである。また、管理テーブル71は、テナントID「1」に対して、マシンID「2」、マシンタイプ「standby」、イメージID「imageXXX1」のレコードを有する。このレコードは、待機系マシン300を示すデータである。
【0074】
管理テーブル71には、他のテナントが利用する仮想マシンのレコードも同様に登録され得る。
図7は、運用系/待機系マシンによる共有ストレージのマウント例を示す図である。
【0075】
運用系マシン200が稼働中の場合、待機系マシン300は停止される。この場合、共有ストレージ400は、運用系マシン200にマウントされる。待機系マシン300が停止中の場合、共有ストレージ400は、待機系マシン300にはマウントされていない状態、すなわち、待機系マシン300に対してはアンマウントの状態となる。運用系マシン200は、ジョブ定義およびジョブ状態をテナント固有データとして共有ストレージ400に書き込む。運用系マシン200は、テナントによるジョブ定義の変更の入力に応じて、共有ストレージ400のテナント固有データに含まれるジョブ定義を更新する。また、運用系マシン200は、ジョブの実行に応じて、共有ストレージ400のテナント固有データに含まれるジョブ状態を更新する。
【0076】
運用系マシン200から待機系マシン300への切り替えが行われる場合、共有ストレージ400は運用系マシン200からアンマウントされる。そして、待機系マシン300が起動され、共有ストレージ400は待機系マシン300にマウントされる。すると、待機系マシン300は、共有ストレージ400から、運用系マシン200により書き込まれた最新のテナント固有データを読み取り可能になる。待機系マシン300は、ストレージ301に記憶されるテナント共通データおよび共有ストレージ400に記憶されるテナント固有データに基づいて、運用系マシン200からジョブを引き継いで実行する。
【0077】
次に、運用系マシン200から待機系マシン300への切り替えの処理手順を説明する。以下では、テナントID「1」のテナントに関する手順を説明するが、他のテナントに対しても同様の手順となる。
【0078】
図8は、運用系/待機系マシンの切り替えの例を示すフローチャートである。
(S10)監視部41は、運用系マシン200における、ジョブの実行に係るサービスの異常を検知する。監視部41は、サーバレス関数実行ノード50にサーバレス関数51の実行を指示する。すると、サーバレス関数51が起動され、下記の処理が実行される。
【0079】
(S11)サーバレス関数51は、管理テーブル71から、運用系マシン200に対応するテナントIDとマシンタイプ「standby」のマシンのマシンIDとを取得する。ここで、図中、マシンタイプ「standby」を、「type:standby」のように略記することがある。
【0080】
(S12)サーバレス関数51は、ロードバランサ90の接続先を削除する。具体的には、サーバレス関数51は、ロードバランサ90によるリクエストの転送先から、運用系マシン200を削除する。
【0081】
(S13)サーバレス関数51は、マシンタイプ「production」のマシンIDのマシン、すなわち、運用系マシン200の該当のサービスを停止させる。
(S14)サーバレス関数51は、マシンタイプ「production」のマシンIDのマシン、すなわち、運用系マシン200の共有ストレージ400をアンマウントする。
【0082】
(S15)サーバレス関数51は、マシンタイプ「standby」のマシンIDのマシン、すなわち、待機系マシン300を起動させる。
(S16)サーバレス関数51は、マシンタイプ「standby」のマシンIDのマシン、すなわち、待機系マシン300に、共有ストレージ400をマウントする。
【0083】
(S17)サーバレス関数51は、マシンタイプ「standby」のマシンIDのマシン、すなわち、待機系マシン300の該当のサービスを起動させる。
(S18)サーバレス関数51は、ロードバランサ90の接続先に待機系マシン300を追加する。これにより、テナントのリクエストがロードバランサ90によって待機系マシン300へ振り分けられるようになる。
【0084】
(S19)サーバレス関数51は、管理テーブル71を更新する。具体的には、サーバレス関数51は、待機系マシン300のマシンタイプを「production」に変更する。また、サーバレス関数51は、運用系マシン200を停止させ、運用系マシン200のマシンタイプを「standby」に変更する。そして、運用系マシン200から待機系マシン300への切り替えが終了する。
【0085】
第2の実施の形態のクラウドシステム2では、サーバレス関数51の制御により、運用系マシン200と待機系マシン300とのデータの連携は共有ストレージ400を用いて行われる。待機系マシン300は、運用系マシン200が更新した固有データを共有ストレージ400から直接読み取れる。このため、運用系マシン200と待機系マシン300とで定期的なデータの同期処理を行わなくてよくなり、運用系マシン200から待機系マシン300へ切り替えるときに待機系マシン300を起動させればよい。
【0086】
ただし、共有ストレージ400は、運用系マシン200および待機系マシン300によりネットワーク経由で共有される。このため、切り替え時に共有ストレージ400から待機系マシン300へ比較的多量のデータを読み取らせると、当該データの読み取りに時間がかかる可能性がある。これは、切り替え完了の遅延の原因になり可用性に影響する。
【0087】
そこで、サーバレス関数51は、運用系マシン200のストレージ201および待機系マシン300のストレージ301それぞれにテナント共通データを配置し、共有ストレージ400にはテナント固有データが書き込まれるようにする。これにより、共有ストレージ400にテナント共通データおよびテナント固有データの両方を書き込むよりも、切り替え時において待機系マシン300により共有ストレージ400から読み取るデータ量が低減される。その結果、運用系マシン200の異常検知から待機系マシン300によりサービスに係るジョブを再開までに要する時間が低減され、運用系マシン200から待機系マシン300への迅速な切り替えを行えるようになる。
【0088】
こうして、同期処理の都度、待機系マシン300を起動して同期処理を行わずに済み、待機系マシン300の実行に係る余計なコストを削減するとともに、待機系マシン300への切り替えを高速化できる。すなわち、運用系マシン200により提供されるサービスの可用性が効率的に向上される。
【0089】
更に、テナント共通データが共有ストレージ400に保存されないので、テナント共通データおよびテナント固有データの両方を共有ストレージ400に保存するよりも、共有ストレージ400として割く記憶リソースを低減できるという利点もある。また、運用系マシン200が異常により停止した場合でも、待機系マシン300により共有ストレージ400から最新のテナント固有データを取得して、ジョブ運用を継続できる利点もある。
【0090】
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
【0091】
第3の実施の形態では、第2の実施の形態で例示したフェールオーバの処理を、運用系マシン200により提供されるサービスのアップグレード時に利用する例を説明する。第3の実施の形態のクラウドシステム2のハードウェアや機能は、
図2~
図5で例示したハードウェアや機能と同様であるため説明を省略する。
【0092】
図9は、第3の実施の形態のマシン作成例を示す図である。
AZ2c1は、運用系マシン200およびストレージ201に加えて、サービスアップグレード済マシン200aを有する。サービスアップグレード済マシン200aは、運用系マシン200が提供するサービスの、アップグレード後のプログラムがインストールされた仮想マシンである。サービスアップグレード済マシン200aは、マシンイメージ61を用いて作成される。マシンイメージ61は、当該アップグレード後のプログラムがインストールされた仮想マシンのイメージデータである。図示を省略しているが、サービスアップグレード済マシン200aもローカルストレージを有し、当該ローカルストレージにアップグレード後のプログラムがテナント共通データとして格納される。
【0093】
AZ2c2は、待機系マシン300およびストレージ301に加えて、サービスアップグレード済マシン300aを有する。サービスアップグレード済マシン300aは、運用系マシン200が提供するサービスの、アップグレード後のプログラムがインストールされた仮想マシンである。サービスアップグレード済マシン300aも、マシンイメージ61を用いて作成される。図示を省略しているが、サービスアップグレード済マシン300aもローカルストレージを有し、当該ローカルストレージにアップグレード後のプログラムがテナント共通データとして格納される。
【0094】
例えば、サービスアップグレード済マシン200aは、新たな待機系(新待機系)として用いられる。また、サービスアップグレード済マシン300aは、新たな運用系(新運用系)として用いられる。
【0095】
なお、マシンイメージ61は、アップグレード後のプログラムであるテナント共通データを含むがテナント固有データを含まない。このため、マシンイメージ61は、複数のテナントに対して使い回すことができる。よって、マシンイメージ61をテナントごとに作成しなくてよいため、サービスアップグレード済の仮想マシンの配備を効率化できる。
【0096】
サービスアップグレード済マシン200a,300aは、マシンイメージ61から作成されて起動された直後に停止されて起動可能な状態のまま維持される。サーバレス関数51は、サービスアップグレード済マシン200a,300aを次のように管理する。
【0097】
図10は、管理テーブルの例を示す図である。
管理テーブル71aは、サービスアップグレード済マシン200a,300aの情報が管理テーブル71に追加された場合を例示する。管理テーブル71aに含まれる項目は、管理テーブル71に含まれる項目と同様である。
【0098】
例えば、管理テーブル71aは、テナントID「1」に対して、テナントステータス「patch」を保持する。テナントステータス「patch」は、前述のように、サービスアップグレード済マシン200a,300aを用意済の状態を示す。また、管理テーブル71aは、テナントID「1」に対して、マシンID「3」、マシンタイプ「standby_new」、イメージID「imageXXX2」のレコードを保持する。当該レコードは、サービスアップグレード済マシン200aを示すデータである。また、管理テーブル71aは、テナントID「1」に対して、マシンID「4」、マシンタイプ「production_new」、イメージID「imageXXX2」のレコードを保持する。当該レコードは、サービスアップグレード済マシン300aを示すデータである。ここで、イメージID「imageXXX2」は、マシンイメージ61を示す。
【0099】
なお、管理テーブル71aでは、テナントID「2」のテナントの仮想マシンに関するデータが登録される例も示されている。
図11は、サーバレス関数による管理テーブルの編集例を示す図である。
【0100】
サーバレス関数51は、マシンイメージ61からサービスアップグレード済マシン200a,300aが作成されると、サービスアップグレード済マシン200a,300aの情報を管理テーブル71aに登録する。
【0101】
サービスアップグレード済マシン200a,300aの作成は、運用系マシン200を起動状態として、運用系マシン200を稼働させたまま行われる。サービスアップグレード済マシン200a,300aは、何れも作成後に停止状態とされる。このようにして、サーバレス関数51は、AZ2c1,2c2にそれぞれサービスアップグレード済マシン200a,300aを用意する。
【0102】
図12は、サーバレス関数によるロードバランサの制御例を示す図である。
サーバレス関数51は、運用系マシン200によるジョブ実行が行われない時間帯に、ジョブの実行主体を現在の運用系マシン200からサービスアップグレード済マシン300a(新運用系)に切り替える。具体的には、サーバレス関数51は、管理テーブル71aに基づいて、運用系マシン200から共有ストレージ400をアンマウントし、運用系マシン200を停止させる。次に、サーバレス関数51は、サービスアップグレード済マシン300aを起動させ、共有ストレージ400をサービスアップグレード済マシン300aにマウントする。
【0103】
そして、サーバレス関数51は、管理テーブル71aに基づいて、テナントのリクエストの転送先を、運用系マシン200からサービスアップグレード済マシン300aに切り替える設定を、ロードバランサ90に対して行う。例えば、サーバレス関数51は、ロードバランサ90が保持する運用系マシン接続先情報における運用系マシン200のホスト名またはIPアドレスを、サービスアップグレード済マシン300aのホスト名またはIPアドレスに書き換える。また、ロードバランサ90が待機系マシン接続先情報を有する場合、待機系マシン接続先情報における待機系マシン300のホスト名またはIPアドレスを、サービスアップグレード済マシン200aのホスト名またはIPアドレスに書き換えてもよい。
【0104】
このようにして、サーバレス関数51により、運用系マシン200での運用からサービスアップグレード済マシン300aでの運用への切り替えが行われる。
次に、運用系マシン200からサービスアップグレード済マシン300aへの切り替えの処理手順を説明する。以下では、テナントID「1」のテナントに関する手順を説明するが、他のテナントに対しても同様の手順となる。
【0105】
図13は、サービスアップグレード済マシン用意の例を示すフローチャートである。
下記の手順は、マシンイメージ61からの仮想マシンの作成指示が監視部41に入力されると、監視部41によりサーバレス関数51が起動されて実行される。当該仮想マシンの作成指示は、マシンイメージ管理ノード60に入力されてもよく、マシンイメージ管理ノード60によりサーバレス関数51が起動されて、下記の手順が実行されてもよい。
【0106】
(S20)サーバレス関数51は、サービスアップグレード済マシン作成を行う。サービスアップグレード済マシン作成の詳細は後述される。サービスアップグレード済マシン作成は、運用系マシン200によるジョブ運用中に実行される。
【0107】
(S21)サーバレス関数51は、管理テーブルのマシンタイプ更新を行う。マシンタイプ更新の詳細は後述される。
(S22)サーバレス関数51は、管理テーブルのテナントステータス更新を行う。例えば、サーバレス関数51は、テナントID「1」に対応するテナントステータスを「normal」から「patch」に更新する。そして、サービスアップグレード済マシン用意が終了する。
【0108】
図10の管理テーブル71aは、ステップS22のテナントステータスの更新が、ステップS21のマシンタイプ更新の前に行われる場合の、当該マシンタイプ更新の直前の段階の管理テーブルを例示している。
【0109】
図14は、サービスアップグレード済マシン作成の例を示すフローチャートである。
サービスアップグレード済マシン作成は、ステップS20に相当する。
(S30)サーバレス関数51は、管理テーブル71から、テナントID「1」に対応するマシンタイプ「production」、「standby」のマシン、すなわち、運用系マシン200、待機系マシン300の情報を取得する。
【0110】
(S31)サーバレス関数51は、マシンタイプ「standby」のマシン、すなわち、待機系マシン300が存在するサブネットを取得する。
(S32)サーバレス関数51は、ステップS31で取得したサブネットに、サービスアップグレード済のマシンイメージ61から、マシンタイプ「production_new」のマシン、すなわち、サービスアップグレード済マシン300aを作成する。ここで、サーバレス関数51は、例えば現在の運用系マシン200が存在するAZ2c1とは異なるAZ2c2に、サービスアップグレード済マシン300aを作成する。
【0111】
(S33)サーバレス関数51は、ステップS32の作成によりサービスアップグレード済マシン300a(マシンタイプ「production_new」のマシン)が起動するため、サービスアップグレード済マシン300aを停止させる。
【0112】
(S34)サーバレス関数51は、マシンタイプ「production」のマシン、すなわち、運用系マシン200が存在するサブネットを取得する。
(S35)サーバレス関数51は、ステップS34で取得したサブネットに、サービスアップグレード済のマシンイメージ61から、マシンタイプ「standby_new」のマシン、すなわち、サービスアップグレード済マシン200aを作成する。ここで、サーバレス関数51は、例えば、新運用系となるサービスアップグレード済マシン300aが存在するAZ2c2とは異なるAZ2c1に、サービスアップグレード済マシン200aを作成する。
【0113】
(S36)サーバレス関数51は、ステップS35において作成したサービスアップグレード済マシン200a(マシンタイプ「standby_new」のマシン)が起動するため、サービスアップグレード済マシン200aを停止させる。
【0114】
(S37)サーバレス関数51は、サービスアップグレード済マシン200a,300aの情報を管理テーブル71に追加する。そして、サービスアップグレード済マシン作成が終了する。
【0115】
図15は、管理テーブルのマシンタイプ更新の例を示すフローチャートである。
管理テーブルのマシンタイプ更新は、ステップS21に相当する。
(S40)サーバレス関数51は、テナントID「1」に対応する各マシンのマシンタイプを取得する。
【0116】
(S41)サーバレス関数51は、ステップS37の更新後の管理テーブルに含まれるテナント「1」の各仮想マシンのマシンタイプを次のように更新する。サーバレス関数51は、マシンタイプ「production」を「production_old」に更新する。サーバレス関数51は、マシンタイプ「standby_new」を「standby」に更新する。サーバレス関数51は、マシンタイプ「standby」を「standby_old」に更新する。サーバレス関数51は、マシンタイプ「production_new」を「production」に更新する。そして、管理テーブルのマシンタイプ更新が終了する。
【0117】
図16は、管理テーブルのマシンタイプ更新の具体例を示す図である。
サーバレス関数51は、ステップS37で管理テーブル71を管理テーブル71bに更新する。サーバレス関数51は、
図15で例示した手順により、管理テーブル71bを管理テーブル71cに更新する。管理テーブル71cは、ステップS41における更新後の管理テーブルを示す。その後、サーバレス関数51は、ステップS22を実行することで、管理テーブル71cのテナントステータス「normal」を「patch」に更新する。管理テーブル71dは、管理テーブル71cのテナントステータス「normal」を「patch」に更新した状態を示す。
【0118】
図17は、サービスアップグレード制御の例を示すフローチャートである。
下記の手順の実行主体をサーバレス関数51として記載するが、下記の手順はサービスアップグレード済マシン用意を実行するサーバレス関数51とは異なるサーバレス関数により実行されてもよい。例えば、サーバレス関数51は所定の常駐プロセスにより定期的に起動されて、下記の手順を実行する。当該常駐プロセスは、例えば監視ノード40で実行されてもよいし、サーバレス関数実行ノード50で実行されてもよい。
【0119】
(S50)サーバレス関数51は、管理テーブル71cから、該当のテナントのテナントステータスを取得する。なお、一例として、テナントID「1」のテナントに対する手順を示すが、他のテナントに対しても同様の手順となる。
【0120】
(S51)サーバレス関数51は、テナントステータスが「patch」であるか否かを判定する。テナントステータスが「patch」の場合、ステップS53に処理が進む。テナントステータスが「patch」ではない場合、すなわち、テナントステータスが「normal」の場合、ステップS52に処理が進む。
【0121】
(S52)サーバレス関数51は、一定時間待機する。なお、ステップS52では、常駐プロセスが一定時間待機し、一定時間経過後にサーバレス関数51を起動するようにしてもよい。そして、ステップS50に処理が進む。
【0122】
(S53)サーバレス関数51は、サービスアップグレード可否判定を行う。サービスアップグレード可否判定の詳細は後述される。サーバレス関数51は、サービスアップグレード可否判定において、サービスアップグレードが可能と判定されると、ステップS54に処理を進める。
【0123】
(S54)サーバレス関数51は、ロードバランサ90の接続先を削除する。具体的には、サーバレス関数51は、ロードバランサ90の接続先から、該当のテナントの運用系マシン200の情報を削除する。
【0124】
(S55)サーバレス関数51は、フェールオーバの各処理を実行する。フェールオーバの各処理の詳細は後述される。フェールオーバの各処理により、管理テーブル71cが更新され、ロードバランサ90の接続先に新運用系の仮想マシンを追加する準備が整う。
【0125】
(S56)サーバレス関数51は、ロードバランサ90の接続先に新運用系を追加する。具体的には、サーバレス関数51は、新運用系の仮想マシンである、サービスアップグレード済マシン300aの情報を、ロードバランサ90の接続先に追加する。
【0126】
(S57)サーバレス関数51は、該当のテナントについて、管理テーブルのテナントステータスを「normal」に更新する。そして、ステップS50に処理が進む。次のステップS50以降の手順では、次のテナントに対するサービスアップグレード制御が行われる。
【0127】
図18は、サービスアップグレード可否判定の例を示すフローチャートである。
サービスアップグレード可否判定は、ステップS53に相当する。
(S60)サーバレス関数51は、該当のテナントのジョブの実行状態を取得する。例えば、サーバレス関数51は、運用系マシン200からジョブの実行状態を取得してもよい。例えば、運用系マシン200は、共有ストレージ400に格納されているジョブ実行状態の情報を取得し、サーバレス関数51に提供してもよい。
【0128】
(S61)サーバレス関数51は、当該ジョブのスケジュールを取得する。例えば、サーバレス関数51は、運用系マシン200からジョブのスケジュールを取得してもよい。例えば、運用系マシン200は、共有ストレージ400に格納されているジョブ定義の情報を取得し、ジョブ定義の情報に含まれるスケジュールの情報をサーバレス関数51に提供してもよい。
【0129】
(S62)サーバレス関数51は、ステップS60,S61で取得したジョブ実行状態およびジョブのスケジュールに基づいて、現在、サービスアップグレードが可能であるか否かを判定する。現在、サービスアップグレードが可能な場合、サービスアップグレード可否判定が終了する。現在、サービスアップグレードが不可能な場合、ステップS63に処理が進む。例えば、サーバレス関数51は、運用系マシン200でジョブを実行中の場合またはジョブの実行開始までの時刻が所定時間内に迫っている場合に、現在、サービスアップグレードが不可能であると判定してもよい。一方、サーバレス関数51は、運用系マシン200でジョブを実行中でなく、かつ、ジョブの実行開始までの時刻が現時点から所定時間よりも後である場合に、現在、サービスアップグレードが可能と判定してもよい。なお、ステップS62の判定に用いられる所定時間は、フェールオーバの所要時間に応じて予め定められる。
【0130】
(S63)サーバレス関数51は、一定時間待機する。そして、ステップS60に処理が進む。
このように、サーバレス関数51は、運用系マシン200によるジョブが中断されたり、スケジュール通りに実行されなかったりすることがないように、サービスアップグレードにおけるフェールオーバの実行タイミングを決定する。これにより、運用系マシン200によるジョブ運用への影響が低減される。
【0131】
図19は、フェールオーバの各処理の例を示すフローチャートである。
フェールオーバの各処理は、ステップS55に相当する。
(S70)サーバレス関数51は、処理対象のテナントのテナントIDに対応するマシンタイプ「production_old」、「production」のマシンIDを、管理テーブル71cから取得する。
【0132】
(S71)サーバレス関数51は、マシンタイプ「production_old」のマシンIDのマシン、すなわち、運用系マシン200のサービスを停止する。
(S72)サーバレス関数51は、マシンタイプ「production_old」のマシンIDのマシン、すなわち、運用系マシン200の共有ストレージ400をアンマウントする。
【0133】
(S73)サーバレス関数51は、マシンタイプ「produciton」のマシンIDのマシン、すなわち、サービスアップグレード済マシン300aを起動する。
(S74)サーバレス関数51は、マシンタイプ「produciton」のマシンIDのマシン、すなわち、サービスアップグレード済マシン300aに共有ストレージ400をマウントする。
【0134】
(S75)サーバレス関数51は、マシンタイプ「produciton」のマシンIDのマシン、すなわち、サービスアップグレード済マシン300aのサービスを起動する。
【0135】
(S76)サーバレス関数51は、マシンタイプ「production_old」のマシンIDのマシン、すなわち、運用系マシン200を停止する。
(S77)サーバレス関数51は、マシンタイプ「production_old」、「standby_old」それぞれのマシンIDのマシン、すなわち、運用系マシン200および待機系マシン300を削除する。
【0136】
(S78)サーバレス関数51は、マシンタイプ「production_old」、「standby_old」それぞれのマシンIDのマシン、すなわち、運用系マシン200および待機系マシン300の情報を管理テーブル71cから削除する。そして、フェールオーバの各処理が終了する。
【0137】
こうして、管理テーブル71cから旧運用系の仮想マシン、および、旧待機系の仮想マシンの情報が削除され、その後、ステップS57により該当のテナントのテナントステータスが「patch」から「normal」に変更される。サービスアップグレード済マシン300aは、運用系マシン200により更新されたテナント固有データを共有ストレージ400から直接読み取ることができる。また、サービスアップグレード済マシン300aのローカルストレージには、テナント共通データが格納されている。このため、サービスアップグレード済マシン300aは、テナント共通データとテナント固有データとに基づいて、運用系マシン200からサービスのジョブを引き継いで実行することができる。
【0138】
このように、サーバレス関数51は、運用系マシン200からサービスアップグレード済マシン300aへの切り替えの際にも、共有ストレージ400を介して両マシンによる固有データの共有を行うことで、当該切り替えを効率的に行える。例えば、共有ストレージ400にテナント共通データおよびテナント固有データの両方を書き込むよりも、切り替え時においてサービスアップグレード済マシン300aにより共有ストレージ400から読み取るデータ量が低減される。その結果、運用系マシン200の代わりにサービスアップグレード済マシン300aによりサービスに係るジョブを再開までに要する時間が低減され、運用系マシン200からサービスアップグレード済マシン300aへの迅速な切り替えを行えるようになる。
【0139】
次に、第2の実施の形態および第3の実施の形態に対する比較例を説明する。
図20は、比較例を示す図である。
比較例は、AZ2c1,2c2内の各仮想マシンにマウント可能な共有ストレージ400ではなく、クラウドシステム2が提供する外部ストレージ5bを用いて、AZ2c1,2c2内の各仮想マシンでデータを同期する場合である。外部ストレージ5bは、クラウドシステム2の比較的上位のネットワークに設けられ、AZ2c1,2c2内の各仮想マシンにマウントすることはできない。外部ストレージ5bは、管理ノード5aによりアクセスされる。管理ノード5aは、例えば監視ノード40、サーバレス関数実行ノード50およびマシンイメージ管理ノード60と同じ階層のネットワークに設けられる。
【0140】
比較例では、AZ2c1は監視部210を有する。監視部210は、運用系マシン200を監視し、管理ノード5aと連携する。監視部210は、運用系マシン200により実現されてもよいし、AZ2c1内の、運用系マシン200とは異なる仮想マシンにより実現されてもよい。同様に、AZ2c2は監視部310を有する。監視部310は、待機系マシン300を監視し、管理ノード5aと連携する。監視部310は、待機系マシン300により実現されてもよいし、AZ2c2内の、待機系マシン300とは異なる仮想マシンにより実現されてもよい。例えば、監視部210は、運用系マシン200の異常を検知すると、管理ノード5aにより運用系マシン200から待機系マシン300への切り替えを指示する。
【0141】
ここで、比較例の構成では、運用系マシン200は、ローカルのストレージ201に、テナント共通データ(プログラム)およびテナント固有データ(ジョブ定義およびジョブ状態)の両方を書き込む。そして、ストレージ201におけるテナント共通データやテナント固有データが更新されると、待機系マシン300との同期のために、更新後のデータが外部ストレージ5bに書き込まれる。
【0142】
管理ノード5aは、同期を行う際に、待機系マシン300を起動させる。起動した待機系マシン300は、外部ストレージ5bから最新のデータを取得し、ローカルのストレージ301に反映させる。
【0143】
しかし、このように同期処理のたびに、待機系マシン300を実行すると計算リソースが消費され、テナントが本来実行したいジョブの他に、同期処理のためのコストが発生するという問題がある。
【0144】
すなわち、比較例の方法では、可用性は維持できるが外部ストレージ5bに更新がある毎に待機系マシン300を起動するため、待機系マシン300の起動時間が増加する分、運用コストの増加が起きる。
【0145】
そこで、第2の実施の形態で例示したように、サーバレス関数実行ノード50は、運用系マシン200と待機系マシン300とのデータの連携が、共有ストレージ25を用いて行われるようにする。待機系マシン300は、運用系マシン200が更新した固有データを共有ストレージ400から読み取れる。これにより、運用系マシン200と待機系マシン300との間で定期的な、あるいは、データ更新毎のデータの同期処理を行わなくてよくなり、運用系マシン200から待機系マシン300へ切り替えるときに待機系マシン300を起動させればよい。
【0146】
ただし、共有ストレージ400を運用系マシン200および待機系マシン300からマウント可能とするなどの方法により両マシンで共有する場合、共有ストレージ400は、運用系マシン200および待機系マシン300によりネットワーク経由で共有される。このため、切り替え時に共有ストレージ400から待機系マシン300へ比較的多量のデータを読み取らせると、当該データの読み取りに時間がかかる可能性がある。これは、切り替え完了の遅延の原因になり可用性に影響する。
【0147】
そこで、サーバレス関数実行ノード50は、運用系マシン200のストレージ201および待機系マシン300のストレージ301それぞれにテナント共通データが配置され、共有ストレージ400にはテナント固有データが書き込まれるようにする。これにより、共有ストレージ400にテナント共通データおよびテナント固有データの両方を書き込むよりも、切り替え時において待機系マシン300により共有ストレージ400から読み取るデータ量が低減される。その結果、例えば運用系マシン200の異常検知から待機系マシン300によりサービスに係るジョブを再開までに要する時間が低減され、運用系マシン200から待機系マシン300への迅速な切り替えを行えるようになる。
【0148】
こうして、サーバレス関数実行ノード50は、同期処理の都度、待機系マシン300を起動して同期処理を行う方法に比べて、当該同期処理を省略することで待機系マシン300の実行に係る余計なコストを削減するとともに、フェールオーバを高速化できる。すなわち、サーバレス関数実行ノード50は、運用系マシン200により提供されるサービスの可用性を効率的に向上できる。
【0149】
更に、テナント共通データが共有ストレージ400に保存されないので、テナント共通データおよびテナント固有データの両方を共有ストレージ400に保存するよりも、共有ストレージ400として割く記憶リソースを低減できるという利点もある。
【0150】
第3の実施の形態で例示した、運用系マシン200からサービスアップグレード済マシン300aへの切り替えの際も、運用系マシン200から待機系マシン300への切り替えと同様の利点がある。すなわち、第3の実施の形態においても、サーバレス関数実行ノード50は、運用系マシン200により提供されるサービスの可用性を効率的に向上できる。
【0151】
また、ジョブ実行では高頻度でデータ書き込みが発生するため、比較例の方法では、待機系マシン300のストレージ301の更新を行う頻度が多くなり、待機系マシン300の起動状態が続く。よって、サービスアップグレードのための隙間時間が確保できないため、ジョブ運用を止める必要がある。また、ジョブ運用を止めるため、サービスアップグレードのためにテナントとの時間調整の手間がかかる問題もある。
【0152】
一方、第3の実施の形態で例示したように、サーバレス関数実行ノード50によれば、サービスアップグレードのために運用系マシン200によるジョブ運用を止めなくて済む。すなわち、サーバレス関数実行ノード50は、ジョブ運用への影響を抑えて、サービスアップグレード済マシン300aへの円滑な切り替えを行える。
【0153】
以上説明したように、サーバレス関数実行ノード50に用いられるプロセッサ101は次の処理を実行する。下記の処理は、プロセッサ101がサーバレス関数51に相当するプログラムを実行することで実現されてもよい。
【0154】
プロセッサ101は、複数のユーザのうちの第1ユーザに対応するジョブに用いられる運用系ノードの第1記憶部および待機系ノードの第2記憶部それぞれに、複数のユーザそれぞれに対応するジョブの実行に共通に用いられる共通データを配置する。プロセッサ101は、運用系ノードによるジョブの実行に応じて、または第1ユーザにより更新される、第1ユーザに対応するジョブの固有データを運用系ノードから共有ストレージに書き込ませる。例えば、プロセッサ101は、運用系ノードに共有ストレージをマウントし、固有データの書き込み先を共有ストレージに指定することで、運用系ノードにより固有データを共有ストレージに書き込ませる。それとともに、プロセッサ101は、運用系ノードの稼働中には待機系ノードを停止状態とする。プロセッサ101は、ジョブの実行主体を運用系ノードから待機系ノードに切り替える際に、待機系ノードを起動し、共有ストレージからの、待機系ノードによる固有データの読み取りを可能にする設定を行う。
【0155】
これにより、プロセッサ101は、サービスの可用性を効率的に向上できる。例えば、同期処理のために運用系ノードの稼働中に待機系ノードを起動させずに済み、待機系ノードの実行時間を減らせる。よって、待機系ノードの利用に伴うコストが低減される。また、待機系ノードは、切り替え時に共有ストレージから固有データを読み取ればよく、共有ストレージから共通データを読み取らなくてよい。このため、切り替え時のデータ読み込みの時間が短縮され、切り替えの高速化が図られる。なお、運用系マシン200は、運用系ノードの一例である。待機系マシン300は、待機系ノードの一例である。ストレージ201は、第1記憶部の一例である。ストレージ301は、第2記憶部の一例である。運用系マシン200および待機系マシン300に対応する共有ストレージは、共有ストレージ400である。また、ユーザは、テナントと言われてもよい。更に、プロセッサ101は、通信インタフェース107を介して、運用系ノードや待機系ノードと通信する。
【0156】
例えば、共有ストレージは、運用系ノードおよび待機系ノードにマウント可能である。プロセッサ101は、待機系ノードによる固有データの読み取りを可能にする設定では、共有ストレージを待機系ノードにマウントする。
【0157】
これにより、プロセッサ101は、運用系ノードと待機系ノードとのデータ共有を容易に実現できる。例えば、プロセッサ101は、通信インタフェース107を介して、待機系ノードのOSへマウントコマンドを入力して実行させればよく、データ共有のために特別なソフトウェアを運用系ノードや待機系ノードへ導入しなくて済む。
【0158】
プロセッサ101は、待機系ノードによる固有データの読み取りを可能にする設定では、共有ストレージを待機系ノードにマウントする前に、運用系ノードから共有ストレージをアンマウントする。
【0159】
これにより、プロセッサ101は、運用系ノードおよび待機系ノードの両方から共有ストレージに保持される固有データが更新されることを防ぎ、固有データの整合性を保てる。
【0160】
また、プロセッサ101は、運用系ノードから共有ストレージをアンマウントする前に、中継ノードが保持する接続先情報から運用系ノードの情報を削除する。ここで、中継ノードは、端末装置4などのアクセス元ノードにより送信されるリクエストを運用系ノードや待機系ノードへ中継するノードである。ロードバランサ90は、中継ノードの一例である。そして、プロセッサ101は、共有ストレージを待機系ノードにマウントした後に、中継ノードが保持する接続先情報に待機系ノードの情報を追加する。
【0161】
これにより、プロセッサ101は、アクセス元ノードのリクエストが、運用系ノードに代えて、待機系ノードに振り分けられるように設定できる。また、プロセッサ101は、切り替えの最中に、運用系ノードや待機系ノードへリクエストが転送されることを防げる。
【0162】
また、共通データは、例えばジョブを動作させるジョブ管理ソフトウェアなどのプログラム、すなわち、所定プログラムである。プロセッサ101は、所定プログラムをアップグレードした新ノードをクラウドシステム2上に用意して停止状態としてもよい。プロセッサ101は、ジョブの実行主体を運用系ノードから新ノードに切り替える際に、新ノードを起動し、共有ストレージからの、新ノードによる固有データの読み取りを可能にする設定を行ってもよい。例えば、プロセッサ101は、新ノードによる固有データの読み取りを可能にする設定では、共有ストレージを新ノードにマウントする。前述のサービスアップグレード済マシン300aは新ノードの一例である。
【0163】
これにより、プロセッサ101は、サービスの可用性を効率的に向上できる。例えば、切り替え時だけ新ノードを起動させればよいので、同期処理のために運用系ノードの稼働中に新ノードを起動させずに済み、新ノードの実行時間を減らせる。よって、新ノードの利用に伴うコストが低減される。また、新ノードは、切り替え時に共有ストレージからテナント固有データを読み取ればよく、共有ストレージから共通データを読み取らなくてよい。このため、切り替え時のデータ読み込みの時間が短縮され、切り替えの高速化が図られる。なお、新ノードの用意は、当該新ノードに対応するマシンイメージのデータに基づいてクラウドシステム2上に新ノードを作成することで行われる。
【0164】
プロセッサ101は、新ノードを用意すると、ノードの管理に用いられる管理テーブルに、運用系ノードに対して新ノードを用意済であることを記録してもよい。例えば、管理テーブル71aにおけるテナントステータス「patch」は新ノードを用意済であることを示す。プロセッサ101は、管理テーブルに基づいて新ノードを用意済であることを検出すると、運用系ノードのジョブの実行状況に応じてジョブの実行主体を運用系ノードから新ノードに切り替えるタイミングを決定する。例えば、プロセッサ101は、運用系ノードによるジョブの定義情報からジョブの実行スケジュールを取得し、当該ジョブが実行されない空き時間を特定し、当該空き時間に含まれる時刻を切り替えのタイミングとして決定してもよい。プロセッサ101は、決定したタイミングにおいてジョブの実行主体を運用系ノードから新ノードに切り替える際に、管理テーブルにおいて、運用系ノードの情報を削除し、新ノードを新たな運用系として設定する。
【0165】
これにより、プロセッサ101は、運用系ノードから新ノードへの切り替えに伴うジョブの実行への影響を抑えて、管理テーブルにより現在運用系となっている仮想マシンを適切に管理できる。
【0166】
また、運用系ノードは、第1アベイラビリティゾーン(例えばAZ2c1)で動作してもよい。待機系ノードは、第2アベイラビリティゾーン(例えばAZ2c2)で動作してもよい。この場合、プロセッサ101は、第1アベイラビリティゾーンおよび第2アベイラビリティゾーンのうちの一方のアベイラビリティゾーンに新ノードを用意し、他方のアベイラビリティゾーンに新ノードに対応する待機系のノードを用意してもよい。
【0167】
このように、プロセッサ101は、運用系/待機系マシンを異なるアベイラビリティゾーンに配置することで、アベイラビリティゾーンでの障害に対する耐障害性を高め、サービスの可用性を向上させることができる。なお、第1アベイラビリティゾーンは、運用系ノードが割り当てられる1以上の第1データセンタの集合と言われてもよいし、当該1以上の第1データセンタが属するゾーンと言われてもよい。第2アベイラビリティゾーンは、待機系ノードが割り当てられる1以上の第2データセンタの集合と言われてもよいし、当該1以上の第2データセンタが属するゾーンと言われてもよい。
【0168】
また、共通データは、例えばジョブを動作させる所定プログラムである。また、固有データは、例えば当該所定プログラムによって使用される、ジョブの定義およびジョブの状態を示す情報である。
【0169】
このように、プロセッサ101は、所定プログラムによりジョブ管理を行う運用系ノードや待機系ノードにより提供されるサービスの可用性の向上に特に有効である。プロセッサ101は、運用系ノードにより提供されるジョブ管理のサービスの可用性を効率的に向上できる。
【0170】
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体113に記録できる。
【0171】
例えば、プログラムを記録した記録媒体113を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体113に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0172】
10 情報処理装置
11 記憶部
12 処理部
13 通信部
20 情報処理システム
21 運用系ノード
22 待機系ノード
23 第1記憶部
24 第2記憶部
25 共有ストレージ
26 中継ノード
30 アクセス元ノード