Azure PowerShell を使用して仮想マシン スケール セットを管理する

注意

このドキュメントで示されている手順の多くは、均一オーケストレーション モードを使用する Virtual Machine Scale Sets に適用されます。 新しいワークロードにはフレキシブル オーケストレーションを使用することをお勧めします。 詳細については、「Azure の仮想マシン スケール セットのオーケストレーション モード」を参照してください。

仮想マシン スケール セットのライフサイクルを通して、1 つ以上の管理タスクを実行することが必要になる場合があります。 さらに、各種ライフサイクルのタスクを自動化するスクリプトを作成するほうが便利な場合もあります。 この記事では、これらのタスクを実行するために使用できる一般的な Azure PowerShell コマンドレットのいくつかについて詳細に説明します。

仮想マシン スケール セットを作成する必要がある場合は、Azure PowerShell でスケール セットを作成できます。

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

スケール セットに関する情報を表示する

スケール セットに関する全体的な情報を表示するには、Get-AzVmss を使用します。 次の例では、myResourceGroup リソース グループ内の myScaleSet という名前のスケール セットに関する情報を取得します。 独自の名前を次のように入力します。

Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

スケール セットの VM を表示する

スケール セット内の VM インスタンスの一覧を表示するには、Get-AzVmssVM を使用します。 次の例では、myScaleSet という名前のスケール セットおよび myResourceGroup リソース グループ内のすべての VM インスタンスを一覧表示します。 これらの名前には独自の値を指定します。

Get-AzVmssVM -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

特定の VM インスタンスに関する追加情報を表示するには、Get-AzVmssVM-InstanceId パラメーターを追加し、表示するインスタンスを指定します。 次の例では、myScaleSet という名前のスケール セットおよび myResourceGroup リソース グループ内の VM インスタンス 0 に関する情報を表示します。 独自の名前を次のように入力します。

Get-AzVmssVM -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

また、1 回の API 呼び出しですべてのインスタンスに対する詳細な instanceView 情報を取得することもできます。これは、大規模なインストールで API が調整されるのを回避するのに役立ちます。

Get-AzVmssVM -InstanceView -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
GET "https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<VMSSName>/virtualMachines?api-version=2019-03-01&%24expand=instanceView"

スケール セットの容量を変更する

前のコマンドでは、スケール セットと VM インスタンスに関する情報を表示しました。 スケール セット内のインスタンスの数を増やすか、または減らすために、その容量を変更できます。 スケール セットは、必要な数の VM を自動的に作成または削除した後、アプリケーション トラフィックを受信するようにそれらの VM を構成します。

最初に、Get-AzVmss を使用してスケール セット オブジェクトを作成し、次に sku.capacity に新しい値を指定します。 容量の変更を適用するには、Update-AzVmss を使用します。 次の例では、myResourceGroup リソース グループ内の myScaleSet5 インスタンスの容量に更新します。 独自の値を次のように指定します。

# Get current scale set
$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

# Set and update the capacity of your scale set
$vmss.sku.capacity = 5
Update-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" -VirtualMachineScaleSet $vmss

スケール セットの容量を更新するには数分かかります。 スケール セットの容量を減らした場合は、最も大きなインスタンス ID を持つ VM が最初に削除されます。

スケール セット内の VM を停止および起動する

スケール セット内の 1 つ以上の VM を停止するには、Stop-AzVmss を使用します。 -InstanceId パラメーターでは、停止する VM を 1 つ以上指定できます。 インスタンス ID を指定しない場合は、スケール セット内のすべての VM が停止されます。 複数の VM を停止するには、各インスタンス ID をコンマで区切ります。

次の例では、myScaleSet という名前のスケール セットおよび myResourceGroup リソース グループ内のインスタンス 0 を停止します。 独自の値を次のように指定します。

Stop-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

既定では、停止された VM は割り当て解除されるため、コンピューティング料金は発生しません。 停止されたときに VM をプロビジョニングされた状態のままにする場合は、前のコマンドに -StayProvisioned パラメーターを追加します。 停止された VM がプロビジョニングされたままになる場合は、通常のコンピューティング料金が発生します。

スケール セット内の VM を起動する

スケール セット内の 1 つ以上の VM を起動するには、Start-AzVmss を使用します。 -InstanceId パラメーターでは、起動する VM を 1 つ以上指定できます。 インスタンス ID を指定しない場合は、スケール セット内のすべての VM が起動されます。 複数の VM を起動するには、各インスタンス ID をコンマで区切ります。

次の例では、myScaleSet という名前のスケール セットおよび myResourceGroup リソース グループ内のインスタンス 0 を起動します。 独自の値を次のように指定します。

Start-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

スケール セット内の VM を再起動する

スケール セット内の 1 つ以上の VM を再起動するには、Restart-AzVmss を使用します。 -InstanceId パラメーターでは、再起動する VM を 1 つ以上指定できます。 インスタンス ID を指定しない場合は、スケール セット内のすべての VM が再起動されます。 複数の VM を再起動するには、各インスタンス ID をコンマで区切ります。

次の例では、myScaleSet という名前のスケール セットおよび myResourceGroup リソース グループ内のインスタンス 0 を再起動します。 独自の値を次のように指定します。

Restart-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

スケール セットから VM を削除する

スケール セット内の 1 つ以上の VM を削除するには、Remove-AzVmss を使用します。 -InstanceId パラメーターでは、削除する VM を 1 つ以上指定できます。 インスタンス ID を指定しない場合は、スケール セット内のすべての VM が削除されます。 複数の VM を削除するには、各インスタンス ID をコンマで区切ります。

次の例では、myScaleSet という名前のスケール セットおよび myResourceGroup リソース グループ内のインスタンス 0 を削除します。 独自の値を次のように指定します。

Remove-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

次のステップ

スケール セットに対する他の一般的なタスクとして、アプリケーションのデプロイVM インスタンスのアップグレードがあります。 また、Azure PowerShell を使用して、自動スケールの規則を構成することもできます。