😈

ECS 最小ヘルス率、最大ヘルス率について

2022/06/01に公開

はじめに

ECSサービススケジューラはデプロイ戦略を決める際、最小ヘルス率最大ヘルス率を使用します。
この最小ヘルス率最大ヘルス率はデプロイタイプ(ローリングデプロイブルーグリーンデプロイ)、起動タイプ(EC2Fargate)によって意味合いが異なります。

最小ヘルス率

デプロイタイプがローリングデプロイ、起動タイプがEC2である場合

  • デプロイ時にステータスがRUNNINGであるタスクのMin Size(最小数)を、Desired Capacityのパーセント値で表したものです(起動タイプがEC2の場合、DRAININGステータスのタスクも最小ヘルス率に考慮されます)。
    • 例えば、Desired Capacityが4で、デプロイ時に2個のタスクをRUNNINGステータスに保ちたい場合、最小ヘルス率を50%(4 * 0.5 = 2)に設定します。
      この場合、スケジューラは2個の新規タスクを開始する前に2個の既存タスクを停止することができます。
  • デフォルト値は100%です。

デプロイタイプがBlue/Greenデプロイ 、起動タイプがEC2である場合

  • デフォルト値(100%)が使用されます。

起動タイプがFargateの場合

  • デプロイ戦略を決める際、最小ヘルス率は使用されません。

最大ヘルス率

デプロイタイプがローリングデプロイ、起動タイプがEC2である場合

  • デプロイ時にステータスがRUNNINGまたはPENDINGであるタスクのMax Size(最大数)を、Desired Capacityのパーセント値で表したものです(起動タイプがEC2の場合、DRAININGステータスのタスクも最大ヘルス率に考慮されます)。
  • この設定によりデプロイのバッチサイズを定義することができます。
    • 例えば、Desired Capacityが4で、デプロイを1タスクづつ行いたい場合、最大ヘルス率を125%(4 * 1.25 - 4 = 1)に設定します。
      この場合、スケジューラは1個の既存タスクを停止する前に1個の新規タスクを開始できます。
  • デフォルト値は200%です。

デプロイタイプがBlue/Greenデプロイ 、起動タイプがEC2である場合

  • デフォルト値(200%)が使用されます。

起動タイプがFargateの場合

  • デプロイ戦略を決める際、最大ヘルス率は使用されません。

参考

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/update-service.html
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task-lifecycle.html

GitHubで編集を提案

Discussion