根据内存利用率自动扩展AWS EC2安装

我正在设置基于特定实例消耗的内存的自动缩放。 我通过在awsforums张贴的链接。 我能够设置我的指标,并使用给定的bash脚本和相同的variables。

在弄清楚如何根据这些指标来设置自动缩放比例的时候,我在Google项目托pipe站点了解了一堆bash脚本。 我无法设定指标。

我怎么能进一步?

显示4个Cloudwatch警报的图像没有足够的数据进行评估

将内存度量标准logging到Cloudwatch之后,只需按照任何现有度量标准设置自动调节。

首先,与所有的AWS命令行工具一样,您需要设置(导出):

  • AWS_CREDENTIAL_FILE或
  • 两者:EC2_PRIVATE_KEY和EC2_CERT

接下来,运行以下三个命令,根据需要修改它们(这些只是从命令行运行 – 而不是从cron运行)。

创build启动configuration:您至less需要传递图像和实例types,其他参数是可选的,但可能是一个好主意。

as-create-launch-config LaunchConfigurationName --image-id value --instance-type value [--block-device-mapping "key1=value1,key2=value2..." ] [--kernel value] [--key value ] [--ramdisk value ] [--group value[,value...] ] [--user-data value ] [--user-data-file value ] [General Options] 

例如:

 as-create-launch-config config-name --image-id AMI-xxxxxxxx --instance-type m1.small --key keypair-name --group security-group-name 

创build自动缩放组:在这里我们定义缩放参数 – 实例将在哪里启动,限制实例的数量,并将组与我们创build的configuration关联。

 as-create-auto-scaling-group AutoScalingGroupName --availability-zones value[,value...] --launch-configuration value --max-size value --min-size value [--cooldown value ] [--load-balancers value[,value...] ] [General Options] 

例如:

 as-create-auto-scaling-group as-group-name --availability-zones us-east-1a --launch-configuration config-name --min-size 1 --max-size 5 --cooldown 300 

(你也可以指定一个–desired-capacity,它是最开始的实例数,如果它不同于最小值)

创build一个可扩展的策略:在这里,我们定义在触发警报时将执行的操作,并将策略与特定的自动调节组相关联。 创build一个扩大规模,一个缩小规模。

 as-put-scaling-policy PolicyName --type value --auto-scaling-group value --adjustment value [--cooldown value ] [General Options] 

这个命令会输出一个ARN,以便将策略与cloudwatch警报相关联 – 记下ARN。 每个命令将返回一个不同的ARN – 即你将有2个ARN – 记住哪一个是哪个策略。

例如:

放大:

  as-put-scaling-policy HighMemPolicy --auto-scaling-group as-group-name --adjustment=1 --type ChangeInCapacity --cooldown 300 

缩小:

 as-put-scaling-policy LowMemPolicy --auto-scaling-group as-group-name --adjustment=-1 --type ChangeInCapacity --cooldown 300 

示例返回:

 POLICY-ARN arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/abc-1234-def-567 

为每种情况创build一个Cloudwatch警报:我们需要使用我们收集的数据在特定情况下触发警报,然后让警报执行适当的扩展策略。 您将需要2个警报 – 一个用于上限,另一个用于下限。

 mon-put-metric-alarm AlarmName --comparison-operator value --evaluation-periods value --metric-name value --namespace value --period value --statistic value --threshold value [--actions-enabled value ] [--alarm-actions value[,value...] ] [--alarm-description value ] [--dimensions "key1=value1,key2=value2..." ] [--insufficient-data-actions value[,value...] ] [--ok-actions value[,value...] ] [--unit value ] [General Options] 

例如:

上限:

 mon-put-metric-alarm HighMemAlarm --comparison-operator GreaterThanThreshold --evaluation-periods 4 --metric-name UsedMemoryPercent --namespace "AWS/EC2" --period 60 --statistic Average --threshold 85 --alarm-actions arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/abc-1234-def-567 --dimensions "AutoScalingGroupName=as-group-name" 

下限:

 mon-put-metric-alarm LowMemAlarm --comparison-operator LessThanThreshold --evaluation-periods 4 --metric-name UsedMemoryPercent --namespace "AWS/EC2" --period 60 --statistic Average --threshold 60 --alarm-actions arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/bcd-2345-efg-678 --dimensions "AutoScalingGroupName=as-group-name" 

在上面的例子中,我们使用的是“UsedMemoryPercent”(来自论坛脚本),正在看“60秒以上的平均值”。 对于第一次报警,如果连续四次采样(即4分钟)的平均值超过85%,我们将触发报警(并执行操作)。对于第二次报警,我们寻找“不到60%”。

良好的参考包括:

使用--help运行该命令以查看参数的详细信息。

您可以使用我在这里提供的模板脚本,因为它与我从EC2实例本身进行自动缩放的方式相同。 我只需要在<SEND_INFORMATION_GATHERED_BY_EMAIL_HERE>行之后添加特定的命令来自动缩放,因为我也想知道是什么原因造成的。 但要确保在EC2实例中有必要的AWS提供的工具。

祝你好运!