如何在 Elastic Beanstalk 环境中自动替换运行状况不正常的 Amazon EC2 实例?
上次更新日期:2021 年 4 月 22 日
我想要自动替换 AWS Elastic Beanstalk 环境中运行不正常的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
简短描述
默认情况下,您的 Auto Scaling 组的运行状况检查配置被设置为 EC2 类型,以执行 EC2 实例的状态检查。您必须使用配置文件来自动替换运行状况不正常的 EC2 实例。配置文件会将实例的 Auto Scaling 组的运行状况检查类型从 EC2 更改为 ELB。
请记住以下几点:
- 状态检查仅涵盖 EC2 实例的运行状态,不包括实例上运行的应用程序、服务器或任何 Docker 容器的运行状况。
- 如果您的应用程序崩溃,负载均衡器将从其目标中删除运行不正常的实例。但是,Auto Scaling 组不会自动替换被负载均衡器标记的运行不正常实例。
- 通过将运行状况检查类型从 EC2 更改为 ELB,您可以使 Auto Scaling 组自动替换运行状况不正常的实例。运行状况检查失败时,将会替换运行状况不正常的实例。
注意:有关创建和部署 .ebextensions 的更多信息,请参阅如何使用 .ebextensions 自定义 Elastic Beanstalk 环境?
解决方法
以下步骤仅适用于带有负载均衡器的环境。
使用配置文件将实例的 Auto Scaling 组的运行状况检查类型更改为 ELB
1. 在源服务包的根目录中创建一个名为 .ebextensions 的文件夹。
2. 创建一个基于资源的 .ebextension,名为 .config 文件。例如:
Example .ebextensions/autoscaling.config
===============================================
Resources:
AWSEBAutoScalingGroup:
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
HealthCheckType: ELB
HealthCheckGracePeriod: 300
===============================================
注意:HealthCheckGracePeriod 指的是 Amazon EC2 Auto Scaling 在检查开始投入使用的 EC2 实例的运行状况之前等待的时间。
3. 为更新后的应用程序源捆绑包创建一个 zip 文件,然后部署您的应用程序。
注意:您也可以使用 eb deploy 部署您的应用程序。
确认 Auto Scaling 组的运行状况检查类型设置为 ELB
1. 打开 Amazon EC2 控制台。
2. 在导航窗格中,选择 Auto Scaling 组。
3. 对于筛选条件,输入 Auto Scaling 组的环境 ID,然后从结果列表中选择 Auto Scaling 组。
4. 在 Auto Scaling 组的详细信息选项卡上,确认运行状况检查类型被设置为 ELB。