AWS EC2 Fleet 最新特性:一个请求管理数千个实例

  • Steef-Jan Wiggers
  • 无明

2018 年 5 月 17 日

话题:AWSDevOps语言 & 开发

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

亚马逊宣布了EC2 Fleet的一项新功能,可通过使用单一 API 为用户创建机群,创建的机群由 EC2 On-Demand、Reserved 和 Spot 实例组成。此外,用户可以指定他们需要的容量和可感知实例的 VM,AWS 负责启动、管理、监控和扩展他们需要的实例,而无需编写任何脚手架代码。

有了 EC2 Fleet,AWS 可以根据用户来启动某些实例以满足特定需求(On-Demand 实例、Reserved 实例和 Spot 实例的混合)。用户可以定义单独的 Om-Demand 和 Spot 容量,确定最适合其应用程序的实例类型,以及 AWS EC2 应如何分配每个实例模型。

过去,用户可以通过单个请求创建数千个 Spot 实例,因为 AWS 为他们提供了一个可用于启动和管理整个 Spot 实例机群的 API。现在,他们可以创建一个具有各种 EC2 实例的组合,并通过一个请求来启动它们。用户指定了有关虚拟 CPU(vCPU)或应用程序单元的机群容量和能够满足他们需求的 Spot 实例(AWS EC2 中最便宜的虚拟机实例)数量。容量可选的实例、vCPU 和面向应用程序的单元也就是所谓的权重。

通过 EC2 Fleet,用户可以将他们的工作负载推送到他们的实例中,以最低的成本来处理它们。用户通过创建模板来描述他们的机群,模板中包含了 InstanceType、WeightedCapacity 和 TargetCapacitySpecification 等设置,而设置中包含 TotalTargetCapacity、OnDemandTargetCapacity、SpotTargetCapacity 和 DefaultTargetCapacityType 等值。

"LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754339b27161c",
                "Version": "1"
            }
        "Overrides": [
        {
          "InstanceType": "m4.16xlarge",
          "WeightedCapacity": 64,
        },
        {
          "InstanceType": "m5.24xlarge",
          "WeightedCapacity": 96,
        },
      ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2880,
        "OnDemandTargetCapacity": 960,
        "SpotTargetCapacity": 1920,
        "DefaultTargetCapacityType": "Spot"
    }
}

EC2 Fleet 将使用机群描述文件来创建机群,使用指定数量的实例,例如 m5.24xlarge Om-Demand 实例和 m4.16xlarge Spot 实例。用户可以使用 AWS CLI 或 API 调用来执行单个命令,以便触发创建机群。

$ aws ec2 create-fleet --cli-input-json file://home/ec2-user/fl1.json
{
    "FleetId":"fleet-838cf4e5-fded-4f68-acb5-8c47ee1b248a"
}

EC2 Fleet 将使用 Spot 实例的当前价格和 Om-Demand 实例的公共价格,选择最具成本效益的实例类型和可用区域组合。有关定价详情,请参阅Amazon EC2 官方定价说明

在默认模式下,权重被考虑在内,以获得最低的单位成本。此外,如果用户指定的实例具有匹配的 RI 实例,则可以使用折扣。根据 vCPU 的当前价格,EC2 Fleet 将启动适当数量的实例来满足 SpotTargetCapcity。此外,当不再需要 Sopt 实例容量时,用户可以将目标容量更改为新的容量,比如只使用 On-Demand 实例的容量。在这种情况下,就不再需要机群,用户可以使用另一条命令删除和终止实例。

$ aws ec2 delete-fleets --fleet-id fleet-838cf4e5-fded-4f68-acb5-8c47ee1b248a \
  --terminate-instances  

亚马逊计划将 EC2 Fleet 与 EC Auto Scaling Group 整合在一起,允许用户创建一个由多种实例类型组成的单个机群,同时利用 EC2 Auto Scaling 的功能,例如健康检测和生命周期钩子。此外,亚马逊将把这种 EC2 功能带到 Amazon ECS、Amazon EKS 和 AWS Batch 等服务上,该服务建立在 EC2 Auto Scaling 的基础上,并用它来管理机群。目前的 EC2 Fleet 可在所有公共 AWS 区域使用。

查看英文原文AWS EC2 Fleet’s Latest Feature - Manage Thousands of On-Demand and Spot Instances with One Request

AWSDevOps语言 & 开发