ECS提供了批量实例创建接口(https://help.aliyun.com/document_detail/63440.html ),可以一次调用创建最多100台实例。批量创建接口可以完成批量实例的创建、启动、IP分配等流程,可以快速完成实例资源的扩容。
在实例的创建过程中(实际后台异步创建),库存和VSwitch中私网IP的可用数量是动态变化的,在创建过程中有可能资源不满足创建需求,导致实例的创建过程失败,实例创建失败后会有两种结果:
1.实例会被自动释放,某些典型的错误,例如库存不足,会触发实例的自动释放,实例释放后会从实例列表中消失,用户很难感知实例的创建失败以及原因。
2.实例会保持创建中状态,并且可以操作实例的释放(包年包月实例要通过工单申请),这种是对自动运维非常不友好的逻辑,实例的生命周期并没有闭环。
实例创建失败事件
实例创建失败事件会对上面两种流程自动化运维,首先会进行实例的自动化释放(实例在这种状态下是被评估为无法创建成功的),开始释放流程后ECS会发出实例创建失败事件,此时实例在实例列表中是可以被查询到的;当实例最终被释放时,实例创建失败事件会变为已执行状态,之后实例在实例列表中无法查询(实例已经释放)。
对于已经发生了“创建失败事件”的实例,可以有两种选择: 一个是不进行任何操作,后续在10分钟内,实例会被自动释放;一个是可以主动进行释放,主动释放后,实例创建失败事件会被修改为已避免状态。之后实例的相关事件都可以在历史事件查询接口进行查询。
事件通知的内容格式
实例创建失败事件的内容包含实例创建失败的时间点、完成时间、实例id等信息,消息体示例如下:
{
"status":"Executing",
"ver":"1.0",
"product":"ECS",
"id":"4AB76E05-B5E2-4A00-A107-B0B6A5091967",
"resourceId":"acs:ecs:cn-hangzhou:16343********0:instance/i-bp********gzahwqfvx",
"level":"CRITICAL",
"instanceName":"",
"ruleName":"test",
"userId":"16343********0",
"name":"Instance:SystemFailure.Delete:Executing",
"eventTime":"20190611T130915.171+0800",
"regionId":"cn-hangzhou",
"content":{
"notBefore":"2019-06-11T05:09:14Z",
"executeStartTime":"2019-06-11T05:09:14Z",
"publishTime":"2019-06-11T05:09:14Z",
"eventId":"e-bp1ivh*********c",
"instanceId":"i-bp1jfp*********x",
"eventType":"SystemFailure.Delete",
"eventStatus":"Executing"
}
}
如何订阅消费
用户可以在云监控控制台事件订阅完成事件的通知,请查看文档《设置事件通知》
用户可以通过对实例创建失败的消息订阅,在发生实例创建失败之后,马上感知到实例创建失败的发生,可以尽快调整实例的创建参数(实例规格、VSwitch)来避免库存不足和私网IP不足发生,提高实例创建的成功率。