我在 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 实例吗?
非常感谢任何帮助/建议!
最佳答案
我遇到过这个问题!问题是 Remove instance when < 2000000
当您只有一个实例时,条件就会触发。如果您的实例超过 2000000 然后又回落到 2000000 以下,EB 将终止它并启动另一个实例。禁用该警报的自动缩放操作,您的问题就会消失。
关于您的第二个问题 - 您等待新建实例可用多长时间?我注意到,新实例一旦准备就绪,就会被添加到自动缩放组中,但在 EB 完成应用程序部署之前。在您的单实例情况下,这尤其糟糕,因为几分钟内没有有效的服务器。
关于ruby-on-rails - AWS Elastic Beanstalk Rails 应用程序自动缩放问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23622749/