(57)【要約】【課題】コンテナのスケールアウトを実行するときに、追加するコンテナを短時間で起動することができるコンテナ管理装置を提供する。【解決手段】スケールアウト制御部７１は、スケールアウト対象となるコンテナである追加対象コンテナが特定された場合に、既存のノードに追加対象コンテナを起動できるリソースがあれば、その既存のノードで追加対象コンテナを起動する。特定部７２は、既存のノードに追加対象コンテナを起動できるリソースがなければ、既存のノードで起動中のコンテナのうち停止させるコンテナを選択し、当該コンテナを停止させる既存のノードを特定する。起動部７３は、特定された既存のノードで、選択されたコンテナを停止させ、特定された既存のノードで追加対象コンテナを起動する。【選択図】図８
2020154392.tif 000002
【特許請求の範囲】
【請求項１】
スケールアウト対象となるコンテナである追加対象コンテナが特定された場合に、既存のノードに前記追加対象コンテナを起動できるリソースがあれば、前記既存のノードで前記追加対象コンテナを起動するスケールアウト制御部と、
既存のノードに前記追加対象コンテナを起動できるリソースがなければ、既存のノードで起動中のコンテナのうち停止させるコンテナを選択し、当該コンテナを停止させる既存のノードを特定する特定部と、
特定された既存のノードで、選択されたコンテナを停止させ、前記特定された既存のノードで前記追加対象コンテナを起動する起動部とを備える
ことを特徴とするコンテナ管理装置。
【請求項２】
スケールアウト制御部は、
停止されたコンテナを起動できる既存のノードがあれば、前記停止されたコンテナを当該既存のノードで起動する
請求項１に記載のコンテナ管理装置。
【請求項３】
スケールアウト制御部は、
停止されたコンテナを起動できる既存のノードがなければ、新たなノードを追加し、追加したノードで、前記停止されたコンテナを起動する
請求項２に記載のコンテナ管理装置。
【請求項４】
コンピュータが、
スケールアウト対象となるコンテナである追加対象コンテナが特定された場合に、既存のノードに前記追加対象コンテナを起動できるリソースがあれば、前記既存のノードで前記追加対象コンテナを起動し、
既存のノードに前記追加対象コンテナを起動できるリソースがなければ、既存のノードで起動中のコンテナのうち停止させるコンテナを選択し、当該コンテナを停止させる既存のノードを特定し、
特定された既存のノードで、選択されたコンテナを停止させ、前記特定された既存のノードで前記追加対象コンテナを起動する
ことを特徴とするコンテナ管理方法。
【請求項５】
コンピュータが、
停止されたコンテナを起動できる既存のノードがあれば、前記停止されたコンテナを当該既存のノードで起動する
請求項４に記載のコンテナ管理方法。
【請求項６】
コンピュータに、
スケールアウト対象となるコンテナである追加対象コンテナが特定された場合に、既存のノードに前記追加対象コンテナを起動できるリソースがあれば、前記既存のノードで前記追加対象コンテナを起動するスケールアウト制御処理、
既存のノードに前記追加対象コンテナを起動できるリソースがなければ、既存のノードで起動中のコンテナのうち停止させるコンテナを選択し、当該コンテナを停止させる既存のノードを特定する特定処理、および、
特定された既存のノードで、選択されたコンテナを停止させ、前記特定された既存のノードで前記追加対象コンテナを起動する起動処理
を実行させるためのコンテナ管理プログラム。
【請求項７】
コンピュータに、
停止されたコンテナを起動できる既存のノードがあれば、前記停止されたコンテナを当該既存のノードで起動する処理
を実行させる請求項６に記載のコンテナ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテナ管理装置、コンテナ管理方法およびコンテナ管理プログラムに関し、特に、コンテナのスケールアウトを管理するコンテナ管理装置、コンテナ管理方法およびコンテナ管理プログラムに関する。
【背景技術】
【０００２】
一般的なコンテナ技術は、サーバ上で稼働するコンテナを管理する上で、コンテナを起動するために最低限必要なリソース量を定め、サーバの適切なリソース管理を行う。また、コンテナの負荷状況（ＣＰＵ（Central Processing Unit ））使用量や通信量等の状況）に応じて、コンテナのスケールアウト制御も実現可能である。
【０００３】
また、特許文献１には、物理サーバのコンテナの集約度を高めるためのコンテナ管理方法が記載されている。
【０００４】
特許文献２には、停止させる仮想実行単位を適切に選択するための仮想化管理方法が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−３７４０３号公報
【特許文献２】国際公開第２０１８／００３０３１号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般的なコンテナ技術では、コンテナのスケールアウトを実行する際に、追加するコンテナの起動に必要なリソース量を確保できない場合、新たにノード（例えば、仮想マシン）を追加し、そのノードでコンテナを起動する。そのため、追加するコンテナの起動までに時間がかかるケースがあった。
【０００７】
そこで、本発明は、コンテナのスケールアウトを実行するときに、追加するコンテナを短時間で起動することができるコンテナ管理装置、コンテナ管理方法およびコンテナ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明によるコンテナ管理装置は、スケールアウト対象となるコンテナである追加対象コンテナが特定された場合に、既存のノードに追加対象コンテナを起動できるリソースがあれば、その既存のノードで追加対象コンテナを起動するスケールアウト制御部と、既存のノードに追加対象コンテナを起動できるリソースがなければ、既存のノードで起動中のコンテナのうち停止させるコンテナを選択し、当該コンテナを停止させる既存のノードを特定する特定部と、特定された既存のノードで、選択されたコンテナを停止させ、特定された既存のノードで追加対象コンテナを起動する起動部とを備えることを特徴とする。
【０００９】
本発明によるコンテナ管理方法は、コンピュータが、スケールアウト対象となるコンテナである追加対象コンテナが特定された場合に、既存のノードに追加対象コンテナを起動できるリソースがあれば、その既存のノードで追加対象コンテナを起動し、既存のノードに追加対象コンテナを起動できるリソースがなければ、既存のノードで起動中のコンテナのうち停止させるコンテナを選択し、当該コンテナを停止させる既存のノードを特定し、特定された既存のノードで、選択されたコンテナを停止させ、特定された既存のノードで追加対象コンテナを起動することを特徴とする。
【００１０】
本発明によるコンテナ管理プログラムは、コンピュータに、スケールアウト対象となるコンテナである追加対象コンテナが特定された場合に、既存のノードに追加対象コンテナを起動できるリソースがあれば、その既存のノードで追加対象コンテナを起動するスケールアウト制御処理、既存のノードに追加対象コンテナを起動できるリソースがなければ、既存のノードで起動中のコンテナのうち停止させるコンテナを選択し、当該コンテナを停止させる既存のノードを特定する特定処理、および、特定された既存のノードで、選択されたコンテナを停止させ、特定された既存のノードで追加対象コンテナを起動する起動処理を実行させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、コンテナのスケールアウトを実行するときに、追加するコンテナを短時間で起動することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態のコンテナ管理装置の構成例を示すブロック図である。
【図２】コンテナの起動情報の具体例を示す模式図である。
【図３】コンテナの消費リソース情報（時系列データ）の具体例を示す模式図である。
【図４】コンテナのスケールアウトを実施する処理の処理経過の例を示すフローチャートである。
【図５】ステップＳ１０２の処理経過の例を示すフローチャートである。
【図６】図４および図５に例示する処理の結果の例を示す模式図である。
【図７】本発明の実施形態のコンテナ管理装置１に係るコンピュータの構成例を示す概略ブロック図である。
【図８】本発明のコンテナ管理装置の概要を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面を参照して説明する。
【００１４】
図１は、本発明の実施形態のコンテナ管理装置の構成例を示すブロック図である。本実施形態のコンテナ管理装置１は、複数のコンテナ用ノード３でコンテナ３０４を稼働させるための管理機能を有する。
【００１５】
コンテナ管理装置１は、通信ネットワーク２を介して、複数のコンテナ用ノード３と通信可能に接続されている。
【００１６】
まず、コンテナ用ノード３について説明する。コンテナ用ノード３は、コンテナ３０４を稼働させるためのコンテナ制御部３０３を有する。コンテナ用ノード３は、例えば、サーバであるが、物理サーバまたは仮想化されたサーバ上の仮想マシン、あるいは、クラウドサービスのインスタンスであってもよい。コンテナ用ノード３は、そのコンテナ用ノード３の性能情報、および、そのコンテナ用ノード３で稼働しているコンテナ３０４の性能情報を収集する性能情報収集部３０２を有する。また、コンテナ用ノード３は、オペレーティングシステム３０１を有する。
【００１７】
コンテナ管理装置１は、コンテナ性能情報蓄積部１０１と、コンテナ用ノード性能情報蓄積部１０２と、コンテナプロファイル蓄積部１０３と、情報収集部１０４と、コンテナ性能傾向分析部１０５と、コンテナ性能傾向蓄積部１０６と、スケールアウト判定部１０７と、スケールアウト制御部１０８と、停止対象コンテナ判定部１０９と、コンテナプロファイル変更部１１０と、コンテナ用ノード管理部１１１と、コンテナ管理部１１２とを備える。
【００１８】
情報収集部１０４は、各コンテナ用ノード３の性能情報収集部３０２を通じて、コンテナ３０４の性能情報、および、コンテナ用ノード３の性能情報を収集する。そして、情報収集部１０４は、コンテナ３０４の性能情報をコンテナ性能情報蓄積部１０１に格納し、コンテナ用ノード３の性能情報をコンテナ用ノード性能情報蓄積部１０２に格納する。また、情報収集部１０４は、コンテナ管理部１１２を通じて、稼働する各コンテナ３０４のプロファイル情報を収集し、そのプロファイル情報をコンテナプロファイル蓄積部１０３に格納する。
【００１９】
コンテナ性能情報蓄積部１０１は、コンテナ３０４の性能情報を記憶する記憶装置である。
【００２０】
コンテナ用ノード性能情報蓄積部１０２は、コンテナ用ノード３の性能情報を記憶する記憶装置である。
【００２１】
コンテナプロファイル蓄積部１０３は、コンテナ３０４のプロファイル情報を記憶する記憶装置である。
【００２２】
コンテナ性能傾向分析部１０５は、コンテナ性能情報蓄積部１０１に格納された性能情報に基づいて、コンテナ毎に負荷のかかる時間帯を分析し、その分析結果をコンテナ性能傾向蓄積部１０６に格納する。
【００２３】
コンテナ性能傾向蓄積部１０６は、コンテナ性能傾向分析部１０５による分析結果を記憶する記憶装置である。
【００２４】
スケールアウト判定部１０７は、稼働するコンテナ３０４の性能情報、および、コンテナ用ノード３の性能情報と、予め定められた閾値とを比較し、それぞれのスケールアウトの実施判定を行う。
【００２５】
スケールアウト制御部１０８は、スケールアウト判定部１０７からスケールアウト要求があった場合に、コンテナ用ノード管理部１１１を通じてコンテナ用ノード３の追加や削除を行ったり、コンテナ管理部１１２を通じてコンテナ３０４の起動要求や停止要求を行ったりする。
【００２６】
停止対象コンテナ判定部１０９は、スケールアウト判定部１０７において、コンテナ３０４のスケールアウトかつコンテナ用ノード３のスケールアウトの判定がなされた場合、稼働中のコンテナの中から、停止してもシステムへの影響が少ないコンテナを選出し、そのコンテナを停止した場合にスケールアウト対象コンテナの要求リソースを確保できるか否かを判定する。停止対象コンテナ判定部１０９は、停止対象コンテナに関して、コンテナプロファイル変更部１１０の処理を経て、コンテナ管理部１１２を通じて停止させる。停止対象コンテナの停止後、停止対象コンテナ判定部１０９は、スケールアウト対象コンテナを起動する。
【００２７】
なお、スケールアウト対象コンテナを追加対象コンテナと称する場合もある。
【００２８】
コンテナプロファイル変更部１１０は、停止対象コンテナ判定部１０９によって停止すると判定されたコンテナ３０４を停止した場合に、起動中のコンテナであってその停止対象コンテナと同じプロファイルを持つコンテナの数が最低起動数を下回らないように、そのプロファイルを一時的に変更することで、不必要なスケールアウトの発生を防ぐ。
【００２９】
コンテナ用ノード管理部１１１は、コンテナ用ノード３の追加または削除の要求があった場合に、その要求に従って、コンテナ用ノード３の追加または削除を実施する。また、コンテナ用ノード管理部１１１は、現在稼働しているコンテナ用ノード３の状態を管理する。
【００３０】
コンテナ管理部１１２は、コンテナ３０４の追加または削除の要求があった場合に、その要求に従って、コンテナ３０４の追加または削除を実施する。また、コンテナ管理部１１２は、現在稼働しているコンテナ３０４のプロファイルおよび状態を管理する。
【００３１】
情報収集部１０４、コンテナプロファイル変更部１１０、コンテナ用ノード管理部１１１およびコンテナ管理部１１２は、例えば、コンテナ管理プログラムに従って動作するコンピュータのＣＰＵ、および、そのコンピュータの通信インタフェース（図１において図示略）によって実現される。例えば、ＣＰＵが、コンピュータのプログラム記憶装置等のプログラム記録媒体からコンテナ管理プログラムを読み込み、そのプログラムに従って、通信インタフェースを用いて、情報収集部１０４、コンテナプロファイル変更部１１０、コンテナ用ノード管理部１１１およびコンテナ管理部１１２として動作すればよい。また、コンテナ性能傾向分析部１０５、スケールアウト判定部１０７、スケールアウト制御部１０８および停止対象コンテナ判定部１０９は、コンテナ管理プログラムに従って動作するコンピュータのＣＰＵによって実現される。例えば、ＣＰＵが上記のようにプログラム記録媒体からコンテナ管理プログラムを読み込み、そのプログラムに従って、コンテナ性能傾向分析部１０５、スケールアウト判定部１０７、スケールアウト制御部１０８および停止対象コンテナ判定部１０９として動作すればよい。コンテナ性能情報蓄積部１０１、コンテナ用ノード性能情報蓄積部１０２、コンテナプロファイル蓄積部１０３およびコンテナ性能傾向蓄積部１０６は、例えば、コンピュータが備える記憶装置によって実現される。
【００３２】
次に、動作について説明する。
【００３３】
情報収集部１０４は、定期的に、各コンテナ用ノード３および稼働するコンテナ３０４の情報を収集し、収集した情報を、コンテナ性能情報蓄積部１０１、コンテナ用ノード性能情報蓄積部１０２およびコンテナプロファイル蓄積部１０３に格納する。情報収集部１０４が収集する情報は、例えば、以下に示す情報であるが、以下に示す情報に限定されるわけではない。
【００３４】
［コンテナの起動情報］
コンテナ起動情報として、例えば、各コンテナ用ノード３で起動しているコンテナのリストが挙げられる。
［コンテナ管理のためのプロファイル情報］
コンテナ管理のためのプロファイル情報として、例えば、イメージＩＤ、起動に必要なリソース量（ＣＰＵ、メモリ）、コンテナ最低起動数が挙げられる。
［コンテナの消費リソース情報（時系列データ）］
コンテナの消費リソース情報として、例えば、ＣＰＵやメモリの使用量、ディスクＩ／Ｏ（Input/Output）量、パケット量、アクセス回数等が挙げられる。
【００３５】
情報収集部１０４は、コンテナの起動情報を、コンテナ用ノード性能情報蓄積部１０２に格納する。
【００３６】
また、情報収集部１０４は、コンテナの消費リソース情報（時系列データ）を、コンテナ性能情報蓄積部１０１に格納する。
【００３７】
また、情報収集部１０４は、コンテナ管理のためのプロファイル情報を、コンテナプロファイル蓄積部１０３に格納する。
【００３８】
図２は、コンテナの起動情報の具体例を示す模式図である。図２では、コンテナ用ノード名に対応する、コンテナＩＤ、イメージＩＤ、RequestSize（メモリ） 、RequestSize（ＣＰＵ） 、ReplicaSize(Min)およびReplicaSize(Max)の組み合わせを示している。
【００３９】
なお、コンテナは、ライブラリや実行ファイル等を含むバイナリデータ（イメージ）に基づいて起動する。イメージＩＤは、このバイナリデータ（イメージ）に割り当てられたＩＤである。
【００４０】
また、RequestSize（メモリ） は、コンテナの起動のためにコンテナ用ノード３に要求される最低限必要なメモリ使用量である。同様に、RequestSize（ＣＰＵ）は、コンテナの起動のためにコンテナ用ノード３に要求される最低限必要なＣＰＵ使用量である。
【００４１】
また、ReplicaSize(Max)は、スケールアウトによりコンテナ数を増やした場合における最大起動数（コンテナ数の上限値）である。ReplicaSize(Min)は、負荷が減った際にスケールインによりコンテナ数を減らした場合における最低起動数（コンテナ数の下限値）である。
【００４２】
図３は、コンテナの消費リソース情報（時系列データ）の具体例を示す模式図である。図３では、アプリケーションに対応する、イメージＩＤ、および、リソースのタイプ毎の時系列データを示している。
【００４３】
情報収集部１０４は、定期的に、上記のように例示した情報を収集し、収集した情報を、コンテナ性能情報蓄積部１０１、コンテナ用ノード性能情報蓄積部１０２およびコンテナプロファイル蓄積部１０３に格納する。  
【００４４】
また、コンテナ性能傾向分析部１０５は、定期的に、コンテナ性能情報蓄積部１０１に格納された情報に基づいてコンテナの性能情報の傾向を分析し、その分析結果をコンテナ性能傾向蓄積部１０６に格納する。コンテナの性能情報の傾向分析方法の例として、例えば、各コンテナ３０４のリソース消費量を時間単位に平均化しておくことで、コンテナのオートスケール時に負荷のかかる時間帯であるかを判断する方法等が挙げられるが、傾向分析方法はこの例に限定されない。
【００４５】
スケールアウト判定部１０７は、定期的に、コンテナ性能情報蓄積部１０１に格納されたコンテナの最新の性能情報（例えば、ＣＰＵ使用量、メモリ使用量）、および、コンテナ用ノード性能情報蓄積部１０２に格納されたコンテナ用ノードの最新の性能情報（例えば、ＣＰＵ使用量、メモリ使用量）と、予め設定された閾値とを比較する。そして、スケールアウト判定部１０７は、コンテナの性能情報が閾値を超過した場合に、コンテナのスケールアウトを実施すると判定する。また、スケールアウト判定部１０７は、コンテナ用ノードの性能情報が閾値を超過した場合に、コンテナ用ノードのスケールアウトを実施すると判定する。なお、上記の例では、コンテナの性能情報やコンテナ用ノードの性能情報の例として、ＣＰＵ使用量やメモリ使用量を例示したが、コンテナの性能情報やコンテナ用ノードの性能情報として、ネットワーク通信量、アクセス数、ディスクＩ／Ｏ量等を用いてもよい。また、スケールアウト判定部１０７は、スケールアウトを実施するか否かを判定する際、スケールアウトにおける最大起動数も参照する。
【００４６】
図４は、コンテナのスケールアウトを実施する処理の処理経過の例を示すフローチャートである。
【００４７】
コンテナのスケールアウトを実施すると判定した場合、スケールアウト判定部１０７は、既存のコンテナ用ノード３に追加対象コンテナを起動するために最低限必要な性能リソースがあるか否かを、コンテナ用ノード管理部１１１を通じて判定する（ステップＳ１０１）。
【００４８】
性能リソースに余剰があるコンテナ用ノード３が存在するのであれば（ステップＳ１０１のＹｅｓ）、スケールアウト制御部１０８は、コンテナ管理部１１２を通じて、そのコンテナ用ノード３で追加対象コンテナを起動する（ステップＳ１０９）。
【００４９】
性能リソースに余剰があるコンテナ用ノード３が存在しないならば（ステップＳ１０１のＮｏ）、停止対象コンテナ判定部１０９は、既存のコンテナ用ノード３上で稼働している各コンテナのプロファイル情報と消費リソース傾向とに基づいて、停止可能なコンテナを判断する（ステップＳ１０２）。なお、既存のコンテナ用ノード３上で稼働している各コンテナのプロファイル情報は、コンテナプロファイル蓄積部１０３に格納されている。また、既存のコンテナ用ノード３上で稼働している各コンテナの消費リソース傾向は、コンテナ性能傾向蓄積部１０６に格納されている。
【００５０】
図５は、ステップＳ１０２の処理経過の例を示すフローチャートである。ステップＳ１０２において、停止対象コンテナ判定部１０９は、まず、各コンテナ用ノード３で起動しているコンテナの最新情報を、コンテナ管理部１１２を通じて取得する（ステップＳ２０１）。
【００５１】
次に、停止対象コンテナ判定部１０９は、停止対象コンテナを抽出する（ステップＳ２０２）。停止対象コンテナの条件の例として、「コンテナプロファイルにおける最低起動数が２以上である」という条件が挙げられる。本例では、停止対象コンテナ判定部１０９は、「コンテナプロファイルにおける最低起動数が２以上である」という条件を満たすコンテナを停止対象コンテナとして抽出する場合を例にして説明する。上記の条件を満たすコンテナの一部を停止して、起動しているコンテナが１つになったとしても、急激な処理増加に対するレスポンスは低下するが、そのコンテナによるサービスは消失しない。
【００５２】
また、ステップＳ２０２において、停止対象コンテナ判定部１０９は、上記の条件に加えて追加条件として、停止時点での負荷が高くない（換言すれば、スケールアウトが発生しない）、あるいは、停止時点が、処理の行われていない時間帯と判定されるという条件も用いてもよい。すなわち、停止対象コンテナ判定部１０９は、上記の条件とこの追加条件の双方を満たすコンテナを、停止対象コンテナとして抽出してもよい。なお、停止時点での負荷が高くないか否か、あるいは、停止時点が、処理の行われていない時間帯であるか否かは、コンテナ性能傾向蓄積部１０６に格納されている消費リソース傾向から判定可能である。
【００５３】
なお、コンテナ管理装置１は、特定のコンテナが停止対象コンテナとして抽出されることを回避する（換言すれば、特定のコンテナが停止対象コンテナとして抽出されないように設定する）手段を備えていてもよい。
【００５４】
停止対象コンテナ判定部１０９は、ステップＳ２０２で抽出したコンテナ群について、コンテナ用ノード３別に、コンテナを停止することで得られるリソース量（例えば、ＣＰＵ、メモリの使用可能量）を、プロファイル情報に基づいて算出する（ステップＳ２０３）。
【００５５】
次に、停止対象コンテナ判定部１０９は、コンテナ用ノード３別に、ステップＳ２０２で抽出したコンテナ（抽出したコンテナは複数であってもよい。）を停止した場合に得られるリソース量の合算値（例えば、各コンテナを停止した場合に生じるＣＰＵ使用可能量、各コンテナを停止した場合に生じるメモリ使用可能量）と、追加対処コンテナの起動のために最低限必要なリソース量（例えば、RequestSize（ＣＰＵ）、RequestSize（メモリ））とを比較する。そして、停止対象コンテナ判定部１０９は、ステップＳ２０２で抽出したコンテナを停止した場合に得られるリソース量の合算値が、追加対処コンテナの起動のために最低限必要なリソース量を上回るコンテナ用ノード３があるか否かを判定する（ステップＳ２０４）。
【００５６】
ステップＳ２０２で抽出したコンテナを停止した場合に得られるリソース量の合算値が、追加対処コンテナの起動のために最低限必要なリソース量を上回るコンテナ用ノード３があるならば（ステップＳ２０４のＹｅｓ）、停止対象コンテナ判定部１０９は、そのコンテナ用ノード３の中から、条件を満たすコンテナ用ノードを選出する（ステップＳ２０５）。
【００５７】
ステップＳ２０５で用いる条件は、例えば、「追加対象コンテナの起動に必要なリソース量を得るために、停止させるコンテナの数が最小となる」という条件である。本実施形態では、停止対象コンテナ判定部１０９は、ステップＳ２０２で抽出したコンテナを停止した場合に得られるリソース量の合算値が、追加対処コンテナの起動のために最低限必要なリソース量を上回るコンテナ用ノード３の中から、「追加対象コンテナの起動に必要なリソース量を得るために、停止させるコンテナの数が最小となる」という条件という条件を満たすコンテナ用ノード３を選出する場合を例にする。
【００５８】
ステップＳ２０５でこのようにコンテナ用ノード３を選出すれば、停止させるコンテナの数が少なくてよいので、コンテナ停止によるサービス品質低下を抑えることができる。
【００５９】
ステップＳ２０５の次に、停止対象コンテナ判定部１０９は、コンテナプロファイル変更部１１０を通じて、停止させるコンテナのプロファイルにおける最低起動数を変更し、プロファイル情報に反映させる（ステップＳ２０６）。ステップＳ２０６は、コンテナの停止を契機としたスケールアウトの発生のループを防止するための処理である。
【００６０】
次に、停止対象コンテナ判定部１０９は、ステップＳ２０５で選出したコンテナ用ノード３において、停止対処コンテナを停止させる処理を、コンテナ管理部１１２を通じて行う（ステップＳ２０７）。
【００６１】
次に、停止対象コンテナ判定部１０９は、ステップＳ２０５で選出したコンテナ用ノード３で、コンテナの停止により使用可能となったリソースを使用して、追加対象コンテナを起動する（ステップＳ２０８）。停止対象コンテナ判定部１０９は、ステップＳ２０８の処理を、コンテナ管理部１１２を通じて行う。
【００６２】
また、ステップＳ２０２で抽出したコンテナを停止した場合に得られるリソース量の合算値が、追加対処コンテナの起動のために最低限必要なリソース量を上回るコンテナ用ノード３がないならば（ステップＳ２０４のＮｏ）、停止対象コンテナ判定部１０９は、コンテナを停止しないと判定する（ステップＳ２０９）。
【００６３】
ステップＳ２０８またはステップＳ２０９を終了した場合、ステップＳ１０２（図４参照）の処理が終了する。
【００６４】
ステップＳ２０８の終了によってステップＳ１０２が終了した場合、スケールアウト判定部１０７は、ステップＳ２０７でコンテナを停止させたコンテナ用ノード以外のコンテナ用ノード３の中に、ステップＳ２０７で停止させたコンテナを起動可能なリソースの余剰を有するコンテナ用ノード３があるか否かを判定する（ステップＳ１０３）。
【００６５】
ステップＳ２０７で停止させたコンテナを起動可能なリソースの余剰を有するコンテナ用ノード３がある場合（ステップＳ１０３のＹｅｓ）、スケールアウト制御部１０８は、ステップＳ２０７で停止させたコンテナの全部または一部を、そのコンテナ用ノード３で起動する（ステップＳ１０４）。スケールアウト制御部１０８は、ステップＳ１０４の処理を、コンテナ管理部１１２を通じて行う。
【００６６】
次に、スケールアウト制御部１０８は、ステップＳ２０７で停止させたコンテナの全部を、ステップＳ１０４で起動できたか否かを判定する（ステップＳ１０５）。
【００６７】
ステップＳ２０７で停止させたコンテナを起動可能なリソースの余剰を有するコンテナ用ノード３がない場合（ステップＳ１０３のＮｏ）、または、ステップＳ２０７で停止させたコンテナのうちステップＳ１０４で起動できなかったコンテナが存在する場合（ステップＳ１０５のＮｏ）、スケールアウト制御部１０８は、コンテナ用ノード管理部１１１を通じて、新たなコンテナ用ノード３を追加する（ステップＳ１０６）。
【００６８】
なお、ステップＳ２０７で停止させたコンテナのうちステップＳ１０４で起動できなかったコンテナが存在しない場合（ステップＳ１０５のＮｏ）、ステップＳ１０８に移行する。
【００６９】
ステップＳ１０６で新たなコンテナ用ノード３が追加され、そのコンテナ用ノード３でコンテナを起動できるようになったら、スケールアウト制御部１０８は、ステップＳ２０７で停止させたコンテナのうち、まだ起動していないコンテナの全てを、新たに追加されたコンテナ用ノード３で起動する（ステップＳ１０７）。スケールアウト制御部１０８は、ステップＳ１０７の処理を、コンテナ管理部１１２を通じて行う。この結果、ステップＳ２０６以前に起動していたコンテナは全て起動した状態になる。
【００７０】
次に、停止対象コンテナ判定部１０９は、コンテナプロファイル変更部１１０を通じて、ステップＳ２０６で変更したプロファイルを戻し、プロファイル情報に反映させる（ステップＳ１０８）。すなわち、停止対象コンテナ判定部１０９は、ステップＳ２０７で停止させたコンテナのプロファイルにおける最低起動数を元に戻し、プロファイル情報に反映させる。この結果、以後、スケールアウト要求があった場合にも、コンテナプロファイルに応じたコンテナの起動数を確保できる。
【００７１】
なお、ステップＳ２０９（図５参照）の終了によってステップＳ１０２が終了した場合には、ステップＳ１０３の判定処理をスキップして、スケールアウト制御部１０８が、コンテナ用ノード管理部１１１を通じて、新たなコンテナ用ノード３を追加する（ステップＳ１０６）。
【００７２】
そして、ステップＳ１０７では、スケールアウト制御部１０８は、コンテナ管理部１１２を通じて、追加対象コンテナをステップＳ１０６で追加されたコンテナ用ノード３で起動すればよい。
【００７３】
図４および図５に例示する処理の結果の例を、図６に示す。図６では、図１に示す例において「コンテナＣ」のスケールアウトを実施すると判定され、停止対象コンテナとしてコンテナＢが選ばれ、コンテナおよびコンテナ用ノード３それぞれをスケールアウトした結果を示している。
【００７４】
本実施形態によれば、既存のコンテナ用ノード３で起動中のコンテナのうち停止させるコンテナを抽出し、そのコンテナを停止させる既存のコンテナ用ノード３を選出する。そして、そのコンテナ用ノード３で、抽出されたコンテナを停止させ、そのコンテナ用ノード３で、追加対象コンテナを起動する。従って、新たなコンテナ用ノードの起動を待つ必要がなく、追加対象コンテナを起動することができる。従って、コンテナのスケールアウトを実行するときに、追加するコンテナを短時間で起動することができる。
【００７５】
また、ステップＳ２０２で抽出する停止対象コンテナの条件として、例えば、「コンテナプロファイルにおける最低起動数が２以上である」という条件を用いることで、コンテナが提供するサービス品質も最低限維持したまま、停止対象コンテナを起動するノードを変更することができる。また、停止時点での負荷が高くない、あるいは、停止時点が、処理の行われていない時間帯と判定されるという条件を、追加条件として用いた場合も、コンテナが提供するサービス品質の低下を抑えることができる。
【００７６】
次に、上記の実施形態の変形例について説明する。
【００７７】
上記の実施形態において、スケールアウト判定部１０７およびスケールアウト制御部１０８は、コンテナ３０４のスケールインやコンテナ用ノード３のスケールインを目的とする機能を備えていてもよい。
【００７８】
また、コンテナ管理装置１をコントロールする運用監視装置（図示略）を介して、手動でスケールアウトの要求をコンテナ管理装置１に入力し、コンテナ管理装置１は、そのスケールアウトの要求に応じて、図４および図５に例示する処理を実行してもよい。
【００７９】
図７は、本発明の実施形態のコンテナ管理装置１に係るコンピュータの構成例を示す概略ブロック図である。コンピュータ１０００は、ＣＰＵ１００１と、主記憶装置１００２と、補助記憶装置１００３と、インタフェース１００４と、通信インタフェース１００６とを備える。
【００８０】
本発明の実施形態のコンテナ管理装置１は、コンピュータ１０００によって実現される。コンテナ管理装置１の動作は、コンテナ管理プログラムの形式で補助記憶装置１００３に記憶されている。ＣＰＵ１００１は、そのコンテナ管理プログラムを補助記憶装置１００３から読み出して主記憶装置１００２に展開し、そのコンテナ管理プログラムに従って、上記の実施形態で説明した処理を実行する。なお、コンテナ管理プログラムは、オペレーティングシステム上のミドルウェアであってもよい。
【００８１】
補助記憶装置１００３は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース１００４を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory ）、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory ）、半導体メモリ等が挙げられる。また、プログラムが通信回線によってコンピュータ１０００に配信される場合、配信を受けたコンピュータ１０００がそのプログラムを主記憶装置１００２に展開し、そのプログラムに従って上記の各実施形態で説明した処理を実行してもよい。
【００８２】
また、各構成要素の一部または全部は、汎用または専用の回路（circuitry ）、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【００８３】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【００８４】
次に、本発明の概要について説明する。図８は、本発明のコンテナ管理装置の概要を示すブロック図である。本発明のコンテナ管理装置は、スケールアウト制御部７１と、特定部７２と、起動部７３とを備える。
【００８５】
スケールアウト制御部７１（例えば、ステップＳ１０９を実行するスケールアウト制御部１０８）は、スケールアウト対象となるコンテナである追加対象コンテナが特定された場合に、既存のノードに追加対象コンテナを起動できるリソースがあれば、その既存のノードで追加対象コンテナを起動する。
【００８６】
特定部７２（例えば、ステップＳ２０２，Ｓ２０５を実行する停止対象コンテナ判定部１０９）は、既存のノードに追加対象コンテナを起動できるリソースがなければ、既存のノードで起動中のコンテナのうち停止させるコンテナを選択し、当該コンテナを停止させる既存のノードを特定する。
【００８７】
起動部７３（例えば、ステップＳ２０７，Ｓ２０８を実行する停止対象コンテナ判定部１０９）は、特定された既存のノードで、選択されたコンテナを停止させ、特定された既存のノードで追加対象コンテナを起動する。
【００８８】
そのような構成によって、コンテナのスケールアウトを実行するときに、追加するコンテナを短時間で起動することができる。
【００８９】
また、スケールアウト制御部７１が、停止されたコンテナを起動できる既存のノードがあれば、停止されたコンテナを当該既存のノードで起動する（例えば、ステップＳ１０４を実行する）構成であってもよい。
【００９０】
また、スケールアウト制御部７１が、停止されたコンテナを起動できる既存のノードがなければ、新たなノードを追加し、追加したノードで、停止されたコンテナを起動する（例えば、ステップＳ１０６，Ｓ１０７を実行する）構成であってもよい。
【産業上の利用可能性】
【００９１】
本発明は、コンテナのスケールアウトを管理するコンテナ管理装置に好適に適用される。
【符号の説明】
【００９２】
１  コンテナ管理装置
３  コンテナ用ノード
１０１  コンテナ性能情報蓄積部
１０２  コンテナ用ノード性能情報蓄積部
１０３  コンテナプロファイル蓄積部
１０４  情報収集部
１０５  コンテナ性能傾向分析部
１０６  コンテナ性能傾向蓄積部
１０７  スケールアウト判定部
１０８  スケールアウト制御部
１０９  停止対象コンテナ判定部
１１０  コンテナプロファイル変更部
１１１  コンテナ用ノード管理部
１１２  コンテナ管理部
３０２  性能情報収集部
３０３  コンテナ制御部
３０４  コンテナ
【図１】
2020154392.tif 000003
【図２】
2020154392.tif 000004
【図３】
2020154392.tif 000005
【図４】
2020154392.tif 000006
【図５】
2020154392.tif 000007
【図６】
2020154392.tif 000008
【図７】
2020154392.tif 000009
【図８】
2020154392.tif 000010