【ECS】使用弹性供应组API批量创建ECS实例

简介: 在需要大批量创建按量付费实例的场景中,通过API完成创建操作更加高效。其中,使用RunInstances完成该需求较为复杂,本文将推荐您使用交付过程更加方便稳定的CreateAutoProvisioningGroup。


背景信息

在业务需要使用按量付费ECS实例的场景下,RunInstances是使用最频繁的API。RunInstances拥有一次调用能够最多创建100台ECS实例的能力,但是在实际的生产环境中,如果需要超过100台的大批量创建ECS实例场景,直接使用RunInstances会存在一定的技术瓶颈。更多信息,请参见本文RunInstances创建实例时存在的问题章节


说明 如果您已了解RunInstances批量创建实例过程中存在的技术瓶颈,可以跳过该章节。

为了解决大批量创建ECS实例的需求场景,阿里云提供了弹性供应组,您可以通过CreateAutoProvisioningGroup创建弹性供应组,一键式的部署跨计费方式、跨可用区、跨实例规格族的实例集群。相较于RunInstancesCreateAutoProvisioningGroup更适合大批量创建ECS实例的业务场景。两者的功能对比与优势分析,请参见RunInstances与CreateAutoProvisioningGroup功能对比以及弹性供应组的优势

RunInstances与CreateAutoProvisioningGroup功能对比

本章节对比RunInstancesCreateAutoProvisioningGroup两接口的部分功能,使您可以快速了解两者的差异,选择合适的创建实例方式。

对比项 RunInstances CreateAutoProvisioningGroup
单次批量创建实例的数量上限 100台 1000台(vCPU上限为10000)
容量交付方式 实例数量 实例数量、vCPU核数、实例规格的权重等
是否支持多可用区
是否支持多个实例规格
是否支持多种磁盘规格
是否提供了创建实例的策略 是。提供了如下策略:
  • 按量付费实例
  • 成本优化策略:从备选实例规格中选取成本最低的实例规格,创建实例。
  • 优先级策略:按照备选实例规格设置的优先级,依次尝试创建实例。
  • 抢占式实例
  • 成本优化策略:从备选实例规格中选取成本最低的实例规格,创建实例。
  • 可用区均衡分布策略:在备选的可用区之间,数量均匀的创建实例。
  • 容量优化分布策略:根据抢占式实例的库存情况,选择最优的实例规格及可用区进行创建实例。
交付稳定性 受资源库存影响较大 多可用区、多实例规格的配置组合有效降低了资源库存造成的影响
API响应格式 同步返回创建结果 同步返回创建结果


创建实例的方式由RunInstances更换为CreateAutoProvisioningGroup的部分示例场景:

  • 如果您之前使用RunInstances在单可用区、单实例规格的配置下批量创建实例,更换为CreateAutoProvisioningGroup后,您只需配置一组实例规格与可用区的组合,即可实现批量创建实例。
  • 如果您之前使用RunInstances时手动设置了业务部署方案,更换为CreateAutoProvisioningGroup后,将由系统为您提供一键式的多可用区、多实例规格、多磁盘配置的部署能力,并且系统提供了多种创建实例的策略供您选择。例如:您之前手动设置了遍历多个实例规格及可用区的方案进行RunInstances调用,以提高实例创建的成功率。更换为CreateAutoProvisioningGroup后,您只需要通过参数配置多个实例规格及可用区的组合,选择合适的创建策略,系统将自动完成批量创建实例的操作。


注意 弹性供应组的创建策略存在使用限制,单次最大可创建1000台实例,如果指定了实例规格的权重(WeightedCapacity),则单次创建的最大加权容量为10000。


RunInstances创建实例时存在的问题

基于RunInstances功能的限制,您在大批量创建实例时,可能遇到下表所示的问题。

问题 说明 解决方案
批量创建的能力有限 调用一次RunInstances最多可以创建100台ECS实例。 当您需要创建大于100台ECS实例时,需要通过循环或并发的方式多次调用该接口,以完成业务需求。
批量创建的稳定性不足 调用RunInstances只支持设置单可用区、单实例规格。因此您在批量创建ECS实例的过程中,可能因为实例规格的库存不足、停止售卖或使用限制等问题。引发以下情况:
  • 在某一时间段,实例规格的库存不足导致批量创建失败。
  • 在某一时间段,实例规格停止售卖导致无法再创建指定的实例规格。
  • 指定的实例规格只在部分可用区售卖。
  • 指定的实例规格只能搭配指定的磁盘类型。
  • 库存问题是导致批量创建ECS实例失败的主要原因。因此阿里云会推荐您在批量创建ECS实例之前,先调用DescribeAvailableResource查询实例规格与可用区下资源的库存情况,手动确认多个库存充足的可用区与实例规格的组合后,再批量创建ECS实例。通过复杂的创建方式,换来了较高的业务交付稳定性。
    示例场景:当您确认多个库存充足的可用区与实例规格的组合后,您还需要构建合适的创建ECS实例的策略。例如,您可以根据手动确认的多个组合顺序,依次创建100台ECS实例,如果第一个组合的资源库存只支持创建50台ECS实例,那么您需要使用第二个组合尝试创建其余50台ECS实例。
  • 实例规格存在使用限制。您可以通过DescribeAvailableResource查询限制,并自行建立容错方案,避免因使用限制变更带来的影响。

    说明 您也可以根据文档提供的实例规格特点确定相关限制。更多信息,请参见实例规格族
    示例场景:ecs.g6e.large实例规格只支持ESSD云盘类型、cn-beijing-x可用区下不支持选择ESSD云盘类型等。
创建策略过于单一 RunInstances仅支持设置单可用区、单实例规格。如果您的业务需要多可用区部署实现异地容灾、需要按照最低成本创建ECS实例等,则需要您自行构建业务部署方案,以保障实例的成功部署。自行构建的业务部署方案存在以下问题:
  • 开发成本高。自行构建的业务部署方案需要处理一系列的问题。例如,库存不足时如何顺利的创建ECS实例、扩容服务器时如何在获取抢占式实例最低成本的同时保证计算能力等
  • 稳定性与专业性不足。对于阿里云提供的资源,您难以用专业的方式自行构建业务部署方案,并无法对方案进行测试,进而将对生产环境造成一定的风险。
自行解决或联系阿里云提供帮助。


弹性供应组的优势

针对RunInstances批量创建ECS实例存在的问题,阿里云提供了弹性供应组,解决了大批量创建ECS实例的场景下存在的问题。弹性供应组支持一键部署跨计费方式、跨可用区、跨实例规格族的实例集群。您可以通过弹性供应组稳定提供计算力,缓解抢占式实例的回收机制带来的不稳定因素,免去重复手动创建实例的繁琐操作。本章节主要介绍弹性供应组的优势。

优势 说明
批量创建ECS实例的数量上限更高 弹性供应组支持单次创建最多1000台ECS实例。
支持设置多可用区、多实例规格、多种磁盘类型 弹性供应组支持您配置最多10种实例规格或可用区的组合、最多5种磁盘类型的选择,帮助您实现高可用的批量创建ECS实例。

示例场景:

当您通过弹性供应组提供的均衡可用区分布策略创建ECS实例时,可以配置多个可用区和多个实例规格。按照策略的要求,多个可用区下,创建实例的数量应相对平均,但如果其中某个可用区无法完成创建,弹性供应组会尝试将该可用区待创建的实例数量,转移到其他可用区进行创建。

如果您指定了多种磁盘规格,弹性供应组将按照指定顺序作为各磁盘类型的优先级顺序,当某一种磁盘不可用时,自动更换磁盘类型。


说明 当所有磁盘类型都不可用时,系统将会自动更换其它创建方式,不再尝试该种创建方式。

支持多种创建实例的策略 针对按量付费实例和抢占式实例,分别提供了以下创建策略:
  • 按量付费实例
  • 成本优化策略:从备选实例规格中选取成本最低的实例规格,创建实例。
  • 优先级策略:按照备选实例规格设置的优先级,依次尝试创建实例。
  • 抢占式实例
  • 成本优化策略:从备选实例规格中选取成本最低的实例规格,创建实例。
  • 可用区均衡分布策略:在备选的可用区之间,数量均匀的创建实例。
  • 容量优化分布策略:根据抢占式实例的库存情况,选择最优的实例规格及可用区进行创建实例。
可提高抢占式实例的可用性 抢占式实例因其价格优势使用量越来越高,但是其价格的不稳定性与系统回收的特性,造成管理抢占式实例存在一定的难度。您可以通过弹性供应组,实现在低成本的前提下,提高抢占式实例的可用性。具体方式如下:
  • 创建策略选择默认的成本优化策略,每次的扩容策略将按照实例规格价格从低到高的顺序尝试创建。
  • 抢占式实例对应的不同实例规格与可用区的资源库存情况互相隔离。多个实例规格与多个可用区的配置组合,可以有效降低所有组合都无库存的概率。
  • 创建弹性供应组时,配置多种备选的磁盘类型,保证创建实例的过程中,系统能够自动选取合适的磁盘类型。
  • 配置SpotInstancePoolsToUseCount参数,指定抢占式实例在多个最低价格的实例规格及可用区的组合中创建。避免某一种实例规格对应的实例回收,造成计算能力产生雪崩效应。

CreateAutoProvisioningGroup最佳实践

本章节提供CreateAutoProvisioningGroup接口对应的Java代码示例,使您快速了解该接口的使用方式。

  1. 安装ECS Java SDK以及阿里云核心库。具体操作,请参见安装Java SDK
  2. 编写调用CreateAutoProvisioningGroup接口的Java代码。

代码示例如下:

CreateAutoProvisioningGroupRequest request = new CreateAutoProvisioningGroupRequest();
request.setRegionId(regionId);
request.setLaunchConfigurationImageId(RequestHelper.IMAGE_ID);
request.setLaunchConfigurationSecurityGroupId(securityGroupId);
request.setTotalTargetCapacity(totalTargetCapacity);
request.setPayAsYouGoTargetCapacity(payAsYouGoTargetCapacity);
request.setSpotTargetCapacity(spotTargetCapacity);
request.setLaunchConfigurationSystemDiskCategory("cloud_ssd");
request.setLaunchConfigurationSystemDiskSize(40);
request.setAutoProvisioningGroupType("instant");
// 设置抢占式实例的创建策略
request.setSpotAllocationStrategy("lowest-price");
request.setSpotInstancePoolsToUseCount(spotInstancePoolsToUseCount);
// 设置按量付费实例的创建策略
request.setPayAsYouGoAllocationStrategy("prioritized");
request.setMaxSpotPrice(maxSpotPrice);
// 多实例规格,多可用区配置信息,最大支持10种
request.setLaunchTemplateConfigs(launchTemplateConfigs);
request.setClientToken(clientToken);
CreateAutoProvisioningGroupResponse response = client.getAcsResponse(request);

JSON返回值示例如下:

{
    "autoProvisioningGroupId":"apg-****",
    "launchResults":[
        {
            "instanceIds":[
                "i-****"
            ],
            "instanceType":"ecs.c5.large",
            "spotStrategy":"NoSpot",
            "zoneId":"cn-shanghai-b"
        },
       {
            "instanceIds":[],
            "instanceType":"ecs.c5.large",
            "spotStrategy":"NoSpot",
            "zoneId":"cn-shanghai-b",
            "errorCode" : "Invalid.Parameter",
            "errorMsg" : "Specific Parameter 'imageId' is not valid"
        }
    ],
    "requestId":"20DA1E9F-BF7F-4BE7-8204-E4DE58E4FC7B"
}

通过CreateAutoProvisioningGroup创建弹性供应组时,您只需要设置批量创建实例的相关配置项,无需关心创建过程,弹性供应组将以尽力交付的方式,完成创建。



说明 尽力交付的方式是指,当您配置的某些资源组合无法创建实例时,将自动切换到其他可用的资源组合继续进行创建。该方式创建实例需要一定的时间,并且可能导致实际创建结果与创建策略存在一定的偏差。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
弹性计算 监控 负载均衡
|
6天前
|
存储 弹性计算 缓存
阿里云服务器通用型g8i实例性能与使用场景介绍及最新收费标准参考
阿里云ECS通用型g8i服务器采用阿里云全新CIPU架构,可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。ECS通用型g8i实例支持开启或关闭超线程配置,单台g8i实例最高支持100万IOPS。阿里云ECS通用型g8i实例CPU采用Intel®Xeon®Emerald Rapids或者Intel®Xeon®Sapphire Rapids,主频不低于2.7 GHz,全核睿频3.2GHz。本文为大家介绍通用型g8i实例性能与使用场景介绍及最新收费标准,以供参考。
|
7天前
|
弹性计算 缓存 数据挖掘
阿里云服务器经济型e和通用算力型u1实例区别及选择参考
在阿里云目前的活动中,经济型e和通用算力型u1实例是两个比较热门的云服务器实例规格,收费标准相对其他计算型、通用型和内存型实例来说要更低一些,经济型e实例ECS云服务器2核2G3M带宽新购和续费都是99元1年,通用算力型u1实例2核4G5M带宽新购和续费都只要199元1年、4核8G云服务器955.58元1年。有的新手用户并不清楚他们之间的区别及如何选择,本文将介绍阿里云服务器中的经济型e实例和通用算力型u1实例的特点、区别以及新手选择参考。
|
15天前
|
存储 缓存 安全
阿里云服务器内存型r7、r8a、r8y、r8i实例区别及选择参考
随着阿里云2024年金秋云创季的开始,目前在阿里云的活动中,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y和内存型r8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:8,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍内存型r7、r8a、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
18天前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器c7/c8a/c8y/c8i/g7/g8a/g8y/g8i/r7/r8a/r8y/r8i实例区别及选择参考
在阿里云目前的活动中,除了特价的轻量应用服务器和经济型e及通用算力型u1实例之外,属于计算型实例的实例有计算型c7/c8a/c8y/c8i,属于通用型实例的有通用型g7/g8a/g8y/g8i,属于内存型实例的有内存型r7/r8a/r8y/r8i。本文将详细介绍阿里云服务器中的c7、c8a、c8y、c8i、g7、g8a、g8y、g8i、r7、r8a、r8y、r8i等实例规格的性能、适用场景及选择参考,帮助用户更好地选择合适的云服务器实例。
|
21天前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c7、c8a、c8y、c8i实例性能、适用场景区别及选择参考
随着阿里云2024年金秋云创季的开始,目前在阿里云的活动中,属于计算型实例规格的云服务器有计算型c7、计算型c8a、计算型c8y和计算型c8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:2,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍计算型c7、c8a、c8y、c8i实例的性能、适用场景的区别以及选择参考。
|
20天前
|
存储 人工智能 安全
阿里云服务器通用型g7、g8a、g8y、g8i实例区别及选择指南
目前在阿里云的活动中,属于通用型实例规格的云服务器有通用型g7、通用型g8a、通用型g8y和通用型g8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:4,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍通用型g7、g8a、g8y、g8i实例的性能、适用场景的区别以及选择参考。
|
27天前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c7、计算型c8y、计算型c8i实例性能对比与选择参考
目前阿里云在售的云服务器中,主要包含了第6代、第7代、第8代实例规格的云服务器产品,从类别上来说,又分为计算型(c系列)、通用型(g系列)、内存型(r/re系列)、通用算力型(U实例)、大数据型(d系列)、本地SSD型(i系列)、高主频型(hf系列)等不同种类的云服务器实例规格,而在阿里云目前的活动中,计算型(c系列)主要计算型c7、计算型c8y和计算型c8i实例可选,有的新手用户并不清楚这三个计算型实例之间的差别,本文对这三个计算型实例的实例规格、CPU(核)、内存(G)、计算、存储、内存等方面为大家做个对比,让大家了解一下他们之间的不同,以供参考选择。
|
27天前
|
存储 安全 网络协议
阿里云服务器通用型g7、通用型g8y、通用型g8i实例性能和适用场景对比与选择参考
目前阿里云在售的云服务器中,主要包含了第6代、第7代、第8代实例规格的云服务器产品,在选择云服务器实例规格时,对于需要平衡计算、存储和网络性能的应用场景来说,通用型g7、通用型g8y和通用型g8i实例是许多用户的热门选择。为了帮助大家更好地了解这三款实例的区别,并为选择提供参考,本文将详细对比它们的实例规格、CPU、内存、计算、存储、网络等方面的性能,并附上活动价格对比。让大家了解一下他们之间的不同,以供参考选择。
|
1月前
|
机器学习/深度学习 弹性计算 缓存
阿里云服务器经济型e实例与通用算力型u1实例对比分析与选择指南
在阿里云服务器的实例规格中,经济型e实例和通用算力型u1实例是很多个人和普通企业级用户常见的选择,经济型e实例与通用算力型u1实例的主要区别在于性能、应用场景及价格策略。本文将详细对比这两种实例的性能、应用场景及价格策略,以供参考。

热门文章

最新文章

下一篇
无影云桌面