Elastic Container Service(ECS) Fargateの2つのオートスケーリング設定

fargate

Elastic Container Service(ECS)Fargateのオートスケーリング設定について記載します。

Fargateでは、以下の2つのオートスケーリングの設定が可能です。

2つのオートスケーリング設定

リソースの負荷に応じたオートスケーリング設定
時間に応じたオートスケーリング設定

Fargateが高負荷時の対応方法については以下の記事もご参照ください。

Elastic Container Service(ECS) Fargate 高負荷時の対策ーメモリ使用率とCPU使用率
ECS Fargateの高負荷時の対策 「CPU使用率が高いケース」 「メモリ使用率が高いケース」 について記載します。 「スケールアウト:タスク数を増やす」 「スケールアップ:1タスクのCPUやメモリを大きくする」 「新しいデプロイの強制:タスクを全て入れ替える」 といった対策があります。

まずは、リソースの負荷に応じたオートスケーリング設定について、書いていきます!

スポンサーリンク

リソースの負荷に応じたオートスケーリング設定

リソースの負荷に応じたオートスケーリング設定について、以下の順で記載していきます。

記載内容

①設定方法
②設定内容について
③メリット・注意点

まずは、設定方法についてです。

設定方法

以下の流れで設定できます。

  1. AWSマネージメントコンソール画面からECSを選択
  2. スケーリングしたいクラスターを選択
  3. スケーリングしたいサービスを選択
  4. 「サービスを更新」ボタンを押下
  5. 「サービスの Auto Scaling」の設定からスケーリングポリシー(以下の画面)を設定
  6. サービスを更新
ecs 負荷に応じたオートスケール設定

ecs 負荷に応じたオートスケール設定

設定内容について

以下のメトリクスに対して、ターゲット値(閾値)を設定し、オートスケーリングさせることが可能です。

設定可能なメトリクス

CPU使用率
メモリ使用量

メリット・注意点

<メリット>

  • リソースを有効活用できる
    • リソースの負荷に応じてスケーリングするため、負荷が低い場合はコンテナ数を抑え、負荷が高い時のみコンテナを増やすことができる

<注意点>

  • コンテナが起動するまで時間を要する
    • 急激なアクセス増の場合、コンテナの起動が間に合わない可能性がある
      • 急激なアクセス増加が見込まれる場合、次に記載する「時間に応じたオートスケーリング設定」をしておくのがオススメです。

時間に応じたオートスケーリング設定

時間に応じたオートスケーリング設定について、以下の順に記載していきます。

記載内容

①設定方法
②メリット・注意点

まずは、設定方法についてです。

    設定方法

    以下のコマンドにて設定します。

    
    aws application-autoscaling put-scheduled-action \
    --scheduled-action-name {スケジューリング名} \
    --schedule "cron({cron形式で起動タイミングを設定})" \ 
    --service-namespace ecs \
    --resource-id service/{クラスター名}/{サービス名} \
    --scalable-dimension ecs:service:DesiredCount \
    --scalable-target-action MinCapacity=10,MaxCapacity=20
    
    • {スケジューリング名}:管理しやすいスケジューリング名を記載
    • {cron形式で起動タイミングを設定}:cron形式で記載します。時間はUTCです。毎日10時の場合、「cron(0 1 * * ? *)」と記載します。
    • {クラスター名}:クラスター名を記載
    • {サービス名}:サービス名を記載
    • scalable-target-actionで起動させたいタスク数を指定します。

    メリット・注意点

    <メリット>

    • コンテナをあらかじめ用意しておくことができる
      • 急激なアクセス増が予測される場合、コンテナをあらかじめ起動しておくことで、急激なアクセス増に耐えることができる

    <注意点>

    •  設定によっては余分なリソースが生まれる
      • 必要なコンテナ数以上を立ち上げるように設定してしまうと、余分なリソースが生まれることとなります。

    まとめ

    • リソースの負荷に応じたオートスケーリング設定
    • 時間に応じたオートスケーリング設定

    について見てきました。

    それぞれの設定のメリットと注意点を確認し、どちらの設定を行うか検討する必要があると思います。

    また、2つの設定(リソースの負荷に応じたオートスケーリングと時間に応じたオートスケーリング)を組み合わせることで、それぞれのメリットを活かしつつ、注意点を補える設定をすることも可能です。