本文介绍实例的创建失败事件以及如何提高您ECS创建成功率。
什么是创建失败
在调用RunInstances创建实例过程中,ECS库存和交换机(vSwitch)中私网IP的数量是动态变化的,当资源数量不足以完成当前实例创建时,系统会尽量重试将实例创建成功。但在极端情况下该实例无法创建成功,会等待系统自动回收(释放)。当阿里云识别到ECS实例创建失败时,立即发送一个实例创建失败事件(SystemFailure.Delete)。实例创建失败事件的处理过程是完全自动的,该系统事件会自动将当前创建失败的实例释放。已经支付完成的订单,在实例释放后会收到相应的退款(按量付费实例在创建期间不会收费)。
在创建实例过程中收到SystemFailure.Delete事件,有以下两种处理方式:
等待系统自动释放创建失败的实例,通常在创建失败5分钟内自动释放。
手动释放实例,此类实例不会创建成功,最终会被释放。
查看创建失败事件
通过阿里云CLI调用DescribeInstanceHistoryEvents查看是否存在实例创建失败事件。
以下示例表示查询历史所有执行中(Executing)和已执行(Executed)的创建失败事件,通过设置EventPublishTime.Start
和EventPublishTime.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查询。
使用弹性供应,通过扩大资源池更灵活地交付实例。更多信息,请参见弹性供应概述。
使用弹性保障,提前以私有池的方式预留属性相匹配的资源。更多信息,请参见弹性保障概述。