« Service Last Accessed Dataを用いてIAMポリシーから不必要な権限を除くもう一つの方法 | メイン | AWS初心者向けWebinar「利用者が実施するAWS上でのセキュリティ対策」資料公開 »

Amazon ECS機能追加 - 新しいデプロイ機能、CloudWatchメトリクス、SingaporeとFrankfurtリージョン

本日、Amazon EC2 Container Service (ECS)でのDockerアプリケーションの実行をより簡単にするための2つの改善を行いました。Amazon ECSは高いスケーラビリティと高いパフォーマンスを持ったコンテナ管理サービスで、Dockerコンテナをサポートし、Amazon EC2インスタンスで構成されるクラスタ上でのアプリケーション実行を簡単に行えます。

1つ目の改善は、より柔軟なデプロイができるようになりました。ECS Serviceスケジューラは起動したままのステートレスなサービスやアプリケーションで使われています。Serviceスケジューラは指定された数のTaskが起動している状態を保ち続けてくれ、オプションでElastic Load BalancingにTaskを登録してくれます。以前は、デプロイ時に新しいTask DefinitionでTaskを作成し、それがRUNNING状態になった後で古いTask Definitionを使っているTaskを停止していました。指定された数のTask全てが新しいTask Definitionを使ったものになるまでこのプロセスが継続します。このプロセスによりデプロイ中もサービスのキャパシティを確保できますが、代わりにクラスタ内に追加の1 Taskを実行できるだけの余分なキャパシティが必要となります。デプロイをするためだけに追加のキャパシティを使いたくない時には、これは望むべき姿ではありませんでした。

今では、ServiceのminimumHealthyPercentによってデプロイ中に実行しておきたいTask数の下限を指定できます。minimumHealthyPercentを100%にすると、desiredCountの数だけTaskが実行されていることを保証しますし、100%以下にすることでスケジューラはデプロイ中に一時的にdesiredCount違反をすることができます。例えばクラスタに4つのAmazon EC2インスタンスがあり4つのTaskが各インスタンスで実行されている時に、minimumHealthyPercentを100%から50%にするとスケジューラは2つの新しいTaskをデプロイする前に2つのTaskを停止することができます。

ServiceのmaximumPercentはデプロイ中に実行されているTaskの上限を表していて、デプロイのバッチサイズを定義できます。例えば、クラスタに8つのインスタンスがあり4つのTaskが別々のインスタンスで実行されている時に、maximumPercentが200%だと4つの古いTaskを停止する前に4つの新しいTaskを開始することができます。これらの新しいデプロイオプションについての詳細はドキュメントをご覧下さい。

これらのオプションを視覚的に解説するために、最小限のスペースでデプロイしたいというシナリオを考えてみます。minimumHealthyPercentを50%に、maximumPercentを100%に設定したとします。するとデプロイは以下の様になります:

Scenario1-ecs

他のシナリオとして、Serviceのキャパシティを落とさずに素早くデプロイしたいシナリオを考えます。minimumHealthyPercentを100%に、maximumPercentを200%に設定したとします。デプロイは以下の様になります:

Scenario2-ecs

2つ目の改善は、ECSクラスタのEC2インスタンスを自動的にスケールするためのものです。ECSがTaskをスケジュールする時には、EC2インスタンスはTask Definitionの制約を満たす必要があります。例えばTask Definitionが1 GBのRAMを要求している時には、ECSは少なくともそのメモリ量が残っているEC2インスタンスを見つけてくるので、コンテナを開始することができます。もしスケジューラがTaskを配置するために必要は制約を満たすEC2インスタンスを発見できなかったら、Taskの配置に失敗します。

クラスタのキャパシティ管理はTaskをうまくスケジュールするためには極めて重要であることが分かると思います。Auto ScalingはCloudWatchのアラームに反応してクラスタのEC2インスタンスを動的にスケールさせることができます。今ではECSはクラスタ上で実行されているTaskによって確保されているCPUとメモリの量をCloudWatchのメトリクスに送信します。これらのメトリクスを使って、クラスタの利用可能なキャパシティが指定した閾値を下回った時にAuto Scaling GroupのEC2インスタンスを追加するCloudWatchアラームを作成できます。詳細な情報はTutorial: Scaling Container Instances with CloudWatch Alarmsをご覧下さい。

最後に、Amazon ECSはAsia Pacific (Singapore)リージョンとEU (Frankfurt)リージョンで利用可能となり、ECSは8つのリージョンに展開されたことになります。
 

コメント

Twitter, Facebook

このブログの最新情報はTwitterFacebookでもお知らせしています。お気軽にフォローください。

2018年4 月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30