本文介紹實例的創建失敗事件以及如何提高您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查詢。
使用彈性供應,通過擴大資源池更靈活地交付實例。更多信息,請參見彈性供應概述。
使用彈性保障,提前以私有池的方式預留屬性相匹配的資源。更多信息,請參見彈性保障概述。