AutoScaling
awsのAutoScalingはコマンドラインからでしか設定できない(;;
awsのcliセットアップが完了しているものとして記述
設定までの道のり
- ec2インスタンスを作成、中身をカスタマイズ、AutoScalingで複数のインスタンスが起動することを前提に作成する
- カスタマイズしたインスタンスからAMIを作成、AMI IDを控える
- ELBの作成、DNS Nameが表示される
1 2 3 4 | aws elb create-load-balanced \ --load-balancer-name [ELB Name] \ --listeners "Protocol=HTTP,LoadBalancerPort=80,InstanceProtocol=HTTP,InstancePort=80" \ --availability-zones ap-northeast-1a ap-northeast-1c |
- 起動設定作成
1 2 3 4 | aws autoscaling create-launch-configration \ --launch-configuration-name [Name] \ --image-id [AMI ID] \ --instance-type [Type] |
- グループ作成
1 2 3 4 5 6 7 | aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name [Name] \ --launch-configuration-name [Name] \ --min-size [Value] \ --max-size [Value] \ --load-balancer-names [Name] \ --availability-zones ap-northeast-1a ap-northeast-1c |
- グループポリシー作成、スケールアップ用とダウン用の2つを作成する、adjustment-typeをChangeInCapacityとしてスケールアップ用はscaling-adjustmentが1、ダウン用は-1としておく、PolicyARNが返るので控える
1 2 3 4 5 6 | aws autoscaling put-scaling-policy \ --policy-name [Name] \ --auto-scaling-group-name [Name] \ --scaling-adjustment [Value] \ --adjustment-type [Value] \ --cooldown [Value] |
- CloudWatchを作成、スケールアップ用とダウン用の2つ、alarm-actionは先のグループポリシー作成時に返されたPolicyARN、metric-nameはCloudWatchで検知可能な値(例:CPUUtilization)
1 2 3 4 5 6 7 8 9 10 | aws cloudwatch put-metric-alarm --alarm-name [Name] --metric-name [Name] --namespace [Value] --statistic [Value] --period [Value] --evaluation-period [Value] --threshold [Value] --comparison-operator [Value] --alarm-actions [ARN] |
Terminateする
AutoScalingを停止する方法
- AutoScalingGroupの停止
1 2 | aws autoscaling suspend-processes \ --auto-scaling-group-name [Name] |
- AutoScalingGroupの設定変更、minとmaxを0にすると起動してこない
1 2 3 | aws autoscaling update-auto-scaling-group \ --auto-scaling-group-name [Name] \ --min-size 0 --max-size 0 |
- 起動中のインスタンス停止
1 2 3 | aws autoscaling terminate-instance-in-auto-scaling-group \ --instance-id [Instance ID] \ --should-decrement-desired-capacity |