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

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

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

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

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

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

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

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

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

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

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

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

例: デフォルト設定オプション

タスクが 6 つある次のサービスが、合計 8 つのタスクを処理できるクラスターにデプロイされているとします。デフォルトのサービス設定オプションでは、デプロイは 6 つの対象タスクの 100% を下回ることはありません。

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

  1. 目標は 6 つのタスクを置き換えることです。

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

    現在、既存のタスクが 6 つあり、新しいタスクが 2 つあります。

  3. スケジューラは既存のタスクのうちの 2 つを停止します。

    現在、既存のタスクが 4 つあり、新しいタスクが 2 つあります。

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

    現在、既存のタスクが 4 つあり、新しいタスクが 4 つあります。

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

    現在、既存のタスクが 2 つあり、新しいタスクが 4 つあります。

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

    現在、既存のタスクが 2 つあり、新しいタスクが 6 つあります。

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

    現在、新しいタスクが 6 つあります。

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

例: minimumHealthyPercent の変更

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

タスクが 6 つある次のサービスが、合計 8 つのタスクを処理できるクラスターにデプロイされているとします。デプロイの手順は次のとおりです。

  1. 目標は 6 つのタスクを置き換えることです。

  2. スケジューラは既存のタスクのうちの 3 つを停止します。

    minimumHealthyPercent 値を満たす既存のタスクがまだ 3 つ実行されています。

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

    既存のタスクが 3 つあり、新しいタスクが 5 つあります。

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

    新しいタスクが 5 つあります。

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

    新しいタスクが 6 つあります。

例: クラスターの空き容量を変更する

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

タスクが 6 つある次のサービスが、合計 10 個のタスクを処理できるクラスターにデプロイされているとします。デプロイの手順は次のとおりです。

  1. 目標は既存のタスクを置き換えることです。

  2. スケジューラは既存のタスクのうちの 3 つを停止します。

    既存のタスクが 3 つあります。

  3. スケジューラは新しいタスクを 6 つ開始します。

    既存のタスクが 3 つあり、新しいタスクが 6 つあります。

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

    新しいタスクが 6 つあります。

レコメンデーション

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

  • minimumHealthyPercent: 50%

  • maximumPercent: 200%