从 AMI 创建 Beanstalk 环境时出现网络问题

从 AMI 创建 Beanstalk 环境时出现网络问题

我正在使用 AWS elastic beanstalk Web 界面创建一个基于现有 AMI 的环境,并在该 AMI 上部署了我们的应用程序。

环境创建后,可通过 ec2 实例的 IP 访问应用程序。但是,环境的运行状况保持为“待处理”状态 15 分钟,然后降级为严重,之后环境日志中出现以下错误:

2017-10-22 15:57:50 UTC+0300 INFO 启动环境:Winfooztest->env-6。但是,启动过程中出现问题。有关详细信息,请参阅事件日志。

2017-10-22 15:57:49 UTC+0300 错误 EC2 实例无法与 AWS Elastic Beanstalk 通信,原因是 VPC 存在配置问题或 EC2 实例发生故障。请检查您的 VPC 配置并尝试再次启动环境。2017-10-22 15:57:49 UTC+0300 错误 名为“awseb-e-ypy7mg2pta->stack”的堆栈已中止操作。当前状态:“CREATE_FAILED”原因:以下资源无法创建 [AWSEBInstanceLaunchWaitCondition]。

2017-10-22 15:56:16 UTC+0300 警告环境健康状态已从待定转为严重。初始化正在进行中(运行 16 分钟)。所有实例均未发送数据。

2017-10-22 15:41:48 UTC+0300 INFO 创建 CloudWatch 警报,名称为:>awseb-e-ypy7mg2pta-stack-AWSEBCloudwatchAlarmHigh-QVXFWC3HZS5S

所以我在这里理解的是实例已创建,但无法与 Elastic beanstalk 通信。与常识相反,为了查明问题所在,我尝试将 VPC 设置尽可能公开。以下是我所做的:

VPC 类型:创建了“具有单个公共子网的 VPC”

IPv4 CIDR 块:10.0.0.0/16

公有子网的 IPv4 CIDR:10.0.0.0/24

可见性:公开

勾选为 VPC 设置公有 IP 地址的选项

安全组 - 入站:所有流量|全部|全部|0.0.0.0/0

安全组 - 出站:所有流量|全部|全部|0.0.0.0/0

环境配置为使用负载均衡器。

没有运气。

我知道我需要进行一些小的网络调整。我绞尽脑汁(以及我的搜索引擎)。我遗漏了什么?你能帮忙吗?

答案1

Elastic Beanstalk 要求您的 AMI 中包含某些脚本。Beanstalk 会在不同的生命周期事件(例如应用程序部署和关闭)期间执行这些脚本。如果没有这些脚本,Beanstalk 就无法与您的实例进行通信。

最好的方法是使用打包程序构建 AMIhttps://www.packer.io使用其中一个预配置模板http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platforms.html

Elastic Beanstalk 使用标准化目录结构来管理钩子,这些钩子是在生命周期事件期间运行的脚本,用于响应管理操作:当您环境中的实例启动时,或者当用户启动部署或使用重启应用程序服务器功能时。

钩子被组织到以下文件夹中:

appdeploy — 脚本在应用程序部署期间运行。Elastic Beanstalk 在启动新实例以及客户端启动新版本部署时执行应用程序部署。configdeploy — 脚本在客户端执行配置更新时运行,该更新会影响实例上的软件配置,例如,通过设置环境属性或启用日志轮换到 Amazon S3。restartappserver — 脚本在客户端执行重新启动应用程序服务器操作时运行。preinit — 脚本在实例引导期间运行。postinit — 脚本在实例引导后运行。

相关内容