AWS弹性Beanstalk中Rails应用自动扩展问题

4
我在AWS Elastic Beanstalk上部署了一个Rails应用程序(Ruby 1.9.3),遇到了两个相关但不同的问题。我已经应用了以下自动扩展配置,我相信这是默认配置:
- 环境类型:负载均衡、自动扩展 - 实例数量:1 - 4 - 基于平均网络输出进行扩展 - 当输出大于6000000时添加实例 - 当输出小于2000000时删除实例
问题#1:我的应用程序流量不大,只需要1个EC2实例(m1.medium)。每周我会收到几封来自AWS的“ElasticBeanstalk Default Scale Down alarm”电子邮件。大多数情况下,我在收到邮件后检查我的应用程序,发现它还是正常的;然而,每个月左右,我在收到邮件后检查我的应用程序,却发现是nginx 404页面。EB终止了我唯一运行应用程序的EC2实例,并生成了一个新的实例。为什么它会从1缩小到0?这在过去的6个月中一直如此一致。是否有其他人也遇到了这个问题?找到了解决方法吗?
问题#2:当发生上述情况时,EB会为我创建一个新的EC2实例。但是,我继续收到nginx 404页面直到我重新部署 - 这是一个手动任务,似乎违背了自动扩展的目的。EB在自动缩放后需要重新部署吗?难道它不能自动将当前/最新版本的应用程序部署到新的EC2实例上吗?
非常感谢任何帮助或建议!

如果一个实例未通过健康检查,则会被移除并替换 - 通知电子邮件是否说明了这一点(应该给出扩展活动的原因)? - Frederick Cheung
警报电子邮件中没有关于健康检查失败的内容。只是...阈值已经超过:1个数据点(337030.5)小于阈值(2000000.0)。 - ajporterfield
嘿@ajporterfield,你有这篇帖子的解决方案吗?我也遇到了同样的问题 :/ - Nelson Patricio Jimenez
1
我的“解决方案”就是将最大/最小实例计数设置为1。虽然这不是什么很好的解决方法,但我的应用程序真的不需要疯狂的自动缩放。当我需要第二个应用服务器时,我只需将它们增加到两个即可。 - ajporterfield
1个回答

0

我曾经遇到过这个问题!问题在于当你只有一个实例时,Remove instance when < 2000000的条件会触发。如果你的实例超过2000000然后再次下降到2000000以下,EB将终止它并启动另一个实例。禁用该警报的自动缩放操作,你的问题就会消失。

关于你的第二个问题 - 你等待新构建的实例变为可用需要多久?我注意到,新实例将在准备好后添加到自动缩放组中,但在EB完成部署应用程序之前。在你的单实例情况下,这尤其糟糕,因为几分钟内没有有效的服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接