AWS FargateでAutoScaleを試してみる


AWS Fargateでより強力になったAuto Scaleingを実施してみます。
AWS公式のブログを参考に設定を実施しました。

TerraformでECS環境の構築【オートスケール編】を参考にTerraformでも設定します。

旧ECSのAutoScale

コンテナインスタンス(EC2)縛りがありコレジャナイ感があります。
以下2つのAuto Scale設定が必要です。

  • コンテナインスタンスのAuto Scale
  • ECS ServiceAuto Scale

FargateのAutoScale

コンテナインスタンス(EC2)から解放され、ECS Cluster内でtaskを自在に配置できます。

  • コンテナインスタンスのAuto Scale

が不要になりました。

Terraformで設定

以下で一気に作成します。
https://github.com/Thirosue/terraform-sample/tree/master/aws_fargate

ECSとの差分は以下と比較ください。
https://github.com/Thirosue/terraform-sample/tree/master/aws_ecs

  • プロビジョニング
$ cd /path/to/directory/aws_fargate
$ cat terraform.tfvars
access_key="[アクセスキー記載]"
secret_key="[シークレットキーを記載]"
aws_id="[AWS IDを記載]"
$ terraform plan
$ terraform apply
  • 破棄
$ terraform destroy

マネジメントコンソールで設定

Fargate起動

前回記事を参考に実施。

  • 実施後のサービスの状態

CloudWatch Alerm設定

AWS公式のブログを参考に実施

  • 実施後のアラーム状態

CPU利用率は低いため、ScaleInがアラーム状態で、ScaleOutがOKの状態

ECS Service AutoScale設定

AWS公式のブログを参考に実施

  • Serviceの更新

  • Auto Scaling Policy設定

作成したAlermを選択し、クールダウン期間はテスト用に60秒に修正
以下同様に、ScaleInPolicyも作成

  • 設定後のAuto Scalingの状態

タスクの最大数も調整の上、更新する

負荷を掛ける

Apache Bench等で負荷を掛けて、ScaleOutAlermを発火させます。
必要に応じ、セキュリティグループの調整も実施してください。

bash
$ ab -n 1000000 -c 1000 http://fargate-nginx-alb-XXXXXXXXXXXX.us-east-1.elb.amazonaws.com/
  • ScaleOutが発火した状態

  • taskが2つRUNNINGになります

アクセス停止

CPU利用率が低下し、ScaleInAlermが発火して、taskが停止します。

  • AutoScale履歴

Alermによるstart及びstopの履歴が参照できる。

  • taskが1つ(再小数)RUNNINGに戻る

最後に

ECSでは苦労した、Auto Scaleがあっさり制約なしで実現できるようになりました。
東京リージョン上陸が待ち遠しいですね。