がらくたネット


AutoScaling

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