図面 (/)

技術 コンテナ収容装置、コンテナ作成方法、及びプログラム

出願人 エヌ・ティ・ティ・コミュニケーションズ株式会社
発明者 牧野浩之堀口渉長沼翔阿部新遠藤久
出願日 2015年12月18日 (4年11ヶ月経過) 出願番号 2015-247897
公開日 2017年6月22日 (3年5ヶ月経過) 公開番号 2017-111761
状態 特許登録済
技術分野 マルチプログラミング 計算機におけるファイル管理 検索装置
主要キーワード カスタマイズ性 コンテナ毎 コンテナ外 入れ替え前 リソース情報テーブル コンテナ間 契約プラン 可搬メモリ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年6月22日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (12)

課題

サーバリソースをユーザ間で共用する共用ホスティングサービスにおいて、リソースの制御をユーザ毎に適切に行う。

解決手段

特定のユーザのプロセスを他のユーザのプロセスと隔離して動作させる仮想的な環境であるコンテナを収容するコンテナ収容装置において、前記特定のユーザのコンテナの作成指示を受信した場合に、各ユーザのコンテナ作成において共通に使用されるモデルデータを用いて、前記特定のユーザのコンテナを作成するコンテナ管理手段を備え、前記コンテナ管理手段は、前記コンテナの外部にある外部領域を、前記コンテナにおいて前記特定のユーザにより認識されるデータ領域に接続し、データが前記外部領域に格納されるようにする。

概要

背景

近年では、VPS(Virtual Private Server)やクラウドといったCPU/メモリ/ディスクなどを占有する仮想サーバ型のホスティングサービス広がりつつある。しかし、仮想サーバ型のホスティングサービスでは、ユーザにおいてサーバを管理運用する手間が個々のサーバ毎に発生する。これに対し、サーバ資源を他のユーザと共有することで、低コストサーバ管理の手間がかからない共用ホスティングサービスが主に中小企業ユーザに広く利用されている。

従来の共用ホスティングサービスの提供手法では、単一のプロセスを一筐体内において多数の収容ユーザで共有する。具体的には、共有デーモンプロセスを用意し、利用ユーザドメインなどのユーザ固有の情報で振り分け、筐体のリソースを収容ユーザで共有する。

概要

サーバリソースをユーザ間で共用する共用ホスティングサービスにおいて、リソースの制御をユーザ毎に適切に行う。特定のユーザのプロセスを他のユーザのプロセスと隔離して動作させる仮想的な環境であるコンテナを収容するコンテナ収容装置において、前記特定のユーザのコンテナの作成指示を受信した場合に、各ユーザのコンテナ作成において共通に使用されるモデルデータを用いて、前記特定のユーザのコンテナを作成するコンテナ管理手段を備え、前記コンテナ管理手段は、前記コンテナの外部にある外部領域を、前記コンテナにおいて前記特定のユーザにより認識されるデータ領域に接続し、データが前記外部領域に格納されるようにする。

目的

本発明は上記の点に鑑みてなされたものであり、サーバリソースをユーザ間で共用する共用ホスティングサービスにおいて、リソースの制御をユーザ毎に適切に行うことを可能とする技術を提供する

効果

実績

技術文献被引用数
0件
牽制数
1件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

特定のユーザのプロセスを他のユーザのプロセスと隔離して動作させる仮想的な環境であるコンテナを収容するコンテナ収容装置であって、前記特定のユーザのコンテナの作成指示を受信した場合に、各ユーザのコンテナ作成において共通に使用されるモデルデータを用いて、前記特定のユーザのコンテナを作成するコンテナ管理手段を備え、前記コンテナ管理手段は、前記コンテナの外部にある外部領域を、前記コンテナにおいて前記特定のユーザにより認識されるデータ領域に接続し、データが前記外部領域に格納されるようにすることを特徴とするコンテナ収容装置。

請求項2

前記コンテナ管理手段は、前記特定のユーザのコンテナを別のコンテナに更新することを指示する命令を受信した場合に、前記特定のユーザのコンテナを停止し、前記別のコンテナに対応するモデルデータを用いて、当該別のコンテナを作成することを特徴とする請求項1に記載のコンテナ収容装置。

請求項3

前記データ領域に対してデータが読み書きされる頻度又はデータ量を監視し、当該頻度又はデータ量に基づいて、当該データ領域に接続させる外部領域を決定する監視制御手段を更に備えることを特徴とする請求項1又は2に記載のコンテナ収容装置。

請求項4

前記監視制御手段は、前記頻度又はデータ量が所定の閾値よりも大きい場合に、前記データ領域に接続させる外部領域を高速ストレージにおける領域として決定し、前記頻度又はデータ量が所定の閾値以下である場合に、前記データ領域に接続させる外部領域を、前記高速なストレージよりも低速なストレージにおける領域として決定することを特徴とする請求項3に記載のコンテナ収容装置。

請求項5

前記外部領域は、所定のアプリケーションサービスを提供するサーバ内の領域であることを特徴とする請求項1ないし4のうちいずれか1項に記載のコンテナ収容装置。

請求項6

複数コンテナ間平等リソースを使用できるようにするとともに、全体のリソースに余裕がある場合でも、1コンテナが使用するリソースを所定の上限値に制限するリソース制御手段を更に備えることを特徴とする請求項1ないし5のうちいずれか1項に記載のコンテナ収容装置。

請求項7

特定のユーザのプロセスを他のユーザのプロセスと隔離して動作させる仮想的な環境であるコンテナを収容するコンテナ収容装置が実行するコンテナ作成方法であって、前記特定のユーザのコンテナの作成指示を受信した場合に、各ユーザのコンテナ作成において共通に使用されるモデルデータを用いて、前記特定のユーザのコンテナを作成するコンテナ作成ステップを備え、前記コンテナ作成ステップにおいて、前記コンテナ収容装置は、前記コンテナの外部にある外部領域を、前記コンテナにおいて前記特定のユーザにより認識されるデータ領域に接続し、データが前記外部領域に格納されるようにすることを特徴とするコンテナ作成方法。

請求項8

コンピュータを、請求項1ないし6のうちいずれか1項に記載のコンテナ収容装置における各手段として機能させるためのプログラム

技術分野

0001

本発明は、共用ホスティングサービスにおけるサービス提供方式に関連するものである。

背景技術

0002

近年では、VPS(Virtual Private Server)やクラウドといったCPU/メモリ/ディスクなどを占有する仮想サーバ型のホスティングサービスが広がりつつある。しかし、仮想サーバ型のホスティングサービスでは、ユーザにおいてサーバを管理運用する手間が個々のサーバ毎に発生する。これに対し、サーバ資源を他のユーザと共有することで、低コストサーバ管理の手間がかからない共用ホスティングサービスが主に中小企業ユーザに広く利用されている。

0003

従来の共用ホスティングサービスの提供手法では、単一のプロセスを一筐体内において多数の収容ユーザで共有する。具体的には、共有デーモンプロセスを用意し、利用ユーザドメインなどのユーザ固有の情報で振り分け、筐体のリソースを収容ユーザで共有する。

先行技術

0004

特開2014-235644号公報

発明が解決しようとする課題

0005

しかしながら、上記のようにプロセスをユーザ間で共有する方式では、例えば、収容されている一部のユーザが大量のリソースを占有した場合、他のユーザがサービスを利用できないといった影響を受ける場合がある。また、プロセスを利用する全ユーザ間で共通のリソースの設定を用いらなければならないという問題もある。

0006

すなわち、従来技術では、サーバリソースをユーザ間で共用する共用ホスティングサービスにおいて、リソースの制御をユーザ毎に適切に行うことができないという問題があった。

0007

本発明は上記の点に鑑みてなされたものであり、サーバリソースをユーザ間で共用する共用ホスティングサービスにおいて、リソースの制御をユーザ毎に適切に行うことを可能とする技術を提供することを目的とする。

課題を解決するための手段

0008

本発明の実施の形態によれば、特定のユーザのプロセスを他のユーザのプロセスと隔離して動作させる仮想的な環境であるコンテナを収容するコンテナ収容装置であって、
前記特定のユーザのコンテナの作成指示を受信した場合に、各ユーザのコンテナ作成において共通に使用されるモデルデータを用いて、前記特定のユーザのコンテナを作成するコンテナ管理手段を備え、
前記コンテナ管理手段は、前記コンテナの外部にある外部領域を、前記コンテナにおいて前記特定のユーザにより認識されるデータ領域に接続し、データが前記外部領域に格納されるようにする
ことを特徴とするコンテナ収容装置が提供される。

0009

また、本発明の実施の形態によれば、特定のユーザのプロセスを他のユーザのプロセスと隔離して動作させる仮想的な環境であるコンテナを収容するコンテナ収容装置が実行するコンテナ作成方法であって、
前記特定のユーザのコンテナの作成指示を受信した場合に、各ユーザのコンテナ作成において共通に使用されるモデルデータを用いて、前記特定のユーザのコンテナを作成するコンテナ作成ステップを備え、
前記コンテナ作成ステップにおいて、前記コンテナ収容装置は、前記コンテナの外部にある外部領域を、前記コンテナにおいて前記特定のユーザにより認識されるデータ領域に接続し、データが前記外部領域に格納されるようにする
ことを特徴とするコンテナ作成方法が提供される。

発明の効果

0010

本発明の実施の形態によれば、サーバリソースをユーザ間で共用する共用ホスティングサービスにおいて、リソースの制御をユーザ毎に適切に行うことを可能とする技術を提供することが可能となる。

図面の簡単な説明

0011

本発明の実施の形態におけるシステムの全体構成図である。
コンテナ収容装置100においてコンテナが生成された後の構成例を示す図である。
コンテナ収容装置100の構成をより具体的に示す図である。
コンテナ作成の概要を示す図である。
テンプレートの内容例を示す図である。
コンテナ作成時の処理例を示すフローチャートである。
アップデート処理の概要を示す図である。
アップデート時の処理例を示すフローチャートである。
ユーザ領域テンプレートの配付処理の例を示す図である。
ユーザデータのストレージ使い分ける例を説明するための図である。
外部のサービスとの連携を説明するための図である。

実施例

0012

以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。

0013

(実施の形態の概要)
本実施の形態では、サーバアプリケーションライブラリモジュール共通設定等からなるコンテナテンプレートを作成し、コンテナテンプレートからユーザ毎のコンテナを作成することとしている。これにより、各コンテナに収容される収容ユーザのプロセス空間の分離を行う。これによりリソースについてコンテナ単位で適切に制御できるようになる。

0014

また、ユーザが作成するデータやカスタマイズ可能な設定ファイルはコンテナとは別のストレージにデータ領域として確保し、コンテナとして作成された仮想ストレージレイヤ化を行い、データ領域をバインドマウントすることで、ユーザは共通領域(コンテナ)とデータ領域の種別境界を特に意識することなく透過的にファイルシステムを扱うことができる。

0015

<コンテナについて>
ここで、コンテナの概要を簡単に説明しておく。なお、コンテナ自体は既存技術である。一般にOSの内部は、アプリケーション(OS上で動作するソフトウェア)が使用するユーザ空間と、カーネルが使用するカーネル空間とに分かれる。アプリケーションが実行されると、ユーザ空間においてプロセス(プログラム実行単位)が生成される。コンテナの技術では、プロセスをグループ化し、他のグループやグループに属していないプロセスから隔離した空間で動作させる。この空間(仮想的な環境)をコンテナと呼ぶ。

0016

コンテナの技術では、コンテナ内のプロセスからは他のコンテナのプロセスにアクセスすることはできない。また、CPU、メモリ、デバイス等については、コンテナ毎に、コンテナから利用できる範囲が制限される。

0017

なお、コンテナの作成等を行うためのソフトウェア("コンテナ管理ソフト"と呼ぶ)としては種々のものがあるが、本実施の形態では、一例として、Docker(登録商標)を使用することを想定している。ただし、本発明を適用できるコンテナ管理ソフトは、特定のコンテナ管理ソフトに限定されるわけではなく、様々なコンテナ管理ソフトを適用して本発明を実施することができる。

0018

(システム全体構成)
図1に、本発明の実施の形態に係るシステムの全体構成例を示す図である。図1に示すように、本実施の形態に係るシステムは、コンテナ収容装置100と管理装置200を有する。

0019

コンテナ収容装置100と管理装置200はそれぞれ、ネットワークに接続されている装置であり、コンテナ収容装置100と管理装置200との間で通信が可能である。また、コンテナ収容装置100と管理装置200はそれぞれ、1つ又は複数の物理的なサーバ(コンピュータ)であってもよいし、1つ又は複数の仮想サーバであってもよい。コンテナ収容装置100を「ホスト」と称してもよい。

0020

<コンテナ収容装置>
コンテナ収容装置100は、各ユーザに対して共用ホスティングサービスを提供する装置である。本実施の形態では、コンテナ収容装置100内にユーザ毎のコンテナが作成される。

0021

図1に示すように、コンテナ収容装置100は、コンテナ管理部110、テンプレート格納部120、監視制御部130を含む。コンテナ管理部110は、管理装置200からの指示に基づいて、コンテナを作成、更新するための機能部であり、本実施の形態では、コンテナ管理ソフト、プロビジョニングスクリプト(プログラム)等により実現される機能部である。

0022

テンプレート格納部120は、コンテナテンプレートと、ユーザ領域テンプレートを格納している。本実施の形態のコンテナテンプレートは、コンテナイメージと呼んでもよく、コンテナ間で共通であり、コンテナのひな形となるデータ(モデルデータと呼んでもよい)である。テンプレートに基づいて各ユーザのコンテナが作成されるが、その際に、ユーザ個別の設定がなされる。

0023

ユーザ領域テンプレートは、コンテナにおけるユーザ領域(ユーザが書き換え可能な領域)の初期設定初期データ等からなる。ユーザ領域テンプレート自体は、コンテナ間で共通であるが、コンテナ作成時に、ユーザ個別の設定(設定ファイル格納等)がなされる。

0024

監視制御部130は、コンテナにおけるプロセスの実行に伴って発生するユーザデータの読み書きの頻度又はデータ量を監視して、当該頻度又はデータ量に応じて、ユーザデータを格納するストレージ等を使い分ける機能部である。なお、監視制御部130は、コンテナを構成するプログラム(つまり、コンテナテンプレートを構成するプログラム)により実現される機能部であってもよいし、コンテナの外部のプログラム(コンテナ収容装置100が実行するプログラム)で実現される機能部であってもよい。

0025

また、監視制御部130は、ユーザのコンテナ利用に関するリソース制御の機能も有している。この機能は「fair share」の考えに基づくものであり、具体的には、監視制御部130に、各ユーザ(1コンテナ)が利用できるリソース(例:CPUリソースメモリリソース)の相対値最大値が設定され、監視制御部130は、これらの値に基づいてリソース制御を行う。

0026

相対値は、1ユーザに割り当てられるリソースの量である。監視制御部130は、コンテナ収容装置100の全体負荷が高い場合には、各ユーザのリソースを相対値に制限するが、コンテナ収容装置100のリソースに余裕がある場合には、相対値以上のリソースの使用を許容する。ただし、最大値を超えることはできない。このようなリソース制御により、コンテナ収容装置100の全体のリソースを有効に活用できるとともに、複数コンテナ間で平等にリソースを利用できる。

0027

最大値はコンテナ収容装置100のリソースに余裕がある状態で、1ユーザが利用できるリソース上限値を表す。このような上限値を設定することで1コンテナが暴走した場合でもコンテナ収容装置100全体のリソースを占有しないようにすることができる。

0028

すなわち、監視制御部130は、複数コンテナ間で平等にリソースを使用できるようにするとともに、全体のリソースに余裕がある場合でも、1コンテナが使用するリソースを所定の上限値に制限するリソース制御の機能を有する。

0029

なお、監視制御部130におけるリソース制御の機能は、後述するOSにおけるコンテナ機能37を利用して実現してもよいし、コンテナ機能37とは別の機能として実現してもよい。また、リソース制御の機能を監視制御部130とは別の機能部として設けてもよい。

0030

本実施の形態に係るコンテナ収容装置100は、例えば、1つ又は複数のコンピュータに、本実施の形態で説明するコンテナ管理部110と監視制御部130における処理内容記述したプログラムを実行させることにより実現可能である。すなわち、コンテナ収容装置100が有する機能は、当該コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、コンテナ収容装置100で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体可搬メモリ等)に記録して、保存したり、配付したりすることが可能である。また、上記プログラムをインターネット電子メールなど、ネットワークを通して提供することも可能である。

0031

<管理装置>
図1に示すように、管理装置200は、オーダー管理部210、コンテナ収容装置管理部220、テンプレート格納部230を有する。オーダー管理部210は、運用者等からのオーダーに従って、コンテナ収容装置100に対してコンテナ作成を指示する機能部である。コンテナ収容装置管理部220は、運用者からのアップデート命令を受けて、コンテナのアップデートを実行する。テンプレート格納部230は、各種のバージョンのテンプレートを格納しており、テンプレートをコンテナ収容装置100に配付する機能を有する。

0032

本実施の形態に係る管理装置200は、例えば、1つ又は複数のコンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、管理装置200が有する機能は、当該コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、管理装置200で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配付したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。

0033

(コンテナ収容装置100の詳細例)
図2は、ユーザ毎のコンテナが作成された状態のコンテナ収容装置100の構成例を示す図である。図2に示す例では、コンテナテンプレート10に基づき、各コンテナ(コンテナ1、コンテナ2、コンテナ3)が生成されている。各コンテナには、共通領域とユーザ領域が示されている。共通領域には、設定ファイル11、ライブラリ12、デーモン13が示されている。また、ユーザ領域には、設定ファイル21、ユーザデータ22が示されている。

0034

「共通領域」に関して、アプリケーション(デーモン)やライブラリ等、コンテナ間で共通の機能を提供する領域(機能)であることから「共通領域」と呼んでいるが、その動作(プロセスとしての動作)は、コンテナ毎に独立である。設定ファイル11、ライブラリ12、デーモン(プログラム)13等の実体データは、コンテナテンプレート10(コンテナイメージ)である。コンテナの機能により、各ユーザにとっては、自分のみがこれらを使用するように認識される。なお、コンテナテンプレート10(コンテナイメージ)が格納される領域が実際の「共通領域」であり、図2に示す「共通領域」は、当該共通領域の内容と同等の内容を持つ領域であることを意味する。

0035

「ユーザ領域」は、ユーザが書き換え可能な領域である。ユーザ領域におけるファイルやデータの初期値はユーザ領域テンプレート20に基づいて設定されるものである。初期値設定後に、ユーザ個別の設定ファイル21等が格納(コピー)されることで、ユーザ個別の設定が行われる。また、ユーザにとっては、コンテナにより提供されるファイルシステムの所定のユーザデータ領域がユーザデータ22の格納領域として見えるが、外部領域のバンドマウントによって、当該外部領域がコンテナのユーザデータ領域に接続され、実際のユーザデータの読み書きは当該外部領域に対して行われる。つまり、ユーザデータ領域の実体は外部領域にある。なお、設定ファイル21は、バインドマウントにより外部領域に格納してもよいし、バインドマウントを行わずにコンテナの領域に格納してもよい。

0036

図3は、コンテナ収容装置100の構成をより具体的に示した図である。図3に示すように、ハードウェア36、OS30が存在する。OS30として、コンテナ機能を提供可能なOSであればどのようなOSでもよいが、例えばLinux(登録商標)を使用できる。OS30の機能としてドライバ31、コンテナ機能37が含まれる。

0037

コンテナ機能37は、コンテナの実現のために利用されるOSの機能であり、例えば、Namespaces、cgroups、selinux等がある。

0038

管理インタフェース(management interface)34は、コンテナ管理ソフト(Docker等)に相当する。

0039

本実施の形態では、コンテナイメージ33は、コンテナテンプレート10に相当する。コンテナイメージ33の内容がコンテナにおける共通領域の内容になるため、図3では、コンテナイメージ33の部分を共通領域と記載している。

0040

図3の例では、コンテナ1とコンテナ2が起動している例を示している。図3に示すAUFSは、ファイルシステム機能の1つであり、親のファイルシステム(図3の例でコンテナイメージ33)をすべてリードオンリーにして、その上にライタブルレイヤを重ねてレイヤを通して1つのファイルシステムのように扱うことを可能とする機能である。ただし、AUFSを使用することは一例に過ぎない。

0041

図3には、各コンテナ内に作成された共通的なファイルシステムのディレクトリに対して、ユーザ個別のユーザデータを格納した外部のユーザデータ領域35からバインドマウントを行うことが示されている。コンテナ外部のユーザデータ領域35は、コンテナ収容装置100内に備えられていてもよいし、別の装置に備えられていてもよい。このようなバインドマウントにより、ユーザは、外部のユーザデータ領域35を意識することなく、コンテナから各自のデータにアクセスすることができる。

0042

なお、バインドマウントとは、マウントの一種であり、あるファイルパスを別のディレクトリにバインドしてマウントすることができる機能である。例えば、バインドマウントの命令引数として「/ABC /XYZ」を指定した場合に、/XYZには、/ABCの中身がバインドされ、/XYZを使用するユーザには、/ABCの中身があたかも/XYZに存在するように見える。

0043

(コンテナの作成について)
図4は、コンテナ作成の概要を示す図である。図4に示すように、運用者からのGUIを介したオーダー(命令)、もしくは、オーダーサーバからのAPIを利用したオーダーに基づいて、管理装置200のオーダー管理部210が、コンテナを収容するサーバ(コンテナ収容装置100)を決定し、決定したコンテナ収容装置100のコンテナ管理部110に対してコンテナ作成を指示する。

0044

これにより、コンテナ管理部110を構成するプロビジョニングスクリプトが実行され、コンテナテンプレート及びユーザ領域テンプレートを用いることで、コンテナが作成(起動)される。

0045

オーダー管理部210は、コンテナ管理DB(データベース)211を備えている。コンテナ管理DB211には、例えば、アカウント情報テーブルホスト情報テーブル、IPリソース情報テーブルが格納されている。アカウント情報テーブルは、例えば、アカウントID、収容ホスト名、IPアドレス、プロビジョニングステータス(Active,Holding)、ドメイン名、契約プランオプション契約等の情報を格納する。

0046

ホスト情報テーブルは、ホスト名(コンテナ収容装置名)、ホストIPアドレス、空きリソース数、収容可能リソース上限等の情報を格納する。IPリソース情報テーブルは、ホストIPアドレス、ユーザ割り当て用IPアドレス、アカウントID等の情報を格納する。

0047

オーダー管理部210はオーダーを受け付けると、ホスト情報テーブル、IPリソース情報テーブルから、例えば、リソースの空き状況を考慮して、どのホスト(コンテナ収容装置)にアカウントを収容するかを決定し、決定したコンテナ収容装置100のコンテナ管理部110に、コンテナ作成指示と入力パラメータを与える。

0048

図5に、コンテナテンプレートとユーザ領域テンプレートの例を示す。なお、図5は、コンテナテンプレートとユーザ領域テンプレートのそれぞれに含まれるデータの一部を示すものである。図5(a)に示すコンテナテンプレートは、ライブラリ、アプリケーション、インストーラスクリプト等を含む。ライブラリは、OSのモジュール、各種プログラムのモジュール等である。アプリケーションは、認証サーバWebサーバMailサーバメーリングリストサーバDBサーバ監視サーバ等である。インストーラスクリプトは、提供アプリケーションインストールパッケージである。

0049

図5(b)に示すように、ユーザ領域テンプレートは、設定ファイル、データデレクトリ、データファイルを含む。設定ファイルについては、ユーザ毎にコンテナ作成時に、初期設定情報が格納される。データディレクトリは、各種のデータを格納するディレクトリである。また、データファイルには、初期データが格納されている。

0050

図6は、コンテナ作成の命令を受けたコンテナ管理部110の処理手順例を示すフローチャートである。この処理手順は、プロビジョニングスクリプトの内容に相当する。図6を参照してコンテナ管理部110の動作を説明する。

0051

コンテナ管理部110は、オーダー管理部210から、コンテナ作成命令の入力パラメータとして、アカウントID、パスワード、ドメイン名、IPアドレス、使用コンテナテンプレートID等を受信している。

0052

コンテナ管理部110は、アカウントIDにより、アカウントを作成し(ステップS101)、コンテナを作成する(ステップS102)。ここでは、コンテナテンプレートIDで指定されたコンテナテンプレートに対応するコンテナが作成される。また、ステップS102において、コンテナにおける予め定めた領域に対して、予め定めたユーザデータ領域(例えばアカウントIDにより識別される領域)をバインドマウントする処理も実行される。

0053

次に、ユーザ領域テンプレートの展開を行う(ステップS103)。これにより、ユーザが書き換え可能な領域における初期データの格納等がなされる。そして、コンテナの初期設定が行われる(ステップS104)。ここでは、例えば、LDAPエントリ作成、設定ファイル生成等が行われる。そして、コンテナのアクセス設定(ステップS105)、監視設定(ステップS106)、リソース制限設定(ステップS107)が行われる。

0054

ステップS107のリソース制限設定においては、例えば、1コンテナが利用できるCPUリソース(例:単位時間当たりの割り当て時間)の上限値、メモリ容量の上限値等が設定される。

0055

(コンテナのアップデートについて)
本実施の形態では、コンテナ管理部110は、コンテナの更新機能アップデート機能)を有している。図7を参照してアップデート処理を説明する。なお、アップデートとは、例えば、コンテナを、旧バージョンのものから新バージョンのものに入れ替えることである。また、コンテナのアップデートは、コンテナ収容装置100に収容される複数ユーザの複数コンテナに対して一括で行ってもよいし、個々のユーザ毎に行うこととしてもよい。

0056

図7(a)は、コンテナの入れ替え前の状態を示す。ここで、例えば運用者からアップデート命令がコンテナ収容装置管理部220に入力されたとする。アップデート命令には、アップデート対象のコンテナを識別する情報(アカウントIDでもよいし、コンテナIDでもよい)、更新後のコンテナに対応するコンテナテンプレートを識別する情報(コンテナテンプレートID)が含まれる。なお、更新後のコンテナに対応するコンテナテンプレート(新コンテナテンプレート)は、予めコンテナ収容装置100に格納されていてもよいし、更新時に、テンプレート格納部230から取得することとしてもよい。

0057

命令を受けたコンテナ収容装置管理部220は、対象のコンテナ収容装置100のコンテナ管理部110に対して、新コンテナテンプレートを指定したアップデート命令を送信する。

0058

図7(b)に示すように、アップデート命令を受信したコンテナ管理部110は、現在のコンテナを削除(停止)し、コンテナテンプレートの更新を行う。コンテナテンプレートの更新とは、新コンテナテンプレートをダウンロードすることであってもよいし、コンテナ収容装置100に予め格納されている新コンテナテンプレートを読み出すことであってもよい。そして、図7(c)に示すように、新コンテナテンプレートによる新たなコンテナを作成する。

0059

図8は、アップデート命令を受信したコンテナ管理部110の動作を示すフローチャートである。

0060

図8に示すように、まず、旧コンテナの停止を行う(ステップS201)。そして、新コンテナテンプレートを用いて、新コンテナを起動する(ステップS202)。前述したコンテナ作成の場合と同様に、バインドマウントの設定も行われる。また、前述したコンテナ作成の場合と同様に、コンテナのアクセス設定(ステップS203)、監視設定(ステップS204)、リソース制限設定(ステップS205)が行われる。

0061

上記のように、コンテナ(つまり共通領域)を別のテンプレートのイメージに入れ替えてもユーザのデータやカスタマイズされた設定は保持される。そのため、カスタマイズ性とソフトウェアのアップデート作業が容易になる。

0062

(ユーザ領域テンプレートの配付処理例)
図9は、ユーザ領域テンプレートの配付処理例を示す図である。テンプレート格納部230には、各バージョンのコンテナテンプレートと各バージョンのユーザ領域テンプレートが格納されている。図9の例では、テンプレート格納部230から、例えば、新バージョンのユーザ領域テンプレートが、コンテナ収容装置100(A)に配付され、コンテナ収容装置100(A)において当該ユーザ領域テンプレートが適用される。また、ユーザ領域テンプレートにより設定された設定ファイルに対し、運用者からユーザ個別の設定ファイルがコピーされ、ユーザ個別の設定が行われることが示されている。

0063

また、図9の例では、一例として、テンプレート格納部230から、コンテナ収容装置管理部220を経由して、新たなコンテナ収容装置100(B)にユーザ領域テンプレートが配付されることが示されている。

0064

(ユーザデータ領域のストレージを使い分ける例)
コンテナ収容装置100における監視制御部130は、ユーザデータの読み書きの頻度(例:単位時間当たりの読み書き回数)、読み書きされるデータ量(例:単位時間当たりのデータ量)等をファイル毎(ディレクトリ毎でもよい)に監視する。なお、「読み書き」とは、「読み」(read)のみでもよいし、「書き」(write)のみでもよいし、「読み」と「書き」の合計であってもよい。また、監視方法は特定の方法に限られない。例えば、コンテナにおいて設定されているファイルシステムのファイル/ディレクトリ(つまり、ユーザから見えるファイル/ディレクトリ)を監視してもよいし、バインドマウントの元の領域(外部領域)のファイル/ディレクトリを監視してもよい。

0065

監視制御部130は、頻繁に読み書きのあるデータ(例:所定の閾値よりも高い読み書き頻度のファイル/ディレクトリ)をホットデータとし、あまりアクセスのないデータ(例:所定の閾値以下の読み書き頻度のファイル/ディレクトリ)をコールドデータとして、バインドマウントを行う対象ストレージを使い分ける。これにより、より高いI/Oパフォーマンスが要求されるデータに対してはSSDなどの高速なストレージを用い、ほとんど読み書きのないコールドデータには、高容量でコストの安いストレージを用いるといった要求I/Oに応じた使い分けが可能になる。つまり、ストレージリソースの制御を柔軟に行うことができる。

0066

図10は、ストレージの使い分けを行っている例を示す図である。図10の例では、コンテナにおいて/home/user/mailのディレクトリにあるデータの読み書き頻度が高いため、/home/user/mailに対しては、高速なストレージであるストレージAのユーザデータ領域がバインドマウントされている。一方、/home/archive/filesのディレクトリにあるデータの読み書き頻度は低いため、/home/archive/filesに対しては、低速なストレージであるストレージBのユーザデータ領域がバインドマウントされている。監視制御部130は、バインドマウントの切り替えを動的に行うことが可能である。

0067

(外部のサービスとの連携の例)
本実施の形態におけるコンテナにより、外部のサービスを利用することが可能である。図11はその手順を説明するための図である。

0068

図11に示すように、例えば、ユーザがSaaSなどの外部のクラウドのアプリケーションを契約する(ステップS301)。

0069

そして、ユーザあるいは運用者が、コンテナのユーザ領域(ユーザデータの領域)に対して、提供されるアプリケーションの領域(外部アプリケーションが提供されるサーバの領域)をバインドマウントする(ステップS302)。これにより、ユーザは外部サービスを意識することなく、あたかも自身のコンテナ内にアプリケーションがインストールされているかのように外部サービスを利用することができる(ステップS303)。

0070

また、コンテナ管理部110を構成するプロビジョニングスクリプトに、外部サービスからのバインドマウント処理を記述しておくことで、外部のサービスとの連携がなされた状態でコンテナを起動することができる。

0071

(実施の形態の効果)
ユーザ間でプロセスを共用する従来技術においては、収容されている一部のユーザが大量のリソースを占有した場合、他の利用者がサービスを利用できないといった影響を受けたり、アカウントが乗っ取られる等のアブユースがあった場合に、ユーザ全体のレスポンスが低下するといった影響が発生する。また、ソフトウェアに権限昇格などの深刻なバグがあった場合に、セキュリティ面での懸念もある。

0072

これらに対し、本実施の形態の技術によれば、サーバアプリケーション、ライブラリモジュール、共通設定等のテンプレートに基づいてコンテナを作成し、収容ユーザのプロセス空間の分離を行うこととしたので、リソース制御についてコンテナ単位で制御できるようになる。また、プロセス空間はコンテナ毎に独立するため、セキュリティの課題について、個々のプロセスが侵食された場合でも影響範囲をコンテナ内に留めることができる。

0073

また、ユーザ間でプロセスを共用する従来技術においては、全ユーザで共通の設定を用いらなければならない。これは、ユーザの利用ユースケースを限定することになり、カスタマイズ性に欠ける。また、従来技術の中には、クラウドを用いて仮想サーバを立ち上げホスティング事業者が管理することで、共用ホスティングと同様のユーザの利便性を実現するサービスがあるが、ソフトウェアアップデートをサーバ毎に個別に実施する必要があるため、作業量の増加により運用コストがプロセス共有型のホスティングよりも高くなるといった課題がある。

0074

これらの課題に対し、本実施の形態の技術によれば、ユーザが作成するデータやカスタマイズ可能な設定ファイルをコンテナとは別のストレージにデータ領域として確保し、データ領域をバインドマウントすることで、ユーザは共通領域とデータ領域の種別の境界を特に意識することなく透過的にファイルシステムを扱うことができる。これにより、共通領域を別のテンプレートに入れ替えてもユーザのデータやカスタマイズされた設定は保持されるため、カスタマイズ性とソフトウェアのアップデート作業が容易になり運用上の課題を解決することができる。

0075

すなわち、本実施の形態の技術により、ユーザごとにプロセスを分離することでユーザのリソース制御の独立性担保することができる。これにより、ユーザごとの乗っ取り検知や、制限値を超えて利用するユーザのプロセスを落とす、権限の剥奪などの対処が個別に可能になる。

0076

また、ユーザデータ領域に設定ファイルを配置し、インクルードすることでユーザ個別に設定やオプションのカスタマイズが可能となる。また、ユーザ個別のプロセスがコンテナ毎に起動するが、ユーザが利用していない間は、プロセスがアイドル状態となるため、ボトルネックであるディスクIOやCPUリソースを消費しないため、リソースを効率よく利用することが可能になる。

0077

また、本実施の形態の技術により、複数バージョンのアプリケーションを提供し、ユーザが利用したいバージョンを選択できる。実行ファイルは共通領域(例:コンテナテンプレート(イメージ)の実体が格納される領域)にインストールされるが、設定ファイルはユーザ領域(例:バインドマウントするユーザデータ領域)に配置することで、設定をオーバーライドすることができる。つまり、ユーザデータ領域の設定を反映させることができる。

0078

また、ユーザデータ領域と共通領域を分け、共通領域のみを入れ替えることで、ソフトウェアのアップデートを容易に行うことができる。すなわち、ユーザデータ領域はファイルシステムに対して透過的に永続化され、共通領域の入替え前後で変化しない。また、共通領域はリリースごとにテンプレート化することでファイル差分やバージョン管理が可能である。

0079

(実施の形態のまとめ)
以上、説明したように、本実施の形態によれば、特定のユーザのプロセスを他のユーザのプロセスと隔離して動作させる仮想的な環境であるコンテナを収容するコンテナ収容装置であって、前記特定のユーザのコンテナの作成指示を受信した場合に、各ユーザのコンテナ作成において共通に使用されるモデルデータを用いて、前記特定のユーザのコンテナを作成するコンテナ管理手段を備え、前記コンテナ管理手段は、前記コンテナの外部にある外部領域を、前記コンテナにおいて前記特定のユーザにより認識されるデータ領域に接続し、データが前記外部領域に格納されるようにすることを特徴とするコンテナ収容装置が提供される。

0080

前記コンテナ管理手段は、前記特定のユーザのコンテナを別のコンテナに更新することを指示する命令を受信した場合に、前記特定のユーザのコンテナを停止し、前記別のコンテナに対応するモデルデータを用いて、当該別のコンテナを作成することとしてもよい。

0081

また、前記コンテナ収容装置は、前記データ領域に対してデータが読み書きされる頻度又はデータ量を監視し、当該頻度又はデータ量に基づいて、当該データ領域に接続させる外部領域を決定する監視制御手段を備えることとしてもよい。

0082

前記監視制御手段は、前記頻度又はデータ量が所定の閾値よりも大きい場合に、前記データ領域に接続させる外部領域を高速なストレージにおける領域として決定し、前記頻度又はデータ量が所定の閾値以下である場合に、前記データ領域に接続させる外部領域を、前記高速なストレージよりも低速なストレージにおける領域として決定することとしてもよい。

0083

また、前記外部領域として、所定のアプリケーションサービスを提供するサーバ内の領域を使用してもよい。

0084

また、コンテナ収容装置が、複数コンテナ間で平等にリソースを使用できるようにするとともに、全体のリソースに余裕がある場合でも、1コンテナが使用するリソースを所定の上限値に制限するリソース制御手段備えてもよい。

0085

本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。

0086

100コンテナ収容装置
110 コンテナ管理部
120テンプレート格納部
130監視制御部
200管理装置
210オーダー管理部
220 コンテナ収容装置管理部
230 テンプレート格納部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 富士ゼロックス株式会社の「 データ管理システム」が 公開されました。( 2020/09/24)

    【課題】階層構造になっている管理システムにおいて、管理対象データの実体を最上位の装置が全て管理する場合と比較して、管理対象データがユーザの意図しない装置に提供されないシステムを提供する。【解決手段】管... 詳細

  • ソニー株式会社の「 情報処理装置、情報処理方法、およびプログラム」が 公開されました。( 2020/09/24)

    【課題・解決手段】本技術は、複数人のユーザが皆満足できる空間を提供することができるようにする情報処理装置、情報処理方法、およびプログラムに関する。分析部は、複数人のユーザが存在する環境におけるセンシン... 詳細

  • アルテリックス インコーポレイテッドの「 並列処理を使用したハッシュ結合の実行」が 公開されました。( 2020/09/24)

    【課題・解決手段】データレコードは、コンピュータを使用して結合される。第1の複数のデータレコードおよび第2の複数のデータレコード内のデータレコードがハッシュされる。第1の複数のデータレコードおよび第2... 詳細

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ