AWS Fargateでより強力になったAuto Scaleingを実施してみます。
AWS公式のブログを参考に設定を実施しました。
TerraformでECS環境の構築【オートスケール編】を参考にTerraformでも設定します。
旧ECSのAutoScale
コンテナインスタンス(EC2)縛りがありコレジャナイ感があります。
以下2つのAuto Scale設定が必要です。
- コンテナインスタンスのAuto Scale
- 
ECS ServiceのAuto 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 Alarm設定
AWS公式のブログを参考に実施
- 実施後のアラーム状態
CPU利用率は低いため、
ScaleInがアラーム状態で、ScaleOutがOKの状態
ECS Service AutoScale設定
AWS公式のブログを参考に実施
- 
Serviceの更新
- 
Auto Scaling Policy設定
作成した
Alarmを選択し、クールダウン期間はテスト用に60秒に修正
以下同様に、ScaleInPolicyも作成
- 設定後のAuto Scalingの状態
タスクの最大数も調整の上、更新する
負荷を掛ける
Apache Bench等で負荷を掛けて、ScaleOutAlarmを発火させます。
必要に応じ、セキュリティグループの調整も実施してください。
$ ab -n 1000000 -c 1000 http://fargate-nginx-alb-XXXXXXXXXXXX.us-east-1.elb.amazonaws.com/
- 
ScaleOutが発火した状態
- 
taskが2つRUNNINGになります
アクセス停止
CPU利用率が低下し、
ScaleInAlarmが発火して、taskが停止します。
- 
AutoScale履歴
Alarmによるstart及びstopの履歴が参照できる。
- 
taskが1つ(再小数)RUNNINGに戻る
最後に
旧ECSでは苦労した、Auto Scaleがあっさり制約なしで実現できるようになりました。
東京リージョン上陸が待ち遠しいですね。












