如何自动替换 Elastic Beanstalk 环境中运行不正常的 Amazon EC2 实例?

上次更新时间:2020 年 4 月 24 日

我想要自动替换 AWS Elastic Beanstalk 环境中运行不正常的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。

简短描述

默认情况下,您的 Auto Scaling 组的运行状况检查配置被设置为 EC2 类型,以执行 EC2 实例的状态检查。要自动替换运行不正常的 EC2 实例,您必须使用配置文件将您实例的 Auto Scaling 组的运行状况检查类型从 EC2 更改为 ELB

请记住以下几点:

  • 状态检查仅涵盖 EC2 实例的运行状态,不包括实例上运行的应用程序、服务器或任何 Docker 容器的运行状况。
  • 如果您的应用程序崩溃,负载均衡器将从其目标中删除运行不正常的实例。但是,Auto Scaling 组不会自动替换被负载均衡器标记的运行不正常实例。
  • 通过将 Auto Scaling 组的运行状况检查类型从 EC2 更改为 ELB ,您可以使 Auto Scaling 组在运行状况检查失败时自动替换运行不正常的实例。

注意:有关创建和部署 .ebextensions 的更多信息,请参阅如何使用 .ebextensions 自定义 Elastic Beanstalk 环境?

解决方法

以下步骤仅适用于带有负载均衡器的环境。

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


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?