JP6915336B2 - 情報処理システム及び仮想マシン - Google Patents

情報処理システム及び仮想マシン Download PDF

Info

Publication number
JP6915336B2
JP6915336B2 JP2017058693A JP2017058693A JP6915336B2 JP 6915336 B2 JP6915336 B2 JP 6915336B2 JP 2017058693 A JP2017058693 A JP 2017058693A JP 2017058693 A JP2017058693 A JP 2017058693A JP 6915336 B2 JP6915336 B2 JP 6915336B2
Authority
JP
Japan
Prior art keywords
machine
container
virtual machine
virtual
scale
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017058693A
Other languages
English (en)
Other versions
JP2018163389A (ja
Inventor
規 基村
規 基村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2017058693A priority Critical patent/JP6915336B2/ja
Priority to US15/669,352 priority patent/US20180276020A1/en
Publication of JP2018163389A publication Critical patent/JP2018163389A/ja
Application granted granted Critical
Publication of JP6915336B2 publication Critical patent/JP6915336B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Description

本発明は、情報処理システム及び仮想マシンに関する。
コンピュータの仮想化方式として広く用いられているハイパーバイザ型仮想化では、物理的なマシンのOS(ホストOS。OSはオペレーティングシステムのこと)上に個々の仮想マシンを構成し、それら個々の仮想マシン上でそれぞれ独立したゲストOS環境を実行する。
一方、近年普及が進んでいるコンテナ型仮想化では、ホストOS上に、個々のユーザ向けのアプリケーション動作環境を個別に構築することで、ユーザ毎のリソースの分離を実現している。コンテナ型仮想化は、ユーザが個別にゲストOSを実行しなくてよい分だけ、ハイパーバイザ型仮想化よりも効率的である。
ハイパーバイザ型仮想化方式のシステムでは、負荷状況に応じて仮想マシンの追加や削除を自動的に行うオートスケーリングが行われる(例えば特許文献1)。またコンテナ型のシステムでも、負荷状況に応じたコンテナのオートスケーリングが行われる。
更に近年、ハイパーバイザ型とコンテナ型を組み合わせたハイブリッド方式も提案されている。ハイブリッド方式のシステムでは、仮想マシン上にコンテナを構築する。例えば特許文献2には、そのようなハイブリッド方式が例示されている。
ハイブリッド方式の従来システムでは、仮想マシンレベルのオートスケーリングとコンテナレベルのオートスケーリングとが互いに独立に行われている。すなわち、従来は、仮想マシン群の負荷状況等の状態に応じて仮想マシン群のオートスケーリングが行われ、コンテナ群の負荷状況等の状態に応じてコンテナ群のオートスケーリングが行われていた。
特開2017−41185号公報 特開2016−181185号公報
仮想マシン上にコンテナを稼働させるシステムにおいて、オートスケーリングにより仮想マシンを停止させると、その仮想マシン上でコンテナが稼働していた場合、そのコンテナが強制終了されてしまう。コンテナが強制終了すると、コンテナ上で動作していたアプリケーションシステムに不具合が生じたりそのシステムが管理するデータに不整合が生じたりする等の問題が起こるおそれがある。
本発明は、仮想マシン群の状態のみに基づいて仮想マシン群のオートスケーリングを行う方式と比べて、仮想マシン上で稼働中のコンテナが強制終了されてしまう事態が生じにくい仕組みを提供することを目的とする。
請求項1に係る発明は、1以上の仮想マシンと、前記仮想マシン上で稼働するコンテナのオートスケール処理を行うコンテナスケール装置と、仮想マシンのオートスケール処理を行う仮想マシンスケール装置であって、スケールインを行う場合に前記1以上の仮想マシンのうちスケールインに対する保護状態が解除されている仮想マシンを停止させる仮想マシンスケール装置と、を含み、前記仮想マシンは、自機上で1以上のコンテナが稼働中である場合に、前記仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、を含前記制御手段は、自機上で稼働中のコンテナがない場合であっても、前記仮想マシンを含む稼働中の仮想マシンの数が必要な仮想マシンの数以下である場合には、前記保護状態を解除しない、情報処理システムである。
請求項2に係る発明は、1以上の仮想マシンと、前記仮想マシン上で稼働するコンテナのオートスケール処理を行うコンテナスケール装置と、仮想マシンのオートスケール処理を行う仮想マシンスケール装置であって、スケールインを行う場合に前記1以上の仮想マシンのうちスケールインに対する保護状態が解除されている仮想マシンを停止させる仮想マシンスケール装置と、を含み、前記仮想マシンは、自機上で1以上のコンテナが稼働中である場合に、前記仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、を含み、前記制御手段は、自機上で稼働中のコンテナがない場合、前記保護状態を解除する前に、新たに起動されるコンテナのホストマシンの候補から自機を除外する処理を実行することにより、前記保護状態の解除が完了するまで自機が新たに起動されるコンテナのホストマシンに選ばれることを防止する、情報処理システムである。
請求項3に係る発明は、1以上の仮想マシンと、前記仮想マシン上で稼働するコンテナのオートスケール処理を行うコンテナスケール装置と、仮想マシンのオートスケール処理を行う仮想マシンスケール装置であって、スケールインを行う場合に前記1以上の仮想マシンのうちスケールインに対する保護状態が解除されている仮想マシンを停止させる仮想マシンスケール装置と、を含み、前記仮想マシンは、自機上で1以上のコンテナが稼働中である場合に、前記仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、を含み、前記制御手段は、自機上で稼働しているコンテナで実行されているアプリケーションプログラムが書き込んだ、そのアプリケーションプログラムの処理の進捗の段階を示すデータ、を参照し、そのデータを参照して分かった前記段階が所定段階まで進捗していれば、そのコンテナは稼働中でないものとして取り扱う、情報処理システムである。
請求項に係る発明は、自機上で1以上のコンテナが稼働中である場合に、仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、を含み、前記制御手段は、自機上で稼働中のコンテナがない場合であっても、前記仮想マシンを含む稼働中の仮想マシンの数が必要な仮想マシンの数以下である場合には、前記保護状態を解除しない、仮想マシンである。
請求項5に係る発明は、自機上で1以上のコンテナが稼働中である場合に、仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、を含み、前記制御手段は、自機上で稼働中のコンテナがない場合、前記保護状態を解除する前に、新たに起動されるコンテナのホストマシンの候補から自機を除外する処理を実行することにより、前記保護状態の解除が完了するまで自機が新たに起動されるコンテナのホストマシンに選ばれることを防止する、仮想マシンである。
請求項6に係る発明は、自機上で1以上のコンテナが稼働中である場合に、仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、を含み、前記制御手段は、自機上で稼働しているコンテナで実行されているアプリケーションプログラムが書き込んだ、そのアプリケーションプログラムの処理の進捗の段階を示すデータ、を参照し、そのデータを参照して分かった前記段階が所定段階まで進捗していれば、そのコンテナは稼働中でないものとして取り扱う、仮想マシンである。
請求項に係る発明は、前記制御手段は、自機上で稼働中のコンテナがない場合に、仮想マシンスケール装置によるスケールインに対する自機の前記保護状態を解除する、請求項4〜6のいずれか1項に記載の仮想マシンである。
請求項に係る発明は、前記制御手段は、自機上で稼働中のコンテナがない状態の継続時間が閾値に達するまでは前記保護状態を解除しない、請求項に記載の仮想マシンである。
請求項に係る発明は、前記仮想マシン上で稼働可能なコンテナには、保護対象のコンテナと保護対象でないコンテナとがあり、前記制御手段は、保護対象でないコンテナが自機で稼働しているか否かは、自機を前記保護状態の解除の制御に反映させない、請求項のいずれか1項に記載の仮想マシンである。
参考例の構成は、前記制御手段は、自機上でコンテナが起動していても、そのコンテナが所定のプログラムを実行していない場合には、そのコンテナは稼働中でないものとして取り扱う、請求項2〜のいずれか1項に記載の仮想マシンである。
請求項1またはに係る発明によれば、仮想マシン群の状態のみに基づいて仮想マシン群のオートスケーリングを行う方式と比べて、仮想マシン上で稼働中のコンテナが強制終了されてしまう事態が生じにくくすることができると共に、スケールインの必要がある場合にのみ、保護状態を解除することができる。
請求項2または5に係る発明によれば、仮想マシン群の状態のみに基づいて仮想マシン群のオートスケーリングを行う方式と比べて、仮想マシン上で稼働中のコンテナが強制終了されてしまう事態が生じにくくすることができると共に、仮想マシンの保護状態を解除するまでの間に新たなコンテナがその仮想マシン上で起動される可能性を減らすことができる。
請求項3または6に係る発明によれば、仮想マシン群の状態のみに基づいて仮想マシン群のオートスケーリングを行う方式と比べて、仮想マシン上で稼働中のコンテナが強制終了されてしまう事態が生じにくくすることができると共に、コンテナが起動していれば仮想マシンの保護状態を解除しない方式と比べて、仮想マシンをスケールインの候補にしやすくすることができる。
請求項に係る発明によれば、自機上でコンテナの強制終了が生じない場合に、自機をスケールインの際に終了させる候補とすることができる。
請求項に係る発明によれば、自機上で稼働中のコンテナがなくなってすぐに自機の保護状態を解除する場合と比べて、自機に対応するコンテナが新たに起動される際に自機(仮想マシン)を起動し直す必要が少なくなる。
請求項に係る発明によれば、どんなコンテナでも稼働中であれば自機の保護状態を解除しない方式と比べて、保護対象のコンテナが強制終了されにくくしつつも、自機をスケールインの候補にしやすくすることができる。
実施形態のシステム構成の一例を示す図である。 保護制御部の処理手順の一例を示す図である。 仮想マシンオートスケーリング管理装置の処理手順の一例を示す図である。
図1を参照して、実施形態のクラウドサービスシステムの一例を説明する。
図1のクラウドサービスシステムは、複数のコンピュータシステム10A、10B、・・・と、仮想マシンオートスケーリング管理装置20と、コンテナオートスケーリング管理装置30と、を含む。
コンピュータシステム10A、10B、・・・(以下区別の必要がない場合はコンピュータシステム10と総称する)は、1以上の物理的な(すなわちハードウエアの)コンピュータからなるシステムである。個々のコンピュータは、1以上のCPU(中央演算装置)、メモリ(一次記憶装置)、二次記憶装置等のハードウエアリソースを備えている。このコンピュータシステム10のOS上でハイパーバイザ型仮想化の仮想マシン102a、102b、102c、・・・(以下区別の必要がない場合は仮想マシン102と総称する)が稼働する。
個々の仮想マシン102上には、コンテナ型仮想化のコンテナ110A、110B、・・・(以下区別の必要がない場合はコンテナ110と総称する)が稼働しており、コンテナ110内でアプリケーションが実行される。図には、サービス(アプリケーション)AのためのコンテナA(110A)と、サービスBのためのコンテナB(110B)という2種類のコンテナ110を例示しているが、これら以外の種類のコンテナ110があってももちろんよい。図示のように、同じ種類のコンテナ110を1つの仮想マシン102上で複数稼働させること(コンテナAがその例)も、複数の仮想マシン102上で複数稼働させること(コンテナBがその例)も可能である。図示例では、コンテナAをホストするための仮想マシンのグループであるコンテナA用仮想マシン群100Aには1つの仮想マシン102aが含まれ、コンテナBをホストするコンテナB用仮想マシン群100Bには2つの仮想マシン102b及び102cが含まれる。なお、図示例では1つの仮想マシン102上で1種類のコンテナ110が稼働しているが、1つの仮想マシン102上で複数種類のコンテナ110が同時に稼働するような運用形態も可能である。この場合、複数種類のコンテナ110が混在して稼働している仮想マシン102は、それら複数のコンテナ種類のそれぞれに対応する仮想マシン群100(100Aと100Bの総称)に属する。なお、図では、わかりやすさのために、コンテナA用仮想マシン群100Aをホストするコンピュータシステム10Aと、コンテナB用仮想マシン群100Bをホストするコンピュータシステム10Bとを区別して図示したが、コンピュータシステム10がこのように明確に区別されている必要はない。
仮想マシン102は、コンテナ110の他に、保護制御部120のプログラムを実行する。保護制御部120については、後で説明する。
仮想マシンオートスケーリング管理装置20は、仮想マシンレベルのオートスケーリングを行う。この仮想マシンレベルのオートスケーリングでは、仮想マシン群の負荷上昇等に応じてスケールアウト(仮想マシンの台数を増やすこと)し、負荷減少等に応じてスケールイン(仮想マシンの台数を減らすこと)する。
ここで、仮想マシン102はスケールインに対して保護状態とすることができ、保護状態に設定された仮想マシン102は、オートスケーリングにおけるスケールインの際の削除対象から外される。すなわち、スケールインを行う場合、仮想マシンオートスケーリング管理装置20は、スケールインに対して保護状態でない(すなわち非保護状態である)仮想マシンの中から所定(あらかじめ定められた)基準で選んだ1以上の仮想マシンを終了させ、削除する。
コンテナオートスケーリング管理装置30は、コンテナレベルでのオートスケーリングを行う。例えば、コンテナAのアプリケーションについての負荷が上昇すれば、コンテナAをスケールアウト(すなわち新たなコンテナAを起動する)し、その負荷が下降すればコンテナAを減らす(すなわち既存のコンテナAのうち所定の基準から選んだものを終了し、削除する)。
仮想マシンオートスケーリング管理装置20及びコンテナオートスケーリング管理装置30は、クラウドサービスシステム上で稼働する仮想マシン102上でプログラムを実行することにより構成されるものであってもよい。
さて、仮想マシン102で実行される保護制御部120は、その仮想マシン102のスケールインに対する保護状態の設定及び解除の制御を行う。概略的には、この制御では、その仮想マシン102上でコンテナ110が1つ以上稼働していれば、その仮想マシン102を保護状態に設定する(なお、仮想マシン102を起動するのは一般にその上でコンテナ110を稼働させるためなので、実際の運用では、仮想マシン102は起動時に(その上ですぐにコンテナ110を起動しない場合でも)保護状態に設定する)。また、保護状態の仮想マシン102が、コンテナ110が1つも稼働していない状態になると、その仮想マシン102の保護状態を解除する。仮想マシン102は、保護状態か否かを示す2値のフラグを有しており、保護状態であればそのフラグが例えばオンにセットされており、保護状態でなくなればそのフラグがオフにリセットされる。
ここで、コンテナ110の中には保護対象のものと、保護対象でないものがあってもよい。保護対象のコンテナ110は、仮想マシン102の終了を原因として強制終了されることがないように保護すべきコンテナである。一方、保護対象でないコンテナ110は、仮想マシン102の終了に伴って強制終了されても問題がないコンテナである。例えば、ユーザが、クラウドサービスシステムに対して自分の利用したいコンテナ110のテンプレート(コンテナ110の各種設定を規定する情報)を登録する際に、そのコンテナ110を保護対象とするか否かを指定する。また、別の例として、強制終了されても問題のないアプリケーションのみを実行するよう設定されたコンテナ110は、保護対象でないと自動設定され、そうでないコンテナ110は保護対象と自動設定されるようにしてもよい。この場合、クラウドサービスシステムにおけるコンテナ110のテンプレートの入力を受け付ける機構(図示省略)は、アプリケーションの名称に対応付けてそのアプリケーションが強制終了されると問題があるか否かを示す情報(この情報は例えばその機構に保持されている)を参照して、その自動設定を行えばよい。
このようにコンテナ110に保護対象であるものとそうでないものとが存在する例では、仮想マシン102の保護状態を解除するか否かの制御には、保護対象のコンテナ110のみを考慮し、保護対象でないコンテナ110は考慮しない。すなわち、仮想マシン102上で保護対象のコンテナ110が1つも稼働していない状態となった場合には、保護対象でないコンテナ110が1以上稼働していたとしても、その仮想マシン102の保護状態は解除する。また、同様に仮想マシン102を保護状態に設定する制御でも、その仮想マシン102上で保護対象でないコンテナ110が稼働しているか否かを考慮に入れないようにしてもよい。
1つの例では、保護制御部120は、コンテナ情報取得部122、未稼働時間計算部124及びマシン状態更新部126を有する。
コンテナ情報取得部122は、その保護制御部120が実行されている仮想マシン102(以下、自機と呼ぶ)上で稼働しているコンテナ110の情報を取得する。コンテナ情報取得部122は、自機上で1以上のコンテナ110が稼働しているか否かの情報を取得する。コンテナ110に保護対象のものと保護対象でないものとが存在する例では、コンテナ情報取得部122は、自機上で稼働しているコンテナ110が保護対象のものか否かの情報を取得する。
例えばコンテナ型仮想化を実現するDocker(商標)システムでは、個々のコンテナ110はOS上で実行されるプロセスであり、そのコンテナ110のプロセスの中で、個々のアプリケーションのプロセスが実行される。この場合コンテナ情報取得部122は、自機が実行しているOS上で実行されているプロセスを調べることで、その仮想マシン102上でどの種類のコンテナ110がそれぞれいくつ実行されているかを知ることができる。また、保護対象のコンテナ110と保護対象でないコンテナ110とを、例えばコンテナ110のプロセスを起動する際の引数の違い等で区別しておけば、コンテナ情報取得部122は、自機上で実行されているプロセスの情報から、保護対象のコンテナ110が稼働しているか(あるいはいくつ稼働しているか)を知ることができる。
未稼働時間計算部124は、自機上でコンテナ110が1つも稼働していない状態となった時点からの経過時間(以下、未稼働時間と呼ぶ)を計算する。1つの例では、未稼働時間計算部124が計算した未稼働時間を、自機の保護状態の解除の判定に用いる(後述の図2の手順)。
マシン状態更新部126は、自機のスケールインに対する保護状態の設定や解除を行う。保護状態の解除は、コンテナ情報取得部122で取得したコンテナ110の稼働状況に応じて制御される。また、自機が、新たに起動するコンテナ110をホストする(すなわちそのコンテナ110を稼働させる)ホストマシンの候補とするか否かという状態(以下ホスト候補可否状態と呼ぶ)を、マシン状態更新部126が更新してもよい。コンテナオートスケーリング管理装置30は、新たにコンテナ110を起動する必要が生じた場合、ホスト候補可否状態が「ホスト可」(新規コンテナ110の起動を許可)である仮想マシン102の中から、その新たなコンテナ110を起動させる仮想マシン102を選ぶ。ホスト候補可否状態の更新は、後述する図2の手順で実行される。
図2を参照して、保護制御部120の処理手順の一例を説明する。この手順は、保護状態に設定されている仮想マシン102内の保護制御部120が、その保護状態を解除するための処理である。この処理は例えば定期的に実行される。この処理が実行される前に、例えばその仮想マシン102の起動時に自動的に、あるいは起動後にユーザ等の指示に従って、その仮想マシン102は保護状態に設定されているものとする。
まず、保護制御部120は、自機(仮想マシン102)上で稼働中のコンテナ110の数が0であるかどうかを、コンテナ情報取得部122により取得した情報に基づいて判定する(S10)。1つの例では、コンテナ110が自機上で「稼働中」であるとは、自機のOS上でそのコンテナ110のプロセスが実行されていることを意味する(別の例については後述する)。この例では、自機のOS上でコンテナ110のプロセスが1以上実行中であれば、S10の「自機上で稼働中のコンテナの数は0?」の判定結果は否定(false)となる。この場合、保護制御部120は処理を終了し、これにより自機の保護状態は維持される。自機上でコンテナ110が少なくとも1つ稼働しているので、保護状態を維持するのである。
S10の判定結果が肯定(true)である場合(すなわち自機上で稼働しているコンテナ110がない場合)、保護制御部120は、未稼働時間計算部124に自機でのコンテナ110の未稼働時間を計算させる。そして、その未稼働時間が所定の閾値を超えているか否かを判定する(S12)。例えば、コンテナ情報取得部122が例えば定期的に取得した情報から自機上で稼働中のコンテナ110がないことが分かった時点で、未稼働時間計算部124がその時点の時刻を未稼働の開始時刻として記憶する。未稼働時間計算部124は、この記憶した未稼働の開始時刻から現在時刻までの経過時間を未稼働時間として求める。なお、この未稼働時間の開始時刻は、その記憶の後、コンテナ情報取得部122が例えば定期的に取得した情報から、自機上で1以上のコンテナ110が稼働していることが分かった場合に、クリア(消去)される。未稼働の開始時刻が記憶されていない場合、未稼働時間計算部124は、未稼働時間の計算を行わない。
S12で未稼働時間が閾値を超えていない(false)と判定した場合、保護制御部120は自機の保護状態を維持して処理を終了する。この未稼働時間についてのS12の判定は、保護状態が容易に解除されすぎないようにするためのものである。例えば自機上で稼働中のコンテナ110がなくなると直ちに保護状態を解除すると、自機(仮想マシン102)がそのまますぐにスケールインの対象として終了される場合もあり、その場合、その終了の直後に別のコンテナ110を新たに起動する必要が生じた場合に仮想マシン102の不足を招く可能性がある。これに対し、未稼働時間がある程度(すなわち閾値以上)続けば、その仮想マシン102の必要性が低いとみなすことができるので、保護状態を解除しても上述の不足の問題は生じにくい。
S12で未稼働時間が閾値を超えた(true)場合、保護制御部120は、「必要マシン数−現在のマシン数」(すなわち、必要マシン数から現在のマシン数を減算した減算結果)がマイナス(負値)であるか否かを判定する(S14)。ここで、「必要マシン数」とは、仮想マシンオートスケーリング管理装置20が必要と判断する仮想マシン102の数である。必要マシン数は、例えば、従来と同様、仮想マシン102群の負荷に応じて仮想マシンオートスケーリング管理装置20が計算する。また、別の例として、コンテナオートスケーリング管理装置30が計算した必要コンテナ数から、仮想マシンオートスケーリング管理装置20が、その必要コンテナ数をまかなうのに必要な仮想マシン102の数を計算してもよい。また、「現在のマシン数」とは、クラウドサービスシステム上で稼働中の仮想マシン102の数である。
S14の判定結果がfalse(すなわち「必要マシン数−現在のマシン数」が0以上)の場合、これは、現在のマシン数が必要マシン数以下であること、すなわち現在稼働中の仮想マシン102の数が必要と判断される数以下であることを意味する。この場合、自機の保護状態を解除して自機の終了を認めると仮想マシン102の不足を招く可能性が高い。そこで、その場合、保護制御部120は、保護状態の解除を行わず、処理を終了する。
S14の判定結果がfalse(すなわち「必要マシン数−現在のマシン数」が0以上)の場合、これは、現在のマシン数が必要マシン数を上回っていること、言い換えれば、現在稼働中の仮想マシン102の数が必要と判断される数よりも多いこと、を意味する。この場合、保護制御部120は、S16以降の処理に進む。S16以降の処理では、基本的には、スケールインに対する自機の保護状態を解除(S22)するのであるが、図2の手順では、更にその解除が適切になされるようにする準備のための処理(S16〜S20)をいくつか行う。
すなわち、保護制御部120(マシン状態更新部126)は、自機のホスト候補状態を解除する(すなわち、新たに起動するコンテナ110のホスト先として選ばれないようにする)(S16)。これにより、この後、自機の保護状態の解除が完了するまでの間に新たなコンテナ110が自機で起動されることがなくなる。
また保護制御部120は、コンテナ情報取得部122に現在自機上で稼働しているコンテナ110の情報を取得させ、その情報から自機上で稼働中のコンテナ110の数が0であるか否かを判定する(S18)。S10だけでなく、S18でも稼働中のコンテナ110の数が0であるかどうかを判定するのは、S10の後、S18の処理に至るまでの間に、自機で新たなコンテナ110が起動される可能性があるからである。
S18の判定結果がfalseの場合、S10で確認した後、新たなコンテナ110が自機で起動されているので、保護制御部120は、そのコンテナ110に停止を指示し、所定時間待つ(S20)。この所定時間は、コンテナ110に対して停止(終了)を指示した後、コンテナ110が正常に停止するまでに通常要する時間(あるいは安全を見てその時間に対してある程度の時間を加えた時間)である。この所定時間が経過した後、保護制御部120は、マシン状態更新部126により、自機の保護状態を解除する(S22)。
S18の判定結果がtrueの場合は、この時点では自機上で稼働中のコンテナ110はないので、保護制御部120(マシン状態更新部126)は、自機の保護状態を解除する(S22)。
以上の説明では、図2の手順は定期的に実行するとしたが、これは一例に過ぎない。別の例として、「必要マシン数−現在のマシン数」がマイナスになった場合(すなわち仮想マシン群のスケールインが必要になった場合)に、各仮想マシン102の保護制御部120が図2の手順を実行するようにしてもよい。
次に、図3を参照して、仮想マシンオートスケーリング管理装置20の処理手順の一例を説明する。この手順は、例えば定期的に実行される。
この手順では、仮想マシンオートスケーリング管理装置20は、まず「必要マシン数−現在のマシン数」の値がプラス(正値)、マイナス、0のいずれであるかを判定する(S30)。「必要マシン数−現在のマシン数」という指標値については、既に説明した。
「必要マシン数−現在のマシン数」がプラスの場合、現在の仮想マシン102の数が必要なマシン数に足りていないということなので、仮想マシンオートスケーリング管理装置20は、仮想マシン102群をスケールアウトする(S32)。すなわち、新規の仮想マシン102を起動する。
「必要マシン数−現在のマシン数」が0の場合、現在のマシン数は必要マシン数に一致しており、仮想マシン102の増減は必要ない。この場合、仮想マシンオートスケーリング管理装置20は、処理を終了する。
「必要マシン数−現在のマシン数」がマイナスの場合、現在の仮想マシン102の数が必要なマシン数を上回っているということである。この場合、スケールインを試みることになる。このために仮想マシンオートスケーリング管理装置20は、仮想マシン102の中から保護状態でない(スケールイン非保護)の仮想マシン102を探す(S34)。これには、各仮想マシン102の保護状態のフラグを調べればよい。
スケールイン非保護の仮想マシン102がない場合、仮想マシン102はいずれも停止できないので、仮想マシンオートスケーリング管理装置20は処理を終了する。
スケールイン非保護の仮想マシン102が見つかった場合、仮想マシンオートスケーリング管理装置20は、見つかったスケールイン非保護の仮想マシン102を終了(停止)させる(S36)。スケールイン非保護の仮想マシン102が複数見つかった場合、終了させるのは1台だけでもよいし、見つかった仮想マシン102を「現在のマシン数−必要マシン数」以下の範囲内ですべて終了させてもよい。また、見つかったスケールイン非保護の仮想マシン102が複数ある場合、未稼働時間計算部124が計算した未稼働時間が長い仮想マシン102から優先して終了させるようにしてもよい。
以上に説明したように、本実施形態では、コンテナ110が稼働中の仮想マシン102について、スケールインに対する保護が解除されないよう制御することで、稼働中のコンテナ110がスケールインによる仮想マシン102の終了に伴って強制終了されないようにした。
以上の説明では、コンテナ110が「稼働中」であるとは、コンテナ110が仮想マシン102上で起動していること(すなわちそのコンテナ110のプロセスが仮想マシン102上で実行されていること)であるとしたが、これは一例に過ぎない。この代わりに、コンテナ情報取得部122は、例えば、コンテナ110が仮想マシン102上で単に起動しているだけでは「稼働中」とは判定せず、更にそのコンテナ110が、アプリケーションプログラムを実行していてはじめて、そのコンテナ110が「稼働中」であると判定してもよい。ここでのアプリケーションプログラムは、そのコンテナ110で実行するようそのコンテナ110の定義情報(テンプレート)に設定されている。
なお、コンテナ110に実行させるアプリケーションプログラムの中には、強制終了すると問題があるもの(例えばコンテナ110を用いて提供したいサービスの強制終了を招くもの)と、強制終了しても問題がないもの(例えばそのサービスに関係がないもの)が含まれ得る。前者を第1種プログラムと呼び後者を第2種プログラムと呼ぶことにする。コンテナ情報取得部122は、第1種プログラムを実行中のコンテナ110は稼働中であると判定し、第2種プログラムを1以上実行中だが第1種プログラムは1つも実行していないコンテナ110は稼働中でないと判定する。
コンテナ情報取得部122は、自機で実行されている各コンテナ110にログインし、そのコンテナ110内で実行されているプロセスの有無や、実行されているプロセスのプログラム名等を調べることで、各コンテナ110がアプリケーションプログラムを実行しているか(あるいは第1種プログラムを実行しているか)を判定する。
また、コンテナ110が実行するアプリケーションプログラムの処理に複数の段階が設けられており、その処理が特定の段階まで進捗した以降は、そのアプリケーションプログラムが強制終了しても問題がない場合がある。例えば、コンテナ110が実行するアプリケーションプログラムの処理が、入力された文書データを翻訳し、その翻訳結果のデータをストレージに保存するという処理である場合を考える。このアプリケーションプログラムは、翻訳が完了してメモリ上の翻訳結果のデータをストレージに保存する命令を(例えばDMAコントローラに)発したら、通常は保存が成功するため、その命令に対する正常終了の応答を待たずに終了しても問題にならない。したがって、その処理がストレージへのデータ保存命令の発行という進捗段階に達したら、その処理を実行しているコンテナ110が強制終了しても問題はない。
そこで、コンテナ情報取得部122は、自機上のコンテナ110で実行中の進捗状況を調べ、その処理について定められた特定段階まで処理が進捗していれば、そのコンテナ110は稼働中でないものとして取り扱う。このような制御を可能にするために、例えばコンテナ110で実行されるアプリケーションプログラムは、実行している処理がどの段階まで進捗しているかを、そのプログラムの外部から参照可能なデータ(例えばファイル)に書き込んでいく。コンテナ情報取得部122は、そのデータを監視することで、そのプログラムの進捗状況を知得する。
10,10A,10B コンピュータシステム、20 仮想マシンオートスケーリング管理装置、30 コンテナオートスケーリング装置、100 仮想マシン群,100A コンテナA用仮想マシン群、100B コンテナB用仮想マシン群、102,102a,102b 仮想マシン、110,110A,110B コンテナ、120 保護制御部、122 コンテナ情報取得部、124 未稼働時間計算部、126 マシン状態更新部。

Claims (9)

  1. 1以上の仮想マシンと、
    前記仮想マシン上で稼働するコンテナのオートスケール処理を行うコンテナスケール装置と、
    仮想マシンのオートスケール処理を行う仮想マシンスケール装置であって、スケールインを行う場合に前記1以上の仮想マシンのうちスケールインに対する保護状態が解除されている仮想マシンを停止させる仮想マシンスケール装置と、
    を含み、
    前記仮想マシンは、
    自機上で1以上のコンテナが稼働中である場合に、前記仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、
    を含
    前記制御手段は、自機上で稼働中のコンテナがない場合であっても、前記仮想マシンを含む稼働中の仮想マシンの数が必要な仮想マシンの数以下である場合には、前記保護状態を解除しない、情報処理システム。
  2. 1以上の仮想マシンと、
    前記仮想マシン上で稼働するコンテナのオートスケール処理を行うコンテナスケール装置と、
    仮想マシンのオートスケール処理を行う仮想マシンスケール装置であって、スケールインを行う場合に前記1以上の仮想マシンのうちスケールインに対する保護状態が解除されている仮想マシンを停止させる仮想マシンスケール装置と、
    を含み、
    前記仮想マシンは、
    自機上で1以上のコンテナが稼働中である場合に、前記仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、
    を含み、
    前記制御手段は、自機上で稼働中のコンテナがない場合、前記保護状態を解除する前に、新たに起動されるコンテナのホストマシンの候補から自機を除外する処理を実行することにより、前記保護状態の解除が完了するまで自機が新たに起動されるコンテナのホストマシンに選ばれることを防止する、情報処理システム。
  3. 1以上の仮想マシンと、
    前記仮想マシン上で稼働するコンテナのオートスケール処理を行うコンテナスケール装置と、
    仮想マシンのオートスケール処理を行う仮想マシンスケール装置であって、スケールインを行う場合に前記1以上の仮想マシンのうちスケールインに対する保護状態が解除されている仮想マシンを停止させる仮想マシンスケール装置と、
    を含み、
    前記仮想マシンは、
    自機上で1以上のコンテナが稼働中である場合に、前記仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、
    を含み、
    前記制御手段は、自機上で稼働しているコンテナで実行されているアプリケーションプログラムが書き込んだ、そのアプリケーションプログラムの処理の進捗の段階を示すデータ、を参照し、そのデータを参照して分かった前記段階が所定段階まで進捗していれば、そのコンテナは稼働中でないものとして取り扱う、情報処理システム。
  4. 自機上で1以上のコンテナが稼働中である場合に、仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、を含み、
    前記制御手段は、自機上で稼働中のコンテナがない場合であっても、前記仮想マシンを含む稼働中の仮想マシンの数が必要な仮想マシンの数以下である場合には、前記保護状態を解除しない、仮想マシン。
  5. 自機上で1以上のコンテナが稼働中である場合に、仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、を含み、
    前記制御手段は、自機上で稼働中のコンテナがない場合、前記保護状態を解除する前に、新たに起動されるコンテナのホストマシンの候補から自機を除外する処理を実行することにより、前記保護状態の解除が完了するまで自機が新たに起動されるコンテナのホストマシンに選ばれることを防止する、仮想マシン。
  6. 自機上で1以上のコンテナが稼働中である場合に、仮想マシンスケール装置によるスケールインに対して自機を保護状態とする制御を行う制御手段、を含み、
    前記制御手段は、自機上で稼働しているコンテナで実行されているアプリケーションプログラムが書き込んだ、そのアプリケーションプログラムの処理の進捗の段階を示すデータ、を参照し、そのデータを参照して分かった前記段階が所定段階まで進捗していれば、そのコンテナは稼働中でないものとして取り扱う、仮想マシン。
  7. 前記制御手段は、自機上で稼働中のコンテナがない場合に、仮想マシンスケール装置によるスケールインに対する自機の前記保護状態を解除する、請求項4〜6のいずれか1項に記載の仮想マシン。
  8. 前記制御手段は、自機上で稼働中のコンテナがない状態の継続時間が閾値に達するまでは前記保護状態を解除しない、請求項に記載の仮想マシン。
  9. 前記仮想マシン上で稼働可能なコンテナには、保護対象のコンテナと保護対象でないコンテナとがあり、
    前記制御手段は、保護対象でないコンテナが自機で稼働しているか否かは、自機を前記保護状態の解除の制御に反映させない、請求項のいずれか1項に記載の仮想マシン。
JP2017058693A 2017-03-24 2017-03-24 情報処理システム及び仮想マシン Active JP6915336B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017058693A JP6915336B2 (ja) 2017-03-24 2017-03-24 情報処理システム及び仮想マシン
US15/669,352 US20180276020A1 (en) 2017-03-24 2017-08-04 Information processing system and virtual machine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017058693A JP6915336B2 (ja) 2017-03-24 2017-03-24 情報処理システム及び仮想マシン

Publications (2)

Publication Number Publication Date
JP2018163389A JP2018163389A (ja) 2018-10-18
JP6915336B2 true JP6915336B2 (ja) 2021-08-04

Family

ID=63582587

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017058693A Active JP6915336B2 (ja) 2017-03-24 2017-03-24 情報処理システム及び仮想マシン

Country Status (2)

Country Link
US (1) US20180276020A1 (ja)
JP (1) JP6915336B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11726758B2 (en) * 2019-02-07 2023-08-15 Microsoft Technology Licensing, Llc Efficient scaling of a container-based application in a distributed computing system
US11354145B2 (en) 2019-08-28 2022-06-07 International Business Machines Corporation Creating process fingerprints based on virtualized containers for determining software product usage
CN112463123B (zh) * 2020-11-25 2023-07-14 北京字跳网络技术有限公司 任务编译方法、装置、网络节点、系统及存储介质
CN115904635B (zh) * 2023-02-16 2023-06-06 江西联创精密机电有限公司 一种基于服务器的虚拟机管理方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7251815B2 (en) * 2003-04-29 2007-07-31 International Business Machines Corporation Multiple virtual machines sharing processor and work queue in memory having program/dispatch functions for assigning and accessing work items while the virtual machine was not idle
US8443219B2 (en) * 2009-08-31 2013-05-14 Red Hat Israel, Ltd. Mechanism for reducing the power consumption of virtual desktop servers
WO2013076913A1 (ja) * 2011-11-24 2013-05-30 パナソニック株式会社 仮想計算機システム、仮想計算機システム制御方法、及び仮想計算機システム制御プログラム
US9372735B2 (en) * 2012-01-09 2016-06-21 Microsoft Technology Licensing, Llc Auto-scaling of pool of virtual machines based on auto-scaling rules of user associated with the pool
US10097410B2 (en) * 2014-06-26 2018-10-09 Vmware, Inc. Methods and apparatus to scale application deployments in cloud computing environments
US9775008B2 (en) * 2015-01-14 2017-09-26 Kodiak Networks, Inc. System and method for elastic scaling in a push to talk (PTT) platform using user affinity groups
JP6394455B2 (ja) * 2015-03-24 2018-09-26 富士通株式会社 情報処理システム、管理装置およびプログラム
US10353739B2 (en) * 2015-06-27 2019-07-16 Vmware, Inc. Virtual resource scheduling for containers without migration
JP6669172B2 (ja) * 2015-07-03 2020-03-18 富士通株式会社 仮想マシン管理プログラム,仮想マシン管理装置および仮想マシン管理方法

Also Published As

Publication number Publication date
US20180276020A1 (en) 2018-09-27
JP2018163389A (ja) 2018-10-18

Similar Documents

Publication Publication Date Title
JP6915336B2 (ja) 情報処理システム及び仮想マシン
US11307939B2 (en) Low impact snapshot database protection in a micro-service environment
US8739167B2 (en) Method and device for balancing load of multiprocessor system by sequencing migration priorities based on memory size and calculated execution time
US20130227559A1 (en) Management of i/o reqeusts in virtual machine migration
US8990946B1 (en) System and methods of distributing antivirus checking tasks among virtual machines in a virtual network
US9858101B2 (en) Virtual machine input/output thread management
US20180300182A1 (en) Hypervisor-based virtual machine isolation apparatus and method
US9229820B2 (en) Information processing device with memory dump function, memory dump method, and recording medium
US20150113252A1 (en) Thread control and calling method of multi-thread virtual pipeline (mvp) processor, and processor thereof
Wu et al. Container lifecycle‐aware scheduling for serverless computing
US10108463B2 (en) System, method of controlling to execute a job, and apparatus
US11334379B2 (en) Control device
US9541980B2 (en) Operation management device, operation management method, and recording medium
US20090241112A1 (en) Recording medium recording virtual machine control program and virtual machine system
WO2018036104A1 (zh) 一种布署虚拟机的方法、系统以及物理服务器
JP2020160775A (ja) コンテナ起動ホスト選択装置、コンテナ起動ホスト選択システム、コンテナ起動ホスト選択方法及びプログラム
US7254733B2 (en) Method of shutting down virtual machines in an orderly manner
CN105900066B (zh) 计算机以及基于管理程序的资源调度方法
US20160124753A1 (en) Operating system load device resource selection
JP2007172611A (ja) 方法、記憶媒体(仮想共有環境におけるプロセッサの有効利用法)
JP4674242B2 (ja) 仮想化スイッチ、コンピュータシステムおよびデータコピー方法
JP5391152B2 (ja) サーバシステム、及び、仮想サーバの移行方式を選択する方法
GB2515598A (en) Information processing apparatus and information processing method
JP6075882B2 (ja) 分散処理システム、および、分散処理方法
US20220365803A1 (en) Assignment control device, assignment control method, and assignment control program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210603

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210615

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210628

R150 Certificate of patent or registration of utility model

Ref document number: 6915336

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150