インスタンス作成の失敗イベントを特定し、ECS インスタンスの作成成功率を向上させます。
作成の失敗とは
RunInstances API を呼び出してインスタンスを作成すると、Elastic Compute Service (ECS) インスタンスのリソースインベントリと vSwitch の割り当て可能なプライベート IP アドレスは動的に変化します。利用可能なリソースが不足している場合、システムは再試行します。極端なケースでは、インスタンスを作成できず、システムはそのリソースを自動的に回収またはリリースします。その後、Alibaba Cloud は SystemFailure.Delete イベントを送信し、システムは関連するインスタンスリソースをリリースします。インスタンスの料金をすでに支払っている場合、リソースがリリースされた後に返金されます。従量課金インスタンスは、作成中に料金が発生しません。
インスタンスの作成中に SystemFailure.Delete イベントを受信した場合は、次のいずれかの方法で対処してください:
-
失敗したインスタンスリソースが自動的にリリースされるまでお待ちください。ほとんどの場合、リソースは 5 分以内にリリースされます。
-
失敗したインスタンスを手動でリリースしてください。
インスタンス作成失敗イベントの確認
Alibaba Cloud CLI を使用して DescribeInstanceHistoryEvents API を呼び出して、インスタンス作成失敗イベントが発生したかどうかを確認します。
次の例では、Executing または Executed 状態にあるすべての履歴インスタンス作成失敗イベントを照会します。EventPublishTime.Start と EventPublishTime.End を設定すると、特定の期間内のイベントを照会できます。
aliyun ecs DescribeInstanceHistoryEvents --InstanceEventCycleStatus.1 Executing --InstanceEventCycleStatus.2 Executed --EventType SystemFailure.Delete
次の表は、DescribeInstances のインスタンスステータスと DescribeInstanceHistoryEvents のイベントステータスを対応付けたものです。
|
ステータス |
DescribeInstances のステータス |
DescribeInstanceHistoryEvents のステータス |
|
インスタンス作成中。 |
Creating または Starting |
なし |
|
作成失敗、インスタンスは回収待ち。 |
停止済み |
SystemFailure.Delete: Executing |
|
保留中のインスタンスが手動でリリースされる。 |
インスタンスが見つかりません。 |
SystemFailure.Delete: Avoided |
|
失敗したインスタンスが回収される。 |
インスタンスが見つかりません。 |
SystemFailure.Delete: Executed |
インスタンス作成成功率の向上
RunInstances API を呼び出してインスタンスを作成した後、作成の進捗を監視してください。
-
すべてのインスタンスが実行中状態の場合、バッチ作成は成功です。
-
一部のインスタンスが停止済みまたは Creating 状態の場合、DescribeInstanceHistoryEvents API を呼び出して、作成が失敗したかどうかを確認してください。失敗したインスタンスのリソースは 5 分以内にリリースされます。
-
インスタンスの作成に失敗した場合、DescribeAvailableResource API を呼び出して、システムにリソースが不足しているか、vSwitch にプライベート IP アドレスが不足しているかを確認してください。
作成の成功率を向上させるには:
-
インスタンスを作成する前に、ターゲット vSwitch の CIDR ブロック内の ECS リソースの可用性と空きプライベート IP アドレスを照会してください。たとえば、DescribeAvailableResource API を呼び出すことで、ゾーン内のリソースを照会できます。
-
自動プロビジョニングを使用して、より大きなリソースプールからインスタンスを作成してください。詳細については、「概要」をご参照ください。
-
弾力性保証を使用して、プライベートプール内の特定の属性を持つリソースを予約してください。詳細については、「弾力性保証の概要」をご参照ください。