【发布时间】:2018-01-23 10:18:47
【问题描述】:
我尝试将代码部署到 ElasticBeanstalk 环境。每次我尝试将此分支部署到环境时,EB 都会杀死所有实例、ELB、RDS 等并尝试重建但失败。这会使环境处于不良状态,因为它会删除 RDS,但不会删除安全组或 ENI。当我尝试手动删除安全组时,提示存在依赖对象失败。
我将它追溯到网络接口,但是当我尝试分离它(甚至强制分离)时,我收到一个我没有权限的错误。此 ENI 应该已与 RDS 实例一起删除,但事实并非如此。现在我根本无法摆脱环境,也无法重建它。
我不确定为什么这个应用程序会导致环境在每次部署时尝试在 EC2 实例消失时重新创建所有内容,然后当它们重新加载时,它们会被添加到 ELB,但是 ELB 无法保证健康检查以使它们不断停止服务并且环境处于死状态。如果我能以某种方式查看导致环境与此应用程序崩溃的原因的日志,那就太好了。
让 ElasticBeanstalk 删除包括 RDS 在内的所有实例对于部署来说是不可接受的,因为我们必须经常重新播种,更不用说如果它曾经部署到生产环境中,它会擦除所有生产数据,而我们不能这样做。
有没有办法查看部署期间发生了什么以及为什么会发生这种情况?
【问题讨论】:
-
EB 不应在部署期间终止环境。您是否在 EB 控制台的“事件”选项卡上看到任何异常情况?也许自动缩放规则正在触发和终止您的实例?
-
这是日志,您可以看到在部署过程中发生的一切导致环境失败,因为 ELB 看到新创建的 ec2 实例出于某种奇怪的原因而处于 OutOfService 状态。即使我从头开始重建环境,每次部署都会发生这种情况。 paste.laravel.io/LKLzq 目前,我的环境处于卡住状态,因为我尝试手动终止但它不会。我也无法手动删除 ENI,因为它说我没有权限,因为终止进程已经删除了 RDS 实例
-
这是我在部署失败后尝试重建环境时的日志,新实例已初始化但无法与 ELB 通信paste.laravel.io/KLoRw 最后我无法删除安全组,因为的 ENI,由于 RDS 已被删除,我无法分离 ENI。
-
我的主要目标是删除这个环境,并弄清楚为什么在部署时每次尝试删除 EC2 实例时,创建另一个实例而新实例无法与 ELB 通信。
-
看起来环境终止与部署没有直接关系——部署完成和终止开始之间有 30 秒的间隔。此外,似乎终止是因为运行状况检查失败而开始的。您的健康检查是如何配置的?它是否曾将您的实例状态显示为
Ok?
标签: amazon-web-services amazon-elastic-beanstalk rds