仮想マシン スケール セットを均一オーケストレーションを使用して容量予約グループに関連付ける
適用対象: ✔️ 均一スケール セット
Azure Virtual Machine Scale Sets には、次の 2 つのモードがあります。
- 均一オーケストレーション: このモードの仮想マシン スケール セットでは、仮想マシン (VM) プロファイルまたはテンプレートを使用して目的の容量にスケールアップします。 個々の VM インスタンスを管理またはカスタマイズする機能はいくつかありますが、均一オーケストレーションでは同一の VM インスタンスを使用します。 これらのインスタンスは、仮想マシン スケール セットの VM API を介して公開され、Azure サービスとしてのインフラストラクチャ (IaaS) VM の標準である API コマンドとは互換性がありません。 スケール セットは実際の VM 操作をすべて実行するため、予約は仮想マシン スケール セットに直接関連付けられます。 スケール セットが予約に関連付けられると、それ以降の VM 割り当てはすべて、予約に対して行われます。
- フレキシブル オーケストレーション: このモードでは、個々の仮想マシン スケール セットの VM インスタンスをより柔軟に管理することができます。 スケール セット インターフェイスを使用する代わりに、標準の Azure IaaS VM API を使用できます。 フレキシブル オーケストレーション モードで予約を使用するには、各 VM の Virtual Machine Scale Set プロパティと容量予約プロパティの両方を定義します。
これらのモードの詳細については、Virtual Machine Scale Sets のオーケストレーション モードに関するページを参照してください。
このコンテンツは、均一オーケストレーション モードを対象としています。 フレキシブル オーケストレーション モードについては、仮想マシン スケール セットをフレキシブル オーケストレーションを使用して容量予約グループに関連付ける方法に関する説明を参照してください。
均一オーケストレーションでのスケール セットの制限
- 均一オーケストレーションの仮想マシン スケール セットと容量予約との互換性を確保するには、
singlePlacementGroup
プロパティをFalse
に設定する必要があります。 - 複数ゾーンの均一スケール セットの可用性オプションである静的固定拡散は、容量予約ではサポートされていません。 このオプションでは、5 つの障害ドメインを使用する必要があります。 しかし、予約では、汎用サイズの障害ドメインは 3 つまでしかサポートされません。 推奨されるアプローチは、最大拡散オプションを使用する方法です。このオプションを使用すると、各ゾーン内のできる限り多くの障害ドメインに VM が拡散されます。 必要に応じて、3 つ以下のカスタム障害ドメイン構成を構成します。
容量予約を使用する場合、他にもいくつかの制限があります。 完全な一覧については、容量予約の概要に関するページを参照してください。
新しい仮想マシン スケール セットを容量予約グループに関連付ける
重要
2023 年 11 月以降、PowerShell と Azure CLI を使用して作成された仮想マシン スケール セットは、オーケストレーション モードが指定されていない場合、既定でフレキシブル オーケストレーション モードになります。 この変更の詳細と実行する必要があるアクションについては、「VMSS PowerShell/CLI のお客様向けの重大な変更 - Microsoft コミュニティ ハブ」を参照してください。
新しい均一仮想マシン スケール セットを容量予約グループに関連付けるには、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": {
…
}
}
}
既存の仮想マシン スケール セットを容量予約グループに関連付ける
既存の均一スケール セットに既存の容量予約グループを追加するには、以下の手順を実行します。
- スケール セットを停止し、VM インスタンスの割り当てを解除します。
- 一致する容量予約グループを使うようにスケール セットを更新します。
- スケール セットを開始します。
このプロセスにより、リージョン内の容量予約とスケール セットの配置の互換性を確保します。
アップグレード ポリシーに関する重要な注意事項
- 自動アップグレード - このモードでは、ユーザーが他の操作を行う必要なく、スケール セット VM インスタンスが容量予約グループに自動的に関連付けられます。 スケール セット VM が再割り当てされると、予約容量の消費が開始されます。
- ローリング アップグレード - このモードでは、ユーザーが他の操作を行うことなく、スケール セット VM インスタンスが容量予約グループに関連付けられます。 ただし、バッチ間に任意の一時停止時間が設けられたバッチで更新されます。 スケール セット VM が再割り当てされると、予約容量の消費が開始されます。
- 手動アップグレード - このモードでは、仮想マシン スケール セットが容量予約グループに関連付けられても、スケール セット VM インスタンスに対しては何も起こりません。 最新のスケール セット モデルでアップグレードして、各スケール セット VM を更新する必要があります。
仮想マシン スケール セットの割り当てを解除します。
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroupname}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMScaleSetName}/deallocate?api-version=2021-04-01
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}" } } } }
インスタンス ビューで仮想マシン スケール セットの関連付けを表示する
均一仮想マシン スケール セットが容量予約グループに関連付けられると、それ以降のすべての 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"
}
]
}
]
}
}
}
リージョンと可用性ゾーンに関する考慮事項
仮想マシン スケール セットをリージョンまたは 1 つ以上の可用性ゾーンで作成して、データセンター レベルの障害から保護することができます。 複数ゾーンの仮想マシン スケール セットの詳細については、可用性ゾーンを使用する仮想マシン スケール セットに関するページを参照してください。
重要
関連付けを成功させるには、仮想マシン スケール セットと容量予約グループの場所 (リージョンまたは可用性ゾーン) を一致させる必要があります。 リージョン スケール セットの場合、スケール セットと容量予約グループの間でリージョンを一致させる必要があります。 ゾーン スケール セットの場合、スケール セットと容量予約グループの間でリージョンとゾーンの両方を一致させる必要があります。
スケール セットが複数のゾーンに分散されている場合は常に、含まれている可用性ゾーン全体への均等なデプロイが試みられます。 このように均等にデプロイされるため、容量予約グループの予約済み VM の数量を各ゾーンで常に同じにする必要があります。 均一にデプロイされることが重要である理由の説明として、次の例について考えてみましょう。
この例では、各ゾーンの予約済み数量が異なります。 仮想マシン スケール セットが、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 は、容量予約サービス レベル アグリーメントの対象にならないことです。 詳細については、「容量予約の割り当て超過」を参照してください。