我正在将Elasticbeanstalk用于我的微服务架构。我想设置一个负载均衡器,一旦我的内存用完100%,而我却看不到任何指标,就可以剥离另一个实例。
另一个问题:实例可以旋转多少时间。
让我知道是否还有其他解决此问题的方法。
答案 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