基于SQS队列大小的自动缩放

时间:2015-09-17 16:16:33

标签: amazon-web-services amazon-ec2 amazon-sqs autoscaling

我已将这些命令组合到基于SQS队列大小的自动缩放EC2实例。我已经运行了所有命令,我的队列是10条消息,并且还没有启动单个实例。

我想弄明白,我的cloudwatch闹钟正在收听哪些SQS队列?此外,任何有助于识别issus的帮助表示赞赏!

### Create Autoscaling Policy ###

aws autoscaling create-launch-configuration --launch-configuration-name my-lc --image-id ami-551c6d30 --instance-type m1.small

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --launch-configuration-name my-lc --availability-zones "us-east-1a" "us-east-1c" --max-size 10 --min-size 0 --desired-capacity 0

# Scale up policy
aws autoscaling put-scaling-policy --policy-name my-sqs-scaleout-policy --auto-scaling-group-name my-asg --scaling-adjustment 1 --adjustment-type ChangeInCapacity

# Scale down policy
aws autoscaling put-scaling-policy --policy-name my-sqs-scalein-policy --auto-scaling-group-name my-asg --scaling-adjustment -1 --adjustment-type ChangeInCapacity

# Alarm to scale up
aws cloudwatch put-metric-alarm --alarm-name AddCapacityToProcessQueue --metric-name ApproximateNumberOfMessagesVisible --namespace "AWS/SQS" --statistic Average --period 120 --threshold 3 --comparison-operator GreaterThanOrEqualToThreshold --dimensions Name=QueueName,Value=my-queue --evaluation-periods 2 --alarm-actions arn:aws:autoscaling:us-east-1:850082592395:scalingPolicy:6408b62d-9363-4252-a88c-5ffab08a8cb5:autoScalingGroupName/my-asg:policyName/my-sqs-scaleout-policy

# Alarm to scale down
aws cloudwatch put-metric-alarm --alarm-name RemoveCapacityFromProcessQueue --metric-name ApproximateNumberOfMessagesVisible --namespace "AWS/SQS" --statistic Average --period 300 --threshold 1 --comparison-operator LessThanOrEqualToThreshold --dimensions Name=QueueName,Value=my-queue --evaluation-periods 2 --alarm-actions arn:aws:autoscaling:us-east-1:850082592395:scalingPolicy:4771ea64-2ebf-45ef-9328-50e058dc68b7:autoScalingGroupName/my-asg:policyName/my-sqs-scalein-policy

# Verify cloudwatch alarms
aws cloudwatch describe-alarms --alarm-names AddCapacityToProcessQueue RemoveCapacityFromProcessQueue

# Verify scaling policy
aws autoscaling describe-policies --auto-scaling-group-name my-asg

# Verify instances autoscaled
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

1 个答案:

答案 0 :(得分:1)

AWS Documentation表示:

  

Amazon Simple Queue Service每5分钟向CloudWatch发送一次数据。

此外,您已在几个时间段内指定了“平均”指标。因此,需要几个5分钟的时间段才能将Amazon SQS指标发送到Amazon CloudWatch。

度量周期(120秒)可能太短而无法从SQS接收多个更新,从而导致INSUFFICIENT_DATA错误。

首先尝试使用Maximum设置触发警报并播放时间段。警报成功触发后,使用阈值来获得所需的行为。