PowerShell を使用して近接配置グループを作成する

VM を単一リージョンに配置すると、インスタンス間の物理的な距離が短縮されます。 また、単一可用性ゾーンに配置した場合も、それらの物理的な位置は近くなります。 ただし、Azure の占有領域が拡大するにつれ、単一可用性ゾーンが複数の物理的なデータ センターにまたがる可能性があるため、ネットワーク待ち時間がアプリケーションに影響を与えることがあります。

各 VM をできるだけ近くに配置して、可能性のある最も短い待ち時間を実現するために、それらを近接通信配置グループ内にデプロイすることができます。

近接通信配置グループは、Azure コンピューティング リソースが互いに物理的に近くに配置されるようにするために使用される論理的なグループ化です。 近接通信配置グループは、短い待ち時間が要件であるワークロードに役立ちます。

  • スタンドアロン VM 間の短い待ち時間。
  • 1 つの可用性セットまたは Virtual Machine Scale Set 内の VM 間の短い待ち時間。
  • スタンドアロン VM、複数の可用性セット内の VM、または複数のスケール セット内の VM の間の短い待ち時間。 1 つの配置グループ内に複数のコンピューティング リソースを配置して多層アプリケーションを構成できます。
  • 異なるハードウェアの種類を使用した複数のアプリケーション層間の短い待ち時間。 たとえば、1 つの近接通信配置グループ内での、可用性セット内の M シリーズを使用したバックエンドとスケール セット内の D シリーズ インスタンス上のフロント エンドの実行。

近接通信配置グループの使用

近接通信配置グループは、Azure のリソースです。 他のリソースに対して使用するためには、あらかじめ作成しておく必要があります。 作成後、仮想マシンや可用性セット、Virtual Machine Scale Sets と組み合わせて使用することができます。 近接通信配置グループは、コンピューティング リソースを作成するときに、近接通信配置グループ ID を設定することで指定します。

既存のリソースを近接通信配置グループに移動することもできます。 近接通信配置グループにリソースを移動するときは、まずアセットを停止 (割り当てを解除) する必要があります。コロケーション制約を満たすために、リージョン内の別のデータ センターに再デプロイされる可能性があるためです。

可用性セットと Virtual Machine Scale Sets の場合は、個々の仮想マシンではなくリソース レベルで近接配置グループを設定する必要があります。

近接通信配置グループは、固定のためのメカニズムではなくコロケーションの制約です。 特定のデータ センターを使用する最初のリソースのデプロイと共に、そのデータ センターに固定されます。 近接通信配置グループを使用するリソースをすべて停止 (割り当て解除) または削除すると、固定は解除されます。 そのため、複数の VM シリーズを含んだ近接通信配置グループを使用するときは、可能な限り、必要なすべてのタイプをテンプレートであらかじめ指定するか、デプロイが成功する可能性が高くなるようなデプロイ シーケンスに従うことが大切です。 デプロイに失敗した場合は、失敗した VM サイズをデプロイする最初のサイズとしてデプロイを再開します。

近接通信配置グループを使用する場合に予期されること

近接通信配置グループは、同じデータ センター内でのコロケーションを提供します。 しかし、近接通信配置グループは追加のデプロイ制約を表すため、割り当てエラーが発生する可能性があります。 近接通信配置グループを使用しているときに、割り当てエラーが発生する可能性があるユース ケースをいくつか以下に示します。

  • 近接通信配置グループ内の最初の仮想マシンを要求すると、自動的にデータ センターが選択されます。 場合によっては、別の仮想マシン SKU (そのデータ センターに存在しない場合) の 2 番目の要求が失敗することがあります。 この場合、OverconstrainedAllocationRequest エラーが返されます。 これを回避するには、SKU をデプロイする順序を変更してみるか、単一の ARM テンプレートを使用して両方のリソースをデプロイします。
  • VM インスタンスを追加および削除する、エラスティック ワークロードの場合、デプロイに近接通信配置グループの制約があると、要求を満たすことができず、AllocationFailure エラーになる可能性があります。
  • 必要に応じて VM を停止 (割り当て解除) して起動することが、エラスティック性を実現するためのもう 1 つの方法です。 VM を停止 (割り当て解除) した後は容量が保持されないため、VM を再度起動すると、AllocationFailure エラーが発生する可能性があります。
  • VM の起動と再デプロイの操作では、正常に構成された近接配置グループが引き続き優先されます。

計画メンテナンスと近接通信配置グループ

Azure データセンターでのハードウェアの使用停止などの計画メンテナンス イベントは、近接通信配置グループにおけるリソースの配置に影響を与える可能性があります。 リソースを別のデータ センターに移動すると、近接通信配置グループに関連付けられているコロケーションと待機時間で予期されている状態が損なわれることがあります。

配置の状態を確認する

近接通信配置グループの配置状態を確認するには、次の手順を実行します。

  • 近接通信配置グループのコロケーションの状態は、ポータル、CLI、および PowerShell を使用して表示できます。

    • PowerShell の場合は、オプションのパラメーター "-ColocationStatus" を含めることにより、Get-AzProximityPlacementGroup コマンドレットを使用してコロケーションの状態を取得できます。

    • CLI の場合は、オプションのパラメーター "--include-colocation-status" を含めることにより、az ppg show を使用してコロケーションの状態を取得できます。

  • 近接通信配置グループごとに、コロケーションの状態プロパティに、グループ化されたリソースの現在の配置状態の概要が示されます。

    • 配置済み:リソースは近接通信配置グループの同じ待機時間のエンベロープ内にあります。

    • 不明: 少なくとも 1 つの VM リソースが割り当て解除されています。 正常に起動すると、状態は [配置済み] に戻ります。

    • 未配置: 少なくとも 1 つの VM リソースが近接通信配置グループに配置されていません。 配置されていない特定のリソースも、メンバーシップ セクションで個別に呼び出されます

  • 可用性セットについては、[可用性セットの概要] ページで個々の VM の配置に関する情報を確認できます。

  • スケール セットの場合、個々のインスタンスの配置に関する情報は、スケールセットの [概要] ページの [インスタンス] タブに表示されます。

リソースを再配置する

近接通信配置グループが Not Aligned の場合は、影響を受けるリソースを停止し、割り当てを解除してから、再起動することができます。 VM が可用性セットまたはスケール セット内にある場合は、再起動する前に、可用性セットまたはスケール セット内のすべての VM を最初に停止して割り当てを解除する必要があります。

デプロイの制約によって割り当てエラーが発生した場合は、最初に、影響を受ける近接通信配置グループ内のすべてのリソース (配置済みのリソースを含む) を停止して割り当てを解除してから、再起動して配置を復元することが必要になる場合があります。

ベスト プラクティス

  • 最も短い待ち時間を実現するには、近接通信配置グループを高速ネットワークと共に使用します。 詳細については、「高速ネットワークを使った Linux 仮想マシンの作成」または「高速ネットワークを使った Windows 仮想マシンの作成」を参照してください。
  • すべての VM サイズを 1 つのテンプレートでデプロイします。 必要な VM SKU とサイズの一部がサポートされていないハードウェアに配置されることを回避するには、すべてのアプリケーション層を 1 つのテンプレートに含めて、すべてが同時にデプロイされるようにします。
  • PowerShell、CLI、または SDK を使用してデプロイのスクリプトを作成している場合は、割り当てエラー OverconstrainedAllocationRequest が表示されることがあります。 この場合は、既存のすべての VM を停止して割り当てを解除し、デプロイ スクリプト内のシーケンスを、失敗した VM SKU/サイズで始まるように変更する必要があります。
  • VM が削除された既存の配置グループを再利用する場合は、その削除が完全に完了するまで待ってから VM を追加してください。
  • 待ち時間が最優先事項である場合は、VM を近接通信配置グループ内に、ソリューション全体を可用性ゾーン内に配置します。 ただし、回復性が最優先事項である場合は、インスタンスを複数の可用性ゾーンにわたって分散させます (1 つの近接通信配置グループがゾーンにまたがることはできません)。

近接通信配置グループの作成

New-AzProximityPlacementGroup コマンドレットを使用し、近接通信配置グループを作成します。

$resourceGroup = "myPPGResourceGroup"
$location = "East US"
$ppgName = "myPPG"
New-AzResourceGroup -Name $resourceGroup -Location $location
$ppg = New-AzProximityPlacementGroup `
   -Location $location `
   -Name $ppgName `
   -ResourceGroupName $resourceGroup `
   -ProximityPlacementGroupType Standard

近接通信配置グループを一覧表示する

Get-AzProximityPlacementGroup コマンドレットを使用し、近接通信配置グループをすべて一覧表示できます。

Get-AzProximityPlacementGroup

近接配置グループにスケール セットを作成する

New-AzVMSS を使用してスケール セットを作成するときに近接通信配置グループ ID を参照する目的で、-ProximityPlacementGroup $ppg.Id を使用し、近接通信配置グループでスケールを作成します。

$scalesetName = "myVM"

New-AzVmss `
  -ResourceGroupName $resourceGroup `
  -Location $location `
  -VMScaleSetName $scalesetName `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -UpgradePolicyMode "Automatic" `
  -ProximityPlacementGroup $ppg.Id

Get-AzProximityPlacementGroup を使用して、近接通信配置グループ内のインスタンスを表示できます。

  Get-AzProximityPlacementGroup `
   -ResourceId $ppg.Id | Format-Table `
   -Wrap `
   -Property VirtualMachineScaleSets

次のステップ

Azure CLI を使用して近接通信配置グループを作成することもできます。