实例创建失败事件

本文介绍实例的创建失败事件以及如何提高您ECS创建成功率。

什么是创建失败

在调用RunInstances创建实例过程中,ECS库存和交换机(vSwitch)中私网IP的数量是动态变化的,当资源数量不足以完成当前实例创建时,系统会尽量重试将实例创建成功。但在极端情况下该实例无法创建成功,会等待系统自动回收(释放)。当阿里云识别到ECS实例创建失败时,立即发送一个实例创建失败事件(SystemFailure.Delete)。实例创建失败事件的处理过程是完全自动的,该系统事件会自动将当前创建失败的实例释放。已经支付完成的订单,在实例释放后会收到相应的退款(按量付费实例在创建期间不会收费)。

在创建实例过程中收到SystemFailure.Delete事件,有以下两种处理方式:

  • 等待系统自动释放创建失败的实例,通常在创建失败5分钟内自动释放。

  • 手动释放实例,此类实例不会创建成功,最终会被释放。

查看创建失败事件

通过阿里云CLI调用DescribeInstanceHistoryEvents查看是否存在实例创建失败事件。

以下示例表示查询历史所有执行中(Executing)和已执行(Executed)的创建失败事件,通过设置EventPublishTime.StartEventPublishTime.End参数可以查看指定时间范围内的事件。

aliyun ecs DescribeInstanceHistoryEvents --InstanceEventCycleStatus.1 Executing --InstanceEventCycleStatus.2 Executed --EventType SystemFailure.Delete

查询实例详细信息接口(DescribeInstances)和查询指定实例系统事件信息接口(DescribeInstanceHistoryEvents)中不同状态的关系如下所示:

状态

实例查询接口实例状态

事件接口中实例状态

实例创建中

创建中或启动中

无事件

实例创建失败待回收

已停止

SystemFailure.Delete事件的Executing状态

待回收实例手动释放

无法查到该实例

SystemFailure.Delete事件的Avoided状态

实例创建失败已回收

无法查到该实例

SystemFailure.Delete事件的Executed状态

提高实例创建成功率

创建实例(RunInstances)后可以监控实例的创建过程:

  • 如果实例都达到运行中状态,则本批实例创建完成。

  • 如果有部分实例处于停止或创建中状态(创建失败实例会在5分钟内被释放),则可以通过调用DescribeInstanceHistoryEvents来确认实例是否创建失败。

  • 如果发生实例创建失败,可以通过DescribeAvailableResource接口来确认是否由于资源不足或交换机(vSwitch)中没有足够的私网IP。

为提高实例创建成功率,建议您:

  • 在创建实例前查询目标地域和可用区下的ECS实例供应情况、虚拟交换机中的私网IP数量,例如调用DescribeAvailableResource查询。

  • 使用弹性供应,通过扩大资源池更灵活地交付实例。更多信息,请参见弹性供应概述

  • 使用弹性保障,提前以私有池的方式预留属性相匹配的资源。更多信息,请参见弹性保障概述