AutoScaling
awsのAutoScalingはコマンドラインからでしか設定できない(;;
awsのcliセットアップが完了しているものとして記述
設定までの道のり
- ec2インスタンスを作成、中身をカスタマイズ、AutoScalingで複数のインスタンスが起動することを前提に作成する
- カスタマイズしたインスタンスからAMIを作成、AMI IDを控える
- ELBの作成、DNS Nameが表示される
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
- 起動設定作成
aws autoscaling create-launch-configration \ --launch-configuration-name [Name] \ --image-id [AMI ID] \ --instance-type [Type]
- グループ作成
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が返るので控える
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)
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の停止
aws autoscaling suspend-processes \ --auto-scaling-group-name [Name]
- AutoScalingGroupの設定変更、minとmaxを0にすると起動してこない
aws autoscaling update-auto-scaling-group \ --auto-scaling-group-name [Name] \ --min-size 0 --max-size 0
- 起動中のインスタンス停止
aws autoscaling terminate-instance-in-auto-scaling-group \ --instance-id [Instance ID] \ --should-decrement-desired-capacity