仮想マシン スケール セットを均一オーケストレーションを使用して容量予約グループに関連付ける

適用対象: ✔️ 均一スケール セット

Virtual Machine Scale Sets には次の 2 つのモードがあります。

  • 均一オーケストレーション モード: このモードの Virtual Machine Scale Sets では、VM プロファイルまたはテンプレートを使用して目的の容量にスケールアップします。 個々の VM インスタンスを管理またはカスタマイズする機能はいくつかありますが、均一では同一の VM インスタンスを使用します。 これらのインスタンスは、Virtual Machine Scale Sets VM API を介して公開され、標準の Azure IaaS VM API コマンドとの互換性はありません。 スケール セットは実際の VM 操作をすべて実行するため、予約は Virtual Machine Scale Sets に直接関連付けられます。 スケール セットが予約に関連付けられると、それ以降の VM 割り当てはすべて、予約に対して行われます。
  • フレキシブル オーケストレーション モード: このモードでは、Virtual Machine Scale Sets の VM インスタンスで、スケール セット インターフェイスを使用する代わりに標準の Azure IaaS VM API を使用できるため、個々のインスタンスをより柔軟に管理できます。 フレキシブル オーケストレーション モードで予約を使用するには、各仮想マシンの Virtual Machine Scale Sets プロパティと容量予約プロパティの両方を定義します。

これらのモードの詳細については、仮想マシン スケール セットのオーケストレーション モードに関するページを参照してください。

このコンテンツは、均一オーケストレーション モードに適用されます。 フレキシブル オーケストレーション モードについては、Virtual Machine Scale Sets をフレキシブル オーケストレーションを使用して容量予約グループに関連付ける方法に関する説明を参照してください。

均一オーケストレーションでのスケール セットの制限

  • 均一オーケストレーションの仮想マシン スケール セットと容量予約との互換性を確保するには、singlePlacementGroup プロパティを False に設定する必要があります。
  • 複数ゾーンの均一スケール セットの可用性オプションである静的固定拡散は、容量予約ではサポートされていません。 このオプションでは 5 つの障害ドメインを使用する必要がありますが、予約では、汎用サイズに対して最大 3 つの障害ドメインしかサポートされていません。 推奨されるアプローチとして、最大拡散オプションを使用する方法があります。このオプションを使用すると、各ゾーン内の可能な限り多くの FD に VM が拡散されます。 必要に応じて、3 つ以下のカスタム障害ドメイン構成を構成します。

容量予約を使用する場合、他にもいくつかの制限があります。 完全な一覧については、容量予約の概要に関するページを参照してください。

新しい Virtual Machine Scale Set を容量予約グループに関連付ける

重要

2023 年 11 月以降、PowerShell と Azure CLI を使用して作成された VM スケール セットは、オーケストレーション モードが指定されていない場合、既定でフレキシブル オーケストレーション モードになります。 この変更の詳細と実行する必要があるアクションについては、「VMSS PowerShell/CLI のお客様向けの重大な変更 - Microsoft Community Hub」を参照してください

新しい均一 Virtual Machine Scale Sets を容量予約グループに関連付けるには、Microsoft.Compute プロバイダーへの次の PUT 要求を作成します。

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}?api-version=2021-04-01

virtualMachineProfile プロパティに capacityReservationGroup プロパティを追加します。

{ 
    "name": "<VMScaleSetName>", 
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}", 
    "type": "Microsoft.Compute/virtualMachineScaleSets", 
    "location": "eastus", 
    "sku": { 
        "name": "Standard_D2s_v3", 
        "tier": "Standard", 
        "capacity": 3 
}, 
"properties": { 
    "virtualMachineProfile": { 
        "capacityReservation": { 
            "capacityReservationGroup":{ 
                "id":"subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroup/{CapacityReservationGroupName}" 
            } 
         }, 
        "osProfile": { 
            … 
        }, 
        "storageProfile": { 
            … 
        }, 
        "networkProfile": { 
            …,
            "extensionProfile": { 
                … 
            } 
        } 
    } 

既存の Virtual Machine Scale Sets を容量予約グループに関連付ける

既存の均一スケール セットに既存の容量予約グループを追加するには:

  • スケール セットを停止し、VM インスタンスの割り当てを解除します
  • 一致する容量予約グループを使うようにスケール セットを更新します
  • スケール セットを開始します

このプロセスにより、リージョン内の容量予約とスケール セットの配置の互換性を確保します。

アップグレード ポリシーに関する重要な注意事項

  • 自動アップグレード - このモードでは、スケール セット VM インスタンスが容量予約グループに自動的に関連付けられ、ユーザーが他の操作を行う必要はありません。 スケール セット VM が再割り当てされると、予約容量の消費が開始されます。
  • ローリング アップグレード - このモードでは、スケール セット VM インスタンスが容量予約グループに関連付けられ、ユーザーが他の操作を行う必要はありません。 ただし、バッチ間に任意の一時停止時間が設けられたバッチで更新されます。 スケール セット VM が再割り当てされると、予約容量の消費が開始されます。
  • 手動アップグレード - このモードでは、Virtual Machine Scale Sets が容量予約グループに関連付けられている場合、スケール セット VM インスタンスに対しては何も発生しません。 最新のスケール セット モデルでアップグレードして、各スケール セット VM を更新する必要があります。
  1. 仮想マシン スケール セットの割り当てを解除します。

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroupname}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/deallocate?api-version=2021-04-01
    
  2. capacityReservationGroup プロパティをスケール セット モデルに追加します。 Microsoft.Compute プロバイダーへの次の PUT 要求を作成します。

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroupname}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}?api-version=2021-04-01
    

    要求本文に、capacityReservationGroup プロパティを含めます。

    "location": "eastus",
    "properties": {
        "virtualMachineProfile": {
             "capacityReservation": {
                      "capacityReservationGroup": {
                            "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}"
                      }
                }
        }
    }
    

インスタンス ビューで Virtual Machine Scale Sets の関連付けを表示する

均一 Virtual Machine Scale Sets が容量予約グループに関連付けられると、それ以降のすべての VM 割り当ては、容量予約に対して行われます。 Azure により、グループ内で一致する容量予約が自動的に検出され、予約済みスロットが消費されます。

容量予約グループの "インスタンス ビュー" では、virtualMachinesAssociated および virtualMachinesAllocated プロパティの下に新しいスケール セット VM が反映されます。

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?$expand=instanceview&api-version=2021-04-01 
{ 
    "name": "<CapacityReservationGroupName>", 
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}", 
    "type": "Microsoft.Compute/capacityReservationGroups", 
    "location": "eastus" 
}, 
    "properties": { 
        "capacityReservations": [ 
            { 
                "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{CapacityReservationName}" 
            } 
        ], 
        "virtualMachinesAssociated": [ 
            { 
                "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/virtualMachines/{VirtualMachineId}" 
            } 
        ], 
        "instanceView": { 
            "capacityReservations": [ 
                { 
                    "name": "<CapacityReservationName>", 
                    "utilizationInfo": { 
                        "virtualMachinesAllocated": [ 
                            { 
                                "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/virtualMachines/{VirtualMachineId}" 
                            } 
                        ] 
                    },
                    "statuses": [ 
                        { 
                            "code": "ProvisioningState/succeeded", 
                            "level": "Info", 
                            "displayStatus": "Provisioning succeeded", 
                            "time": "2021-05-25T15:12:10.4165243+00:00" 
                        } 
                    ] 
                } 
            ] 
        } 
    } 
} 

リージョンと Availability Zones に関する考慮事項

仮想マシン スケール セットをリージョンまたは 1 つ以上の Availability Zones で作成して、データ センター レベルの障害から保護することができます。 複数ゾーンの Virtual Machine Scale Sets の詳細については、Availability Zones を使用する仮想マシン スケール セットに関するページを参照してください。

重要

関連付けを成功させるには、Virtual Machine Scale Sets と容量予約グループの場所 (リージョンまたは Availability Zones) を一致させる必要があります。 リージョン スケール セットの場合、スケール セットと容量予約グループの間でリージョンを一致させる必要があります。 ゾーン スケール セットの場合、スケール セットと容量予約グループの間でリージョンとゾーンの両方を一致させる必要があります。

スケール セットが複数のゾーンに分散されている場合は常に、含まれている Availability Zones 全体への均等なデプロイが試みられます。 この均等なデプロイのために、容量予約グループの予約済み VM の数量を各ゾーンで常に同じにする必要があります。 これが重要である理由の説明として、次の例について考えてみましょう。

この例では、各ゾーンの予約済み数量が異なります。 Virtual Machine Scale Sets は、75 のインスタンスにスケールアウトされます。 スケール セットはゾーン間で常に均等なデプロイが試みられるため、VM の分布は次のようになります。

ゾーン 予約済み数量 いいえ。 各ゾーンのスケール セット VM の 未使用の予約済み数量 過剰割り当て
1 40 25 15 0
2 20 25 0 5
3 15 25 0 10

この場合、スケール セットでは、ゾーン 1 の 15 個の未使用インスタンスに対して追加コストが発生します。 さらに、このスケールアウトは、容量予約によって保護されていない、ゾーン 2 の 5 個の VM とゾーン 3 の 10 個の VM に依存しています。 各ゾーンで容量インスタンスが 25 個ずつ予約されていれば、75 個のすべての VM が容量予約によって保護され、デプロイによって、未使用インスタンスに対する追加コストが発生することはありません。

予約を過剰割り当てすることができるため、スケール セットは、予約の制限を超えて通常どおりスケーリングを続けることができます。 唯一の違いは、予約された数量を超えて割り当てられた VM は、容量予約 SLA の対象にならないことです。 詳細については、「容量予約の過剰割り当て」を参照してください。

次のステップ