連載
» 2015年11月20日 05時00分 UPDATE

Docker運用管理製品/サービス大全(5):AWSのDocker管理サービス、Amazon EC2 Container Serviceの概要と使い方 (1/4)

数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する特集。今回は、AWSが提供するECSの概要や主な機能、環境構築方法、オーケストレーション設定やスケーリングを行う手順など使い方などについて。

[長妻賢, 澤井健,株式会社NTTデータ]

 数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する本特集「Docker運用管理製品/サービス大全」。今回は、AWSが提供するAmazon EC2 Container Service(以下、ECS)の概要と使い方を解説します。

 なお本稿の内容は、ECSが2015年5月当時のものです。環境構築手順の紹介で扱うDocker自体のバージョンは1.6を使っています。

ECSの構成概要

 AWSが提供するDockerオーケストレーションツールのSaaSです。Dockerコンテナーの情報はECS上に永続化されています。

 ECSの構成は下記のようになります(参考)。

docker5_1.jpg

Container instance

 ECS Agent(Dockerコンテナー)が動作しているEC2インスタンスです。このEC2インスタンス上でTaskが動作します。

Task

 Container instance上で動作するTask Definitionのアプリケーション定義をプロセス化したものです。

Task Definition

 単一または複数のコンテナー定義が含まれているアプリケーション定義です。ECSでは上記のアプリケーションをTaskという単位で管理します。

Service

 1つのServiceは1つのTask Definitionにひも付けられます。Task Definitionから作成されたTaskの同時実行数を管理します。

Services

 個々のServiceのグルーピングです。

Cluster

 特定のAWSリージョンのServicesとContainer instance(EC2インスタンス)の論理的なグルーピングです。

Scheduler

 各Clusterにひも付けられ、Taskを実際のContainer instance(EC2インスタンス)に割り当てます。

AWSの他のサービスと連携してここまでできる――ECSの機能一覧

 ECSは下記の機能を持っています。

単一または複数のコンテナーを管理「Task」

 ECSは単一または複数のコンテナーを「Task」という形で管理します。Container instanceのリソースに余裕がある場合は同一Taskを複数動作させることが可能です。

 またECSは、下図のようにTask Definitionの中でDockerfileのバージョン管理ができます。

docker5_2.jpg

 そして、このRivisionごとにServiceにTaskとして登録することができます。

docker5_3.jpg

SchedulerによるTaskの自動配備/自動復旧「Cluster」

 ClusterはSchedulerによるTaskの自動配備/自動復旧機能を持ちます。ECSのSchedulerはServiceに定義に従い設定された数のTaskをContainer instanceに自動配備しようとします。また、Taskが異常な状態(ELBのヘルスチェックが失敗した)になった場合は自動で削除し、再作成します。

 またClusterは、Serviceのアップデートによるコンテナーの自動アップデートもできます。ECSのServiceのTask定義をアップデートするとリソースに余裕のあるときは徐々にTaskをアップデートしていきます(「ECSで使用しているDockerイメージが更新された場合の対応手順」の章で検証しています)。

AWS機能連携――「Elastic Load Balancing」でTaskのロードバランシング

 ECSは、Elastic Load Balancing(以下、ELB)と連携することで、Taskのロードバランシングが可能です。

AWS機能連携――「Amazon CloudWatch」でContainer instanceの増減管理

 「Auto Scaling」がContainer instanceの管理を行っているため、ECSはAmazon CloudWatch(以下、CloudWatch)のアラートでContainer instanceの増減が可能です(「ECSでスケーリングを行う手順」の章で詳細を解説しています)。

AWS機能連携――さまざまなセキュリティ管理

 ECSのクラスター構成を行う場合は、自動でAmazon Virtual Private Cloud(以下、VPC)を作り、ネットワークACL(アクセスコントロールリスト)セキュリティグループで管理を行うため、AWSのセキュリティ管理がそのまま適用できます(「ECSのオーケストレーション設定」の章で自動生成されるコンポーネントを解説しています)。

AWS機能連携――「AWS CloudTrail」で操作ログ管理

 ECSへのAPI実行はAWS CloudTrailにログが残ります。APIの証跡は下記のように取得可能です。

docker5_4.jpg

 また、ECSのコンテナー情報はCloudWatchには対応していません(ただし、カスタムメトリクスでコンテナーのログやContainer instanceを監視することは可能です)。

ECSの各コンポーネントの上限

 ECSの各コンポーネントの上限数を解説します(参考)。

リソース 上限 備考
アカウントのリージョンごとのCluster数 1000
ClusterごとのContainer instance数 1000
ServiceごとのLoad balancer数 1
ServiceごとのTask数 1000
run-taskコマンドごとのTaskの実行数 10 run-task:Schedulerを使用したTaskを実行
start-taskコマンドごとのContainer instance数 10 start-task:Schedulerを使用せずにTaskを実行
run-taskコマンドのごと秒に割り当てるContainer instance数 5 クラスターごとに5
Container instanceの登録レート 1 毎秒1
ServiceごとのTask数 1000
Task Definitionのサイズ 32kb
Task Definitionの最大コンテナー数 10
Task Definitionの登録レート 1 毎秒1
       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。