AWS:Elastic Beanstalk和Auto Scaling(内存不足时)

时间:2018-12-07 13:07:26

标签: amazon-web-services load-balancing autoscaling amazon-elastic-beanstalk

我正在将Elasticbeanstalk用于我的微服务架构。我想设置一个负载均衡器,一旦我的内存用完100%,而我却看不到任何指标,就可以剥离另一个实例。

另一个问题:实例可以旋转多少时间。

让我知道是否还有其他解决此问题的方法。

1 个答案:

答案 0 :(得分:0)

设置Beanstalk环境时,可以将其选择为“负载平衡”或“单一实例”(您也可以随时更改它)。在环境的配置中,您可以选择按比例缩放指标,但是在列表中将看不到任何与内存相关的指标。

您可以设置CloudWatch警报来触发负载均衡器扩展和缩减事件,但是正如@Stefan所提到的,您实际上需要创建与内存相关的指标才能执行此操作,因为默认情况下它们不存在。 / p>

您可以使用部署包中.ebextensions文件夹中的配置文件来执行此操作,该配置文件每n分钟写入一次CloudWatch。

您必须授予Beanstalk IAM角色权限才能使用内联策略写入CloudWatch。

然后您将开始在CloudWatch中查看内存指标,因此可以使用它们来放大和缩小。

.config文件的YAML如下所示(您可能不需要所有这些指标):

packages:
  yum:
    perl-DateTime: []
    perl-Sys-Syslog: []
    perl-LWP-Protocol-https: []
    perl-Switch: []
    perl-URI: []
    perl-Bundle-LWP: []
sources: 
  /opt/cloudwatch: https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip
  
container_commands:
  01-setupcron:
    command: |
      echo '*/5 * * * * root perl /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl `{"Fn::GetOptionSetting" : { "OptionName" : "CloudWatchMetrics", "DefaultValue" : "--mem-util --disk-space-util --disk-path=/" }}` >> /var/log/cwpump.log 2>&1' > /etc/cron.d/cwpump
  02-changeperm:
    command: chmod 644 /etc/cron.d/cwpump
  03-changeperm:
    command: chmod u+x /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl
option_settings:
  "aws:autoscaling:launchconfiguration" :
    IamInstanceProfile : "aws-elasticbeanstalk-ec2-role"
  "aws:elasticbeanstalk:customoption" :
    CloudWatchMetrics : "--mem-util --mem-used --mem-avail --disk-space-util --disk-space-used --disk-space-avail --disk-path=/ --auto-scaling"

链接:

Troubleshooting CPU and Memory Issues in Beanstalk

How to monitor memory on Beanstalk

How to add permissions to IAM role

Example .config file which includes setting up CloudWatch triggers