基于时间的弹性Beanstalk缩放

时间:2015-11-19 11:35:49

标签: amazon-web-services elastic-beanstalk amazon-elastic-beanstalk

我尝试关闭/启动我的弹性beanstalk(测试)环境过夜,以便在不需要服务器时节省资源。在EB的Web控制台上,我可以输入触发的基于时间的缩放。

但是,当我在.ebextensions文件夹中添加一个应该执行相同操作的配置文件时,服务器根本无法扩展。

根据Elastic Beanstalk的documentation(搜索" 基于时间的扩展选项设置文件的示例"),可以添加。 ebextension文件,带有基于时间的缩放配置。

所以我调整了示例并将相应的定义添加到项目中:

{ [ { "Namespace": "aws:autoscaling:scheduledaction", "ResourceName": "OvernightShutdown", "OptionName": "MinSize", "Value": "0" }, { "Namespace": "aws:autoscaling:scheduledaction", "ResourceName": "OvernightShutdown", "OptionName": "MaxSize", "Value": "0" }, { "Namespace": "aws:autoscaling:scheduledaction", "ResourceName": "OvernightShutdown", "OptionName": "DesiredCapacity", "Value": "0" }, { "Namespace": "aws:autoscaling:scheduledaction", "ResourceName": "OvernightShutdown", "OptionName": "StartTime", "Value": "2015-11-18T16:50:00Z" }, { "Namespace": "aws:autoscaling:scheduledaction", "ResourceName": "OvernightShutdown", "OptionName": "Recurrence", "Value": "00 21 * * 1-5" }, { "Namespace": "aws:autoscaling:scheduledaction", "ResourceName": "MorningStartup", "OptionName": "MinSize", "Value": "1" }, { "Namespace": "aws:autoscaling:scheduledaction", "ResourceName": "MorningStartup", "OptionName": "MaxSize", "Value": "1" }, { "Namespace": "aws:autoscaling:scheduledaction", "ResourceName": "MorningStartup", "OptionName": "DesiredCapacity", "Value": "1" }, { "Namespace": "aws:autoscaling:scheduledaction", "ResourceName": "MorningStartup", "OptionName": "StartTime", "Value": "2015-11-19T05:00:00Z" }, { "Namespace": "aws:autoscaling:scheduledaction", "ResourceName": "MorningStartup", "OptionName": "Recurrence", "Value": "00 07 * * 1-5" } ] }

基本上这是副本&根据我的需要粘贴并稍作调整。我将它放在项目中的.ebxtensions / autoscaling.config文件中并将其部署到EB。

现在服务器应该缩短(" OvernightShutdown")到UTC时间晚上9点0,并且应该在UTC时间上午7点放大(" MorningStartup")。

但是"隔夜关闭"和#34; MorningStartup"他们不应该被触发。

我曾经在文件中输入过一次错字,然后EB告诉我它无法解析它,所以我知道我读取了文件,但显然它不会将配置应用到环境中

有人知道这可能是什么问题?我的配置错了吗? 由于没有太多的例子,文件如何看起来我没有适当的参考,除了EB documentation

2 个答案:

答案 0 :(得分:2)

我也在AWS / EB板上发布了这个问题,他们回答了有关此问题的有用答案:

Link to AWS board

解决方案是使用yaml配置而不是json,因为EB似乎与json-config有问题。但他们根据答案解决了这个问题。

答案 1 :(得分:1)

我认为你可能会受到优先条款的影响:configuration options precedence。这前一天我抓住了我。如果您已通过Web界面手动配置了值,那么您的配置文件将不会替换这些值。

解决这个问题我:

  1. 创建了<?php require_once('mac.php'); while(true){ checkMac(); sleep(10); // this should halt for 10 seconds for every loop } ?> 配置文件,确保它已在环境中部署并准备就绪。
  2. 运行.ebextensions以显示当前配置(这应显示旧配置)
  3. 删除了“冲突”中的配置值
  4. 退出并保存配置
  5. 这会触发环境刷新,就像您在Web界面中更改了它一样。

    或者如@mbaird在评论中所说,0可能不是有效的最小值和最大值。