Amazon ECS サービスパラメータのベストプラクティス - Amazon Elastic Container Service

Amazon ECS サービスパラメータのベストプラクティス

アプリケーションのダウンタイムを発生させないためのデプロイプロセスは次のとおりです。

  1. 既存のコンテナを実行したまま、新しいアプリケーションコンテナを起動します。

  2. 新しいコンテナが正常であることを確認します。

  3. 古いコンテナを停止します。

デプロイメント構成とクラスター内の予約されていない空きスペースの量によっては、すべての古いタスクを新しいタスクに置き換えるまでに、これを複数回行う必要がある場合があります。

数を変更するのに使用できる ECS サービス設定オプションは次の 2 つです。

  • minimumHealthyPercent: 100% (デフォルト)

    デプロイ中にサービスが RUNNING 状態を維持する必要があるタスクの数の下限を入力します。これは、最も近い整数に切り上げられた desiredCount のパーセンテージです。このパラメータにより、追加のクラスターキャパシティーを使用せずにデプロイできます。

  • maximumPercent: 200% (デフォルト)

    デプロイ中に RUNNING または PENDING 状態で許可されるサービスのタスク数の上限。これは、最も近い整数に切り捨てられた desiredCount のパーセンテージ (%) です。

6 つの黄褐色のタスクを含む次のサービスが合計 8 つのタスクを処理できるクラスターにデプロイされているとします。デフォルトの Amazon ECS サービス設定オプションでは、デプロイを必要な 6 つのタスクの 100% を下回ることはできません。

8 つのタスクを格納できるクラスター内で 6 つのタスクを示している図。

デプロイの手順は次のとおりです。

  1. 目標は、黄褐色のタスクを青いタスクに置き換えることです。

  2. デフォルト設定では 6 つの実行中のタスクが必要なため、スケジューラーは青色の新しいタスクを 2 つ開始します。

  3. 合計 6 つのタスク (黄褐色 4 つ、青 2 つ) になるため、スケジューラーは黄褐色のタスクのうちの 2 つのタスクを停止します。

  4. スケジューラーはさらに 2 つの青いタスクを開始します。

  5. スケジューラーは黄褐色のタスクのうちの 2 つをシャットダウンします。

  6. スケジューラーはさらに 2 つの青いタスクを開始します。

  7. スケジューラーは最後の 2 つの黄褐色のタスクをシャットダウンします。

上記の例では、オプションにデフォルト値を使用すると、新しいタスクが開始されるたびに 2.5 分待たされます。さらに、ロードバランサーは古いタスクが停止するまで 5 分間待たなければならない場合があります。

minimumHealthyPercent 値を 50% に設定すると、デプロイをスピードアップできます。

6 つの黄褐色のタスクを含む次のサービスが合計 8 つのタスクを処理できるクラスターにデプロイされているとします。

50% の minimumHealthyPercent 値で 8 つのタスクを収容できるスペースがあるクラスター内で、6 つのタスクを示している図。

デプロイの手順は次のとおりです。

  1. 目標は、黄褐色のタスクを青いタスクに置き換えることです。

  2. スケジューラーは黄褐色のタスクのうちの 3 つを停止します。minimumHealthyPercent 値を満たす黄褐色のタスクがまだ 3 つ実行されています。

  3. スケジューラーは青色のタスクを 5 つ開始します。

  4. スケジューラーは残りの 3 つの黄褐色のタスクを停止します。

  5. スケジューラーは最後の青色のタスクを開始します。

追加のタスクを実行できるように、空き容量を増やすこともできます。

8 つのタスクを格納できるクラスター内で 6 つのタスクを示している図。

デプロイの手順は次のとおりです。

  1. 目標は、黄褐色のタスクを青いタスクに置き換えることです。

  2. スケジューラーは黄褐色のタスクのうちの 3 つを停止する

  3. スケジューラーは青色のタスクを 6 つ開始する

  4. スケジューラーは 3 つの黄褐色のタスクを停止します。

タスクがしばらくアイドル状態で、使用率が高くない場合は、Amazon ECS サービスの設定オプションに次の値を使用してください。

  • minimumHealthyPercent: 50%

  • maximumPercent: 200%