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
があっさり制約なしで実現できるようになりました。
東京リージョン上陸が待ち遠しいですね。