次の方法で共有


容量予約グループの共有 (プレビュー)

適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット ✔️ 均一スケール セット

Important

この機能は現在 プレビュー段階です。 ベータ版、プレビュー版、または一般公開されていない Azure 機能に適用される法的条件については、 プレビュー使用条件 を参照してください。

オンデマンド容量予約グループ (CRG) は、他のサブスクリプションと共有できます。 このオプションを使用すると、一般的な構成のニーズを簡単に管理できます。

  • ディザスター リカバリー用に予約された容量の再利用。 予約容量は、プライマリ リージョンまたはゾーンが使用できなくなった場合に、別のリージョンまたはゾーンで容量保証を取得するための主要な手段です。 予約共有では、サブスクリプションごとのディザスター リカバリー容量の再利用、開発やテストなどの重要度の低いワークロードのホスト、またはジョブ指向のワークロードの実行に使用されるサブスクリプションがサポートされます。 容量の再利用により、合計容量コストを節約し、予約容量からより多くの価値を引き出すことができます。

  • 容量の一元管理。 クォータ要求と期間コミットメントは、多くの場合、コスト管理の一環として中央運用チームによって管理されます。 容量とコスト管理に合わせて、予約容量のニーズをより一元的に評価および管理できるようになりました。

  • セキュリティと容量に関する懸念事項を分離します。 セキュリティ上の理由から、複数のサブスクリプションで実装されたアプリケーションは、容量の共通プールから動作できます。 このパターンは、サービス プロバイダーが自社のエンド カスタマーにサービスを提供する場合に一般的です。

  • 容量保証によるコスト効率の高いスケールアウト。 異なるレートと時間でスケーリングされるアプリケーションは、予約容量の 1 つのプールを共有できます。

容量予約グループを共有する方法

予約容量を共有するには、少なくとも 2 つのサブスクリプションが必要です。

  • プロバイダー サブスクリプション - 容量予約グループとメンバー容量予約を作成してホストするサブスクリプション。
  • コンシューマー サブスクリプション - 予約容量へのアクセスが許可されている別のサブスクリプション。容量予約サービス レベル アグリーメント (SLA) を使用して仮想マシン (VM) をデプロイする機能を取得します。

特定の容量予約グループは、最大 100 個のコンシューマー サブスクリプションと共有できます。 グループ内のすべてのメンバー容量予約には、コンシューマー サブスクリプションからアクセスできます。

容量予約グループ共有関係の構成には、次の 3 つの手順があります。

  1. コンシューマー サブスクリプションで、プロデューサー サブスクリプションのオンデマンド容量予約 (ODCR) 所有者を Microsoft.Compute/capacityReservationGroups/share/action権限で構成します。
  2. プロデューサー サブスクリプションで、コンシューマー サブスクリプション ID を容量予約グループ の共有 リストに追加します。 共有プロファイルにコンシューマー サブスクリプションを追加する方法については、「 容量予約グループ の共有」を参照してください。
  3. プロデューサー サブスクリプションで、コンシューマー サブスクリプションで少なくとも 1 つの VM 所有者を次の権限で構成します。
    • Microsoft.Compute/capacityReservationGroups/read
    • Microsoft.Compute/capacityReservationGroups/deploy
    • Microsoft.Compute/capacityReservationGroups/capacityReservations/read
    • Microsoft.Compute/capacityReservationGroups/capacityReservations/deploy

ODCR 所有者と VM 所有者がプロバイダー サブスクリプションとコンシューマー サブスクリプションの両方で既に所有者または共同作成者の Azure ロールを持っている場合は、共有、読み取り、デプロイのアクセス許可を付与するためにそれ以上のアクションは必要ありません。 Azure ロールを割り当てる方法の詳細については、「ロールの割り当て手順」または「Azure カスタム ロール」を参照してください。

完了すると、コンシューマー サブスクリプションの VM 所有者は共有 CRG を列挙できます。 サブスクリプションの容量予約グループの一覧を表示 し、仮想マシンまたは仮想マシン スケール セットで capacityReservationGroup プロパティを設定して VM をデプロイします。 容量予約グループ (CRG) を変更する機能は、プロデューサー サブスクリプションの ODCR 管理者にのみ残ります。

共有容量予約グループ機能を使用する場合、追加料金は発生しません。 未使用の予約は、予約を所有するサブスクリプションに課金されます。 VM の使用量は、現在と同様に容量予約を使用するサブスクリプションに対して課金されます。 この機能に予約インスタンス (RI) を適用する方法の詳細については、「 共有容量予約グループでの予約インスタンスの使用 」セクションを参照してください。

使用パターン

容量予約グループを共有するプロバイダー サブスクリプションでは、次のことができます。

  • プロバイダー サブスクリプション内の特定の容量予約グループにアクセスするためのコンシューマー サブスクリプション
  • プロバイダー サブスクリプションで作成されたすべての容量予約グループにアクセスするためのコンシューマー サブスクリプション
  • 容量予約グループにアクセスするための特定の管理グループ内のすべてのコンシューマー サブスクリプション

Azure では、1 つのメイン プロバイダー サブスクリプションを使用して、アプリケーション、ワークロード、または使用スコープごとに容量予約グループをホストし、他のサブスクリプション間で共有することを強くお勧めします。 さまざまなサブスクリプションで容量予約グループを作成し、マトリックス方式でクロス共有すると、管理上の課題が生じ、VM のデプロイで混乱が生じます。

容量予約グループを共有するための前提条件

  • プロバイダー サブスクリプションの ODCR 所有者は、CRG を共有できる十分な権限を持っている必要があります
  • コンシューマー サブスクリプションの VM 所有者は、共有 CRG の容量予約 (CR) でデプロイを行うことができるのに十分な権限を持っている必要があります
  • 共有 CRG にデプロイされている VM は、VM SKU、リージョン、ゾーン (該当する場合) と一致している必要があります

容量予約グループの共有に関する制限事項

設計上の制限事項:

  • 共有は、ターゲット コンシューマー サブスクリプションの明示的なリストで機能します。 Azure では、ワイルドカードまたはテナント レベルの共有はサポートされていません。
  • CRG は、最大 100 個のコンシューマー サブスクリプションと共有できます。
  • 共有は、すべてのメンバー容量予約へのアクセスを許可する容量予約グループごとに行われます。 個々の容量予約を共有することはできません。 特定の容量予約を分離するには、複数の容量予約グループを作成し、共有容量を含む容量予約のみを共有します。
  • 既定では、容量予約グループを所有するサブスクリプションの容量予約グループ管理者は、他のサブスクリプションによってデプロイされた VM インスタンスを変更できません。 このような VM アクセスが必要な場合は、共有サブスクリプション上の VM に対するより多くの権限を個別に付与する必要があります。

プレビューの制限事項:

  • Azure portal のサポートは利用できません。API やその他の Azure クライアントを使用できます。
  • 共有容量予約グループを使用した仮想マシン スケール セット VM の再プロビジョニングは、ゾーンの停止中はサポートされていません。
  • 容量予約グループに関する既知の問題があります。サブスクリプションによってリージョン内でCRGが作成されていない場合、Capacity Reservation Groups - List by Subscription ID 呼び出しが、共有CRGを一覧表示する適切な応答を提供しません。 正しい応答を得るには、共有 CRG を列挙するのと同じリージョンで API 呼び出しを行うローカル CRG がサブスクリプションに作成されていることを確認します。 または、提供された Azure Resource Graph クエリを使用して、サブスクリプションと共有されている CRG の一覧を取得します。

容量予約グループを共有する

容量予約グループは、新しく作成された容量予約グループまたは既存の容量予約グループの共有プロファイルにコンシューマー サブスクリプションを追加することで共有されます。 共有されると、共有プロファイルの一部であるサブスクリプションは、共有容量予約グループに VM または仮想マシン スケール セットをデプロイできます。

新しい容量予約グループに共有プロファイルを追加する

共有プロファイルにサブスクリプションを追加して、作成時に容量予約グループを共有します。

作成時に容量予約グループを共有するには、次の PUT 要求を作成します。

PUT https://management.azure.com/subscriptions/{provider-subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/capacityReservationGroups/myCapacityReservationGroup?api-version=2024-03-01 

要求本文に、 sharing profileで容量予約グループを共有するサブスクリプション ID を含めます。

{
    "location": "westus",
    "tags": {
        "department": "finance"
    },
    "zones": [
        "1"
    ],
    "properties": {
        "sharingProfile": {
            "subscriptionIds": [{
                    "id": "/subscriptions/{consumer-subscription-id1}"
                }, {
                    "id": "/subscriptions/{consumer-subscription-id2}"
                }
            ]
        }
    }
}

この例では、米国西部リージョンのゾーン 1 に共有 CRG を作成します。

詳細については、「 容量予約グループ - 作成または更新」を参照してください。

既存の容量予約グループに共有プロファイルを追加する

共有プロファイルを追加し、既存の容量予約グループのサブスクリプションと共有します。

既存の CRG に共有プロファイルを追加するには、次の PUT 要求を作成します。

次の例では、 myCapacityReservationGroup という既存の容量予約グループに共有プロファイルを追加し、3 つのサブスクリプション ID で共有します。

PUT https://management.azure.com/subscriptions/{provider-subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/capacityReservationGroups/myCapacityReservationGroup?api-version=2024-03-01 

要求本文に、 sharing profileで容量予約グループを共有するコンシューマー サブスクリプション ID を含めます。

{
    "location": "westus",
    "tags": {
        "department": "finance"
    },
    "zones": [
        "1"
    ],
    "properties": {
        "sharingProfile": {
            "subscriptionIds": [
                {
                    "id": "/subscriptions/{consumer-subscription-id1}"
                },
                {
                    "id": "/subscriptions/{consumer-subscription-id2}"
                },
                {
                    "id": "/subscriptions/{consumer-subscription-id3}"
                }
            ]
        }
    }
}

詳細については、「 容量予約グループ - 作成または更新」を参照してください。

容量予約グループの共有を停止する

容量予約グループの所有者は、サブスクリプションまたはすべてのサブスクリプションとの容量予約グループの共有をいつでも停止できます。

クロス サブスクリプション ID を持つ容量予約グループの共有解除は、VM または仮想マシン スケール セットが複数のサブスクリプションから引き続き容量予約グループに関連付けられている間に行われます。 関連付けられているリソースは、割り当て解除または再割り当てまで SLA を取得します。

共有解除が行われると、以前に CRG に関連付けられていた VM またはスケール セットは、割り当て解除または再割り当て時に関連付けできなくなります。 CRG から関連付けを削除することで、このエラーを回避します。

サブスクリプションでの容量予約グループの共有解除

共有プロファイルからサブスクリプションと容量予約グループの共有を解除するには、共有プロファイルからサブスクリプションを削除します。

次の例では、容量予約グループがコンシューマー サブスクリプション ID 1、コンシューマー サブスクリプション ID 2、コンシューマー サブスクリプション ID 3 で共有されています。

既存の容量予約グループの共有プロファイルからサブスクリプションを削除するには、次の PUT 要求を作成します。

次の例では、コンシューマー サブスクリプション ID 3 を共有プロファイルから、以前に 3 つのサブスクリプション ID で共有されていた myCapacityReservationGroup という既存の容量予約グループに削除します。

PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/capacityReservationGroups/myCapacityReservationGroup?api-version=2024-03-01

要求本文に、 sharing profileで容量予約グループを共有するサブスクリプション ID を含めます。

{
    "location": "westus",
    "tags": {
        "department": "finance"
    },
    "zones": [
        "1"
    ],
    "properties": {
        "sharingProfile": {
            "subscriptionIds": [
                {
                    "id": "/subscriptions/{consumer-subscription-id1}"
                },
                {
                    "id": "/subscriptions/{consumer-subscription-id2}"
                }
            ]
        }
    }
}

詳細については、「 容量予約グループ - 作成または更新」を参照してください。

すべてのサブスクリプションで容量予約グループの共有を解除する

すべてのコンシューマー サブスクリプションと容量予約グループの共有を解除するには、共有プロファイルからすべてのサブスクリプションを削除します。

既存の容量予約グループの共有プロファイルからすべてのコンシューマー サブスクリプションを削除するには、次の PUT 要求を作成します。

次の例では、共有プロファイルから myCapacityReservationGroup という既存の CRG にすべてのコンシューマー サブスクリプションを削除します。

PUT https://management.azure.com/subscriptions/{provider-subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/capacityReservationGroups/myCapacityReservationGroup?api-version=2024-03-01 

要求本文に、 sharing profileで容量予約グループを共有するサブスクリプション ID を含めます。

{
    "location": "westus",
    "tags": {
        "department": "finance"
    },
    "zones": [
        "1"
    ],
    "properties": {
        "sharingProfile": {
            "subscriptionIds": []
        }
    }
}

詳細については、「 容量予約グループ - 作成または更新」を参照してください。

共有容量予約グループを削除する

削除のガイダンスについては、「 容量予約の変更 」を参照してください。

  • 十分な権限を持つユーザーは、共有容量予約グループを削除できます。
  • Azure では、すべてのメンバー容量予約が削除されたときに、容量予約グループを削除できます。
  • 容量予約に VM が関連付けられていない場合、Azure では容量予約を削除できます。
  • 共有サブスクリプションでの CRG の共有解除は、共有容量予約グループの削除プロセスの一環として行われます。

共有容量予約グループの使用

容量予約グループが正常に共有されると、コンシューマー サブスクリプションの十分な権限を持つユーザーは、共有容量予約グループに VM または仮想マシン スケール セットをデプロイできます。

共有 CRG をデプロイするプロバイダー サブスクリプションは、CRG をデプロイするための独自のクォータを保持する必要があります。 共有予約グループにデプロイするコンシューマー サブスクリプションは、独自のクォータを保持する必要があります。

共有のゾーン容量予約グループによる可用性ゾーンのマッピング

各 Azure サブスクリプションに表示される可用性ゾーンは、物理ゾーンを構成する物理データ センターの基になるグループへの論理マッピングを表します。 可用性ゾーン間でのリソースの効率的な分散を促進するために、各 Azure サブスクリプションはゾーンのランダムな論理マッピングと物理マッピングを取得します。 たとえば、サブスクリプション A (プロバイダー サブスクリプション) とサブスクリプション B (コンシューマー サブスクリプション) は、異なる論理マッピングを持つことができます。

次の例を確認してください。

サブスクリプション A が AZ1 にデプロイされた場合、デプロイは物理ゾーン 1 に進みます。 ただし、サブスクリプション B が AZ1 にデプロイされた場合、デプロイは物理ゾーン 2 に進みます。 サブスクリプション A とサブスクリプション B の物理ゾーンと論理ゾーンのマッピングが異なっていることを示すスクリーンショット。

ここでは、サブスクリプション A によって論理 AZ1 にデプロイされた容量予約を考慮します。 その結果、物理ゾーン 1 に予約された容量があります。
サブスクリプション A が論理ゾーン 1 に容量予約を作成することを示すスクリーンショット。

サブスクリプション B が共有容量予約グループを使用して VM を論理 AZ1 にデプロイした場合、サブスクリプション B AZ1 は物理ゾーン 2 に解決され、物理ゾーン 2 に予約容量がないため、デプロイは失敗します。 サブスクリプション容量の予約とサブスクリプション B VM が 2 つの異なる論理ゾーンに存在し、エラーが発生したことを示すスクリーンショット。

解決策は、サブスクリプション A とサブスクリプション B の論理マッピングと物理マッピングを調整することです。サブスクリプション B は、物理ゾーン 1 の予約容量にアクセスするために AZ2 にデプロイする必要があります。 同じ論理ゾーン内のサブスクリプション A 容量予約とサブスクリプション B VM が成功したことを示すスクリーンショット。

共有容量予約グループをゾーンと共に使用する場合、すべてのサブスクリプションには CRG サブスクリプションの可用性ゾーンの論理ビューがあります。これは、ターゲット サブスクリプションの可用性ゾーンの論理ビューとは異なる可能性があります。 VM またはスケール セットを共有 CRG にデプロイする場合は、ゾーンを再マップする必要があります。 Azure リソースがリージョン内の可用性ゾーン間で効率的に分散されるように、各サブスクリプションには可用性ゾーンの独立した論理ゾーン マッピングがあります。 つまり、論理ゾーンから物理ゾーンへのマッピングは、サブスクリプション間で同じになる場合と異なる場合があります。

サブスクリプションの物理ゾーンと論理ゾーンのマッピングを確認するには、「 サブスクリプション - 場所の一覧表示 - REST API (Azure Resource Management)」を参照してください。 詳細については、「 物理可用性ゾーンと論理可用性ゾーン」を参照してください。

共有容量予約グループでの予約インスタンスの使用

容量予約グループを共有しても、予約インスタンスまたは節約プランのスコープは変更されません。 CRG または VM のいずれかが前払い割引の対象ではないスコープからデプロイされている場合、従量課金制の価格が課金されます。

容量予約グループとコンシューマー サブスクリプションからデプロイされた VM の間で予約インスタンス割引を共有するには、プロバイダー サブスクリプションとコンシューマー サブスクリプションが同じ予約インスタンス スコープを共有する必要があります。 2 つのサブスクリプションが登録または管理グループを共有している場合、対応するスコープに設定された予約インスタンスは自動的に機能します。

共有容量予約グループを使用して単一の仮想マシンを関連付けるまたは作成する

PowerShell、CLI、または REST API を使用して、単一の仮想マシンを共有容量予約グループにデプロイできます。 「 仮想マシンを容量予約グループに関連付ける」を参照してください。

共有容量予約グループから 1 つの仮想マシンを削除する

PowerShell、CLI、または REST API を使用して、単一の仮想マシンを共有容量予約グループから削除できます。 「容量予約グループから仮想マシンの関連付けを削除する」を参照してください。

共有容量予約グループに仮想マシン スケール セットを関連付けるまたは作成する

柔軟で均一なオーケストレーション モードの仮想マシン スケール セットは、PowerShell、CLI、または REST API を使用して、共有容量予約グループにデプロイできます。 詳細については、「 スケール セットの関連付け -フレキシブル 」および「 スケール セットの関連付け - Uniform」を参照してください。

共有容量予約グループから仮想マシン スケール セットを削除する

柔軟で均一なオーケストレーション モードの仮想マシン スケール セットは、PowerShell、CLI、または REST API を使用して、共有容量予約グループから削除できます。 詳細については、「 スケール セットの削除」を参照してください。

共有容量予約グループの表示

容量予約グループが正常に共有されると、予約はすぐに単一の仮想マシンと仮想マシン スケール セットで使用できるようになります。

共有プロファイルから、容量予約グループがどのサブスクリプション ID と共有されているかを表示します。

詳細については、「 容量予約の作成」を参照してください。

GET https://management.azure.com/subscriptions/{provider-subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}?api-version=2023-07-01
{
    "name": "SharedCRG",
    "id": "/subscriptions/{Provider-subscriptionID1}/resourceGroups/{MyRG}/providers/Microsoft.Compute/capacityReservationGroups/SharedCRG",
    "type": "Microsoft.Compute/capacityReservationGroups",
    "location": "eastus2",
    "properties": {
        "capacityReservations": [{
                "id": "/subscriptions/{Provider-subscriptionID1}/resourceGroups/{MyRG}/providers/Microsoft.Compute/capacityReservationGroups/{SharedCRG}/capacityReservations/{CR1}"
            },
        ],
        "sharingProfile": {
            "subscriptionIds": [{
                    "id": "/subscriptions/{consumer-subscriptionID2}"
                }
            ]
        },
        "provisioningState": "Succeeded"
    }
}

詳細については、「 容量予約グループ-GET」を参照してください。

サブスクリプションの容量予約グループの一覧を表示する

特定のサブスクリプションについて、ローカルに作成または他のサブスクリプションによって共有されているすべての容量予約グループの一覧を表示できます。 共有容量予約グループを表示するには、追加のパラメーター resourceIdsonly を渡す必要があります。

容量予約グループ - サブスクリプション ID 別に一覧表示する

既定では、容量予約グループの一覧を取得すると、サブスクリプションが所有するグループのみが返されます。 サブスクリプションに共有されている容量予約グループを追加するには、 resourceIdsOnly の追加パラメーターを sharedwithsubscription に設定する必要があります。

サブスクリプションと共有されているすべての CRG リソースのリソース ID のフェッチを有効にします。

GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/capacityReservationGroups?api-version=2023-09-01&resourceIdsOnly=sharedwithsubscription 

サブスクリプション内で作成され、サブスクリプションと共有されているすべての CRG リソースのリソース ID を取得できるように有効にします。

GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/capacityReservationGroups?api-version=2023-09-01&resourceIdsOnly=All 

サブスクリプションで作成されたすべての CRG リソースのリソース ID のフェッチを有効にします。

GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/capacityReservationGroups?api-version=2023-09-01&resourceIdsOnly=CreatedInSubscription 
{
    "value": [
        {
            "id": "/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroupName1} /providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName1} ",
            "type": "Microsoft.Compute/capacityReservationGroups",
            "location": "EastUS2"
        },
        {
            "id": "/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroupName2} /providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName2} ",
            "type": "Microsoft.Compute/capacityReservationGroups",
            "location": "EastUS2"
        }
    ]
}

詳細については、「 容量予約グループ - サブスクリプション別に一覧表示する」を参照してください。

Azure Resource Graph

Azure Resource Graph を使用して、特定のサブスクリプション内でローカルに作成された容量予約グループと共有されているすべての容量予約グループの一覧を表示します。

CRG の一覧を表示するには、 Azure Resource Graph エクスプローラー に移動して、このクエリを試してください。

サブスクリプション ID 1 内で作成され、サブスクリプション ID 1 と共有されているすべての CRG リソースのリソース ID を取得できるようにします。

resources
|where type == "microsoft.compute/capacityreservationgroups"
|where properties["sharingProfile"] contains "{subscriptionId1}" or subscriptionId == "{subscriptionId1}"
|project name, id

サブスクリプション ID 1 で共有されているすべての CRG リソースのリソース ID のフェッチを有効にします。

resources
|where type == "microsoft.compute/capacityreservationgroups"
|where properties["sharingProfile"] contains "{subscriptionId}"
|project name, id

次のステップ