Share via


割り当てに失敗する条件とその対応策

このポストは、3 月 19 日に投稿された Allocation Failure and Remediation の翻訳です。

VM の作成、停止 (割り当て解除) した VM の再起動、VM サイズの変更、新しい Web ロール インスタンスや Worker ロール インスタンスの追加などの操作を行うときには、Microsoft Azure によってお客様のサブスクリプションにコンピューティング リソースが割り当てられますが、この処理の際に、Azure サブスクリプションの制限に達していなくてもエラーが返されることがあります。今回の記事では、一般的な割り当てエラーの例とその場合に考えられる対応策についてご紹介します。この内容は、サービスのデプロイメント計画を立てるときにも参考にしていただけます。

Azure データセンターのサーバーは、クラスター単位で分割されています。通常、割り当て要求は複数のクラスターで処理されますが、何らかの制約により、Azure プラットフォームでの割り当てが 1 つのクラスターに限定される場合があります。この記事では、この状況を 1 つのクラスターに「固定されている」と表現することにします。図 1 は、割り当てが複数のクラスターで処理される、通常の割り当て処理を示しています。図 2 は、既存の Cloud Services (CS_1) がホストされている Cluster 2 に、割り当てが固定されている場合を示したものです。

割り当て要求が 1 つのクラスターに固定されている場合、リソース プールが小さくなるため、空きリソースの確保に失敗する可能性が高くなります。それに加えて、要求されているリソースの種類がそのクラスターでサポートされていない場合、空きリソースがあっても要求は失敗します。図 3 は、対象のクラスターに空きリソースがないために割り当てが失敗した例です。図 4 は、空きリソースがあるにもかかわらず、要求された VM サイズが対象のクラスターでサポートされていないために失敗した例です。

次のセクションで、割り当て要求が特定のクラスターに固定される一般的な条件について説明します。割り当てエラーが返された場合は、これらの条件に該当していないかどうかを確認してください。割り当て要求が固定されている場合、その制約を取り除くと複数のクラスターでの処理が可能になり、割り当てがうまくいく可能性が増えます。

一般的に、「要求された VM サイズがサポートされていない」という内容のエラーが返された場合を除いて、対象のクラスターで要求を処理できるだけの空きリソースが確保されれば、いつでも後から再試行できます。要求された VM サイズがサポートされていないケースでは、要求する VM サイズを変更するか、または次のセクションの内容に従って固定される制約を取り除くしかありません。

アフィニティ グループに関する要求失敗のシナリオは、主に 2 つあります。従来、アフィニティ グループは複数の VM/サービス インスタンスを近い場所に配置するために、または Virtual Network (VNET) を作成するために使用されてきました。しかし、リージョン仮想ネットワーク (Regional Virtual Network) が導入されてからは、Virtual Network を作成するときにアフィニティ グループを使用する必要はなくなりました。Azure インフラストラクチャでのネットワーク レイテンシが短縮されたことによって、アフィニティ グループを使用して VM/サービスの近い場所に配置する必要がなくなったためです。これに伴い、アフィニティ グループの推奨事項に関するドキュメントは更新され、補足が追加されています。

図 5 は、(割り当て先が固定されている場合の) 割り当てのシナリオを分類したものです。次のセクションでは、それぞれのシナリオについて詳細に説明します。

割り当てのシナリオ

注 (*): Azure プラットフォームから返された割り当てエラーを基に、対応するシナリオを判断します。各シナリオで示しているエラー メッセージは短縮形で表記しています。詳細なエラー メッセージについては付録を参照してください。

シナリオ: VM サイズを変更する、または既存の Cloud Services に VM またはロール インスタンスを追加する

エラー: Upgrade_VMSizeNotSupported* または GeneralError*

クラスター固定の原因: VM サイズの変更要求、または既存の Cloud Services に VM やロール インスタンスを追加する要求は、既存の Cloud Services をホストしている元のクラスターで処理されることになります。このとき Cloud Services を新規作成することで、Azure プラットフォームは空きリソースのある他のクラスター、または要求された VM サイズがサポートされているクラスターを使用できるようになります。

対応策

Upgrade_VMSizeNotSupported* というエラーが発生した場合は、異なる VM サイズで試してみます。異なる VM サイズを使用することができない場合、別の VIP を使用可能であれば、新しい Cloud Services を作成してそこで新しい VM をホストし、この新しい Cloud Services を既存の VM が実行されているリージョン仮想ネットワークに追加します。既存の Cloud Services でリージョン仮想ネットワークを使用していない場合は、新しい Virtual Network を作成してそこに新しい Cloud Services を参加させ、こちらのページの内容に従って既存の VNET と新しい VNET を接続します。リージョン仮想ネットワークの詳細については、こちらのブログ記事をお読みください。

GeneralError* というエラーが発生した場合は、リソースの種類 (特定の VM サイズなど) は該当するクラスターでサポートされてはいるものの、その時点で十分な空きリソースがなかったことが考えられます。前述の対応策と同様に、Cloud Services の作成によって必要なコンピューティング リソースを追加し (新規の Cloud Services では別の VIP を使用する必要があることにご注意ください)、リージョン仮想ネットワークを使用して Cloud Services を接続します。

シナリオ: 停止 (割り当て解除) した VM を再起動する – 部分的な割り当て解除からの再起動

エラー: GeneralError*

クラスター固定の原因: 部分的な割り当て解除とは、Cloud Services 内のすべてではないが 1 つまたは複数の VM を停止 (割り当て解除) した場合を指します。VM を停止 (割り当て解除) すると、割り当てられていたリソースは解放されます。このため、停止 (割り当て解除) した VM を再起動する際には、新たに割り当てが要求されます。部分的に割り当て解除された Cloud Services 内の VM の再起動は、既存の Cloud Services への VM の追加と同等の処理であり、割り当て要求は既存の Cloud Services をホストする元のクラスターで処理されることになります。このとき Cloud Services を別途新規作成することで、Azure プラットフォームは空きリソースのある他のクラスター、または要求された VM サイズがサポートされているクラスターを使用できるようになります。

対応策

別の VIP を使用可能な場合は、停止 (割り当て解除) した VM を削除し (関連付けられていたディスクはそのまま維持します)、別の Cloud Services で VM を追加し直します。その後、リージョン仮想ネットワークを使用して Cloud Services を接続します。

  1. 既存の Cloud Services でリージョン仮想ネットワークを使用している場合、後は新しい Cloud Services を同一の Virtual Network に追加するだけです。
  2. 既存の Cloud Services でリージョン仮想ネットワークを使用していない場合、新しい Cloud Services に使用する新しい Virtual Network を作成します。その後、こちらのページの内容に従って既存の VET と新しい VNET を接続します。リージョン仮想ネットワークの詳細については、こちらのブログ記事をお読みください。

シナリオ: 停止 (割り当て解除) した VM を再起動する – 全体の割り当て解除からの再起動

エラー: GeneralError*

クラスター固定の原因: 全体の割り当て解除とは、Cloud Services 内のすべての VM を停止 (割り当て解除) した場合を指します。現時点では、これらの VM の再起動での割り当て要求は、Cloud Services をホストする元のクラスターで処理されることになります。このとき Cloud Services を新規作成することで、Azure プラットフォームは空きリソースのある他のクラスター、または要求された VM サイズがサポートされているクラスターを使用できるようになります。

対応策

別の VIP を使用可能な場合は、停止 (割り当て解除) した VM を削除し (関連付けられていたディスクはそのまま維持します)、関連する Cloud Services を削除します (関連付けられたコンピューティング リソースは、VM を停止 (割り当て解除) した際に既に解放されています)。その後、Cloud Services を新規作成して VM を追加し直します。

シナリオ: ステージング/運用環境にデプロイする (PaaS のみ)

エラー: New_General* または New_VMSizeNotSupported*

クラスター固定の原因: ステージング環境および運用環境への Cloud Services のデプロイメントは、同一のクラスターでホストされます。2 つ目のデプロイメントを追加する場合、その割り当て要求は 1 つ目のデプロイメントをホストしているクラスターで処理されることになります。

対応策

可能な場合は 1 つ目のデプロイメントと元の Cloud Services を削除し、Cloud Services をデプロイし直します。この操作により、両方のデプロイメントのリソースに対応できるだけの空きリソースを持つクラスター、または必要な VM サイズをサポートしているクラスターに 1 つ目のデプロイメントを配置できるようになる可能性があります。

シナリオ: アフィニティ グループで VM/サービスを近い場所に配置する

エラー: New_General* または New_VMSizeNotSupported*

クラスター固定の原因: アフィニティ グループに関連付けられているコンピューティング リソースは、すべて 1 つのクラスター内に制限されます。したがって、アフィニティ グループ内での新しいコンピューティング リソースの要求は、既存のリソースをホストするクラスターと同一のクラスターで処理されます。これは、新しいリソースを新しい Cloud Services で作成する場合と既存の Cloud Services で作成する場合のどちらでも該当します。

対応策

アフィニティ グループを使用する必要がなければ、使用をやめます。あるいは、複数のアフィニティ グループのコンピューティング リソースをグループ化するという方法もあります。

シナリオ: アフィニティ グループをベースとする Virtual Network で操作を行う

エラー: New_General* または New_VMSizeNotSupported*

クラスター固定の原因: リージョン仮想ネットワークがリリースされる前は、Virtual Network とアフィニティ グループを関連付ける必要がありました。そのため、アフィニティ グループに配置されたコンピューティング リソースには、前述のシナリオ「アフィニティ グループで VM/サービスを近い場所に配置する」と同じく、コンピューティング リソースが 1 つのクラスターに限定されるという制約が適用されます。

対応策:

アフィニティ グループを使用する必要がない場合は、新しいリージョン仮想ネットワークを作成して、そこに新しいリソースを追加します。その後、こちらのページの内容に従って既存の VNET と新しい VNET を接続します。リージョン仮想ネットワークの詳細については、こちらのブログ記事をお読みください。

または、こちらのページの内容に従ってアフィニティ グループをベースとする Virtual Network をリージョン仮想ネットワークに移行し、必要なリソースを追加し直す方法もあります。

付録

エラー メッセージの詳細

New_VMSizeNotSupported:「デプロイメントの要求に関する制約のため、このデプロイメントに必要な VM サイズ (または VM サイズの合計) をプロビジョニングできません。可能な場合は、Virtual Network が限定されるなどの制約を緩和すること、ホストしているサービスのうち他のデプロイメントが存在しないものにデプロイすること、別のアフィニティ グループにデプロイすること、アフィニティ グループを使用せずにデプロイすること、または別のリージョンにデプロイすることを試みてください。」

New_General:「割り当てに失敗しました。要求に関する制約を満たすことができません。新しいサービスのデプロイメント要求が特定のアフィニティ グループに限定されているか、特定の Virtual Network を対象としているか、またはこのホストしているサービスに既存のデプロイメントが存在しています。このいずれかの状況により、新しいデプロイメントは特定の Azure リソースに限定されます。後から再試行するか、VM サイズを縮小したりロール インスタンス数を減らしたりして再試行してください。あるいは、可能な場合は、前述の制約を取り除くか、または別のリージョンにデプロイすることも検討してください。」

Upgrade_VMSizeNotSupported:「デプロイメントをアップグレードできません。要求された XXX の VM サイズは、既存のデプロイメントがサポートされているリソースでは使用できません。後から再試行するか、VM サイズを縮小したりロール インスタンス数を減らしたりして再試行してください。または、新しいアフィニティ グループを関連付けるかアフィニティ グループを関連付けずに、ホストしている空のサービスでデプロイメントを作成してください。」

GeneralError:「サーバーで内部エラーが発生しました。要求を再試行してください。」または「サービスの割り当てに失敗しました。」