Edited at

AWS FargateでAutoScaleを試してみる

More than 1 year has passed since last update.

AWS Fargateでより強力になったAuto Scaleingを実施してみます。

AWS公式のブログを参考に設定を実施しました。

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


旧ECSのAutoScale

コンテナインスタンス(EC2)縛りがありコレジャナイ感があります。

以下2つのAuto Scale設定が必要です。


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


  • ECS ServiceAuto Scale

ECS.png


FargateのAutoScale

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


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

が不要になりました。

Fargate.png


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起動

前回記事を参考に実施。


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

Service更新.png


CloudWatch Alerm設定

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


  • 実施後のアラーム状態


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


CloudWatchAlerm設定.png


ECS Service AutoScale設定

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



  • Serviceの更新

Service更新.png



  • Auto Scaling Policy設定


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

以下同様に、ScaleInPolicyも作成


AutoScalePolicy設定.png


  • 設定後のAuto Scalingの状態


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


ServiceのAutoScale.png


負荷を掛ける


Apache Bench等で負荷を掛けて、ScaleOutAlermを発火させます。

必要に応じ、セキュリティグループの調整も実施してください。



bash

$ ab -n 1000000 -c 1000 http://fargate-nginx-alb-XXXXXXXXXXXX.us-east-1.elb.amazonaws.com/




  • ScaleOutが発火した状態

ScaleOut発火.png



  • taskが2つRUNNINGになります

サービス2つRunning.png


アクセス停止


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




  • AutoScale履歴


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


AutoScale履歴.png



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

サービス1つRunning.png


最後に

ECSでは苦労した、Auto Scaleがあっさり制約なしで実現できるようになりました。

東京リージョン上陸が待ち遠しいですね。