AWSのDocker管理サービス、Amazon EC2 Container Serviceの概要と使い方:Docker運用管理製品/サービス大全(5)(1/4 ページ)
数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する特集。今回は、AWSが提供するECSの概要や主な機能、環境構築方法、オーケストレーション設定やスケーリングを行う手順など使い方などについて。
数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する本特集「Docker運用管理製品/サービス大全」。今回は、AWSが提供するAmazon EC2 Container Service(以下、ECS)の概要と使い方を解説します。
なお本稿の内容は、ECSが2015年5月当時のものです。環境構築手順の紹介で扱うDocker自体のバージョンは1.6を使っています。
ECSの構成概要
AWSが提供するDockerオーケストレーションツールのSaaSです。Dockerコンテナーの情報はECS上に永続化されています。
ECSの構成は下記のようになります(参考)。
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のバージョン管理ができます。
そして、このRivisionごとにServiceにTaskとして登録することができます。
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の証跡は下記のように取得可能です。
また、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 |
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 所要時間わずか10分で「Docker」を体験しよう――Azureで始めるDocker入門
2014年から急速に注目度が増しているコンテナー型仮想化技術「Docker」。すでに多くのLinuxで利用可能な技術ですが、次期Windows Serverでもサポートされる予定です。Dockerとはどのようなものなのか、一度、実際に触って体験してみてはいかがでしょうか。 - Linux/OSSに不慣れでも大丈夫! WindowsでDockerを扱う際のポイント
本連載第31回は「Azureで始めるDocker入門」を掲載しました。掲載後、すぐに「Docker 1.6」がリリースされたので、意図したわけではありませんが、タイムリーな記事になったと思います。今回は、その記事でも紹介した「Docker Client for Windows」をフォローアップします。 - Docker代替のコンテナーランタイム「Rocket」をCoreOSが公開
CoreOSがDocker代替のシンプルなコンテナーランタイムを公開。Dockerの当初の目的であるシンプルなコンテナーを目指すプロトタイプだ。 - Docker、そしてCloud FoundryとPaaSの価値とは
Docker人気を踏まえたとき、Cloud Foundryはどのように位置付けられるのか。PaaSの最終的な価値とは何なのか。AWSとの競合とは。Cloud Foundryの責任者である米PivotalのJames Watters氏に聞いた。 - レッドハットが発表したOpenShift Enterprise 3は「Dockerを知らなくても使える」基盤
レッドハットが2015年7月22日に国内発表したPaaS製品「OpenShift Enterprise 3」の最大の狙いは、Dockerを知らなくてもアプリケーションの開発・運用ができるようにすることだという。ここでは、レッドハットの日本法人の説明に基づき、OpenShift Enterprise 3を紹介する。 - 米グーグルのDockerコンテナ管理サービスが一般提供開始
米グーグルがGoogle Cloud Platform上で提供しているDockerコンテナオーケストレーション/管理サービス、Google Container Engineが2015年8月26日、ベータ段階を終了、一般提供が開始された。毎週20億以上のコンテナを立ち上げているグーグルの経験に基づくサービスだとしている。