我能够设置自动扩展策略,也testing工作正常,我使用EC2小实例运行Ruby on Rails的应用程序,因为Rails是更多的内存激烈的平台我想扩大的EC2实例基于内存不在CPU利用率。 我昨天Googlesearch,但没有取得任何结果,实际上帮助我。
任何的意见都将会有帮助。
EC2上的自动缩放基于Cloudwatch的触发器。 默认情况下,Cloudwatch不收集有关内存使用情况的数据( 官方原因是这些度量标准需要查看实例中运行的操作系统)
因此,解决scheme是设置一个自定义度量来监视内存使用情况,将警报添加到该度量标准,然后将您的缩放策略build立在该警报之外。
亚马逊在这个论坛post里描述了这个过程。
首先,你有一个脚本来收集“自由”(从上面的页面复制)的数据:
#!/bin/bash export AWS_CLOUDWATCH_HOME=/home/ec2-user/CloudWatch-1.0.12.1 export AWS_CREDENTIAL_FILE=$AWS_CLOUDWATCH_HOME/credentials export AWS_CLOUDWATCH_URL=https://monitoring.amazonaws.com export PATH=$AWS_CLOUDWATCH_HOME/bin:$PATH export JAVA_HOME=/usr/lib/jvm/jre # get ec2 instance id instanceid=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id` memtotal=`free -m | grep 'Mem' | tr -s ' ' | cut -d ' ' -f 2` memfree=`free -m | grep 'buffers/cache' | tr -s ' ' | cut -d ' ' -f 4` let "memused=100-memfree*100/memtotal" mon-put-data --metric-name "FreeMemoryMBytes" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$memfree" --unit "Megabytes" mon-put-data --metric-name "UsedMemoryPercent" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$memused" --unit "Percent"
该脚本从“free”列下的“ – / + buffers / cache”行中获取数字,作为“total”(在“Mem”行下)的百分比,并设置2个度量 – 使用的内存百分比,以MB为单位的总内存空间。
所有的AWS API工具都非常慢(相对来说) – 如果可能的话,直接从一些支持的语言(例如Ruby)使用API,您将获得比上述脚本更好的性能。
修改上面的脚本以满足您的需要(您可能不需要这两个指标等),并将其设置为每隔几分钟通过cron运行。 请记住,您可以免费获得有限数量的自定义/详细指标和警报,之后是每月费用。
还有一个谷歌代码项目 – “ Aws Missing Tools ”,它具有监视内存使用情况的脚本以及其他一些可能有用的指标。
一旦完成了度量标准的设置和运作,就可以为其创build一个警报,并按照任何预定义的度量标准继续进行自动调整( as-put-scaling-policy等)。
亚马逊刚刚更新( 2013年2月 )CloudWatch的脚本,现在您可以select观看相当多的信息:
您可以下载适用于Linux的CloudWatch Monitoring Scripts,并查看完整的文档。
完整的AWS公关来源: http : //aws.typepad.com/aws/2013/02/cloudwatch-monitoring-scripts-updated.html