チュートリアル: Azure PowerShell を使用した仮想マシン スケール セットの作成および管理

仮想マシン スケール セットを使用すると、仮想マシンのセットをデプロイおよび管理できます。 仮想マシン スケール セットのライフサイクルを通して、1 つ以上の管理タスクを実行することが必要になる場合があります。 このチュートリアルで学習する内容は次のとおりです。

  • リソース グループを作成する
  • 仮想マシン スケール セットの作成
  • スケールアウトとスケールイン
  • VM インスタンスの停止、起動、再起動

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Button to launch Azure Cloud Shell.
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

リソース グループを作成する

Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 仮想マシン スケール セットの前にリソース グループを作成する必要があります。 New-AzResourceGroup コマンドでリソース グループを作成します。 この例では、myResourceGroup という名前のリソース グループが EastUS リージョンに作成されます。

New-AzResourceGroup -ResourceGroupName "myResourceGroup" -Location "EastUS"

このチュートリアルでスケール セットを作成または変更するときにこのリソース グループ名を指定します。

仮想マシン スケール セットの作成

まず、Get-Credential を使用して、VM インスタンスの管理者のユーザー名とパスワードを設定します。

$cred = Get-Credential

次に、New-AzVmss を使用して Virtual Machine Scale Sets を作成します。 個々の VM インスタンスにトラフィックを分散するために、ロード バランサーも作成されます。 ロード バランサーには、TCP ポート 80 上のトラフィックを分散するルールと、TCP ポート 3389 上のリモート デスクトップ トラフィックと TCP ポート 5985 上の PowerShell リモート処理を許可するルールが含まれています。

重要

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

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -Location "EastUS" `
  -Credential $cred

すべてのスケール セット リソースと VM インスタンスを作成して構成するには数分かかります。 個々の VM インスタンスにトラフィックを分散するために、ロード バランサーも作成されます。

スケール セット内の VM インスタンスを表示する

スケール セット内の VM インスタンスの一覧を表示するには、次のように Get-AzVM を使用します。

Get-AzVM -ResourceGroupName "myResourceGroup"

次の出力例には、スケール セット内の 2 つの VM インスタンスが示されています。

ResourceGroupName                Name Location          VmSize  OsType      ProvisioningState 
-----------------                ---- --------          ------  ------       ----------------- 
myResourceGroup   myScaleSet_instance1   eastus Standard_DS1_v2 Windows         Succeeded     
myResourceGroup   myScaleSet_instance2   eastus Standard_DS1_v2 Windows         Succeeded     

特定の VM インスタンスに関する追加情報を表示するには、Get-AzVM を使用し、VM 名を指定します。

Get-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1" 
ResourceGroupName      : myresourcegroup
Id                     : /subscriptions/resourceGroups/myresourcegroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_instance1
VmId                   : d27b5fde-d469-4087-b08f-87d0bd8df786
Name                   : myScaleSet_instance1
Type                   : Microsoft.Compute/virtualMachines
Location               : eastus
Tags                   : {}
HardwareProfile        : {VmSize}
NetworkProfile         : {NetworkInterfaces}
OSProfile              : {ComputerName, AdminUsername, WindowsConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState      : Succeeded
StorageProfile         : {ImageReference, OsDisk, DataDisks}
VirtualMachineScaleSet : {Id}
TimeCreated            : 11/16/2022 11:02:02 PM

特定の VM インスタンス サイズのスケール セットを作成する

チュートリアルの開始時にスケール セットを作成したとき、VM インスタンスに対して既定の VM SKU である Standard_D1_v2 が提供されました。 -VMSize パラメーターを使用して異なる VM インスタンス サイズを指定することで、"Standard_F1" の VM インスタンス サイズを指定できます。

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -VMSize "Standard_F1" `
  -Location "EastUS" `
  -Credential $cred

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

スケール セットを作成したときに、既定で 2 つの VM インスタンスがデプロイされました。 スケール セット内の VM インスタンスの数を増やすか、または減らすために、手動でその容量を変更できます。 スケール セットにより、必要な数の VM インスタンスが作成または削除され、その後、トラフィックを分散するようにロード バランサーが構成されます。

最初に、Get-AzVmss を使用してスケール セット オブジェクトを作成し、次に sku.capacity に新しい値を指定します。 容量の変更を適用するには、Update-AzVmss を使用します。 次の例では、スケール セット内の VM インスタンスの数を 3 に設定します。

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

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

スケール セットの容量を更新するには数分かかります。 スケール セットに存在するインスタンスの数を確認するには、Get-Az を使用します。

Get-AzVm -ResourceGroupName "myResourceGroup" 

次の出力例は、スケール セットの容量が 3 になったことを示しています。

ResourceGroupName                Name Location          VmSize  OsType    ProvisioningState 
-----------------                ---- --------          ------  ------    ----------------- 
myResourceGroup   myScaleSet_instance1   eastus Standard_DS1_v2 Windows       Succeeded     
myResourceGroup   myScaleSet_instance2   eastus Standard_DS1_v2 Windows       Succeeded     
myResourceGroup   myScaleSet_instance3   eastus Standard_DS1_v2 Windows       Succeeded   

スケール セット内の VM インスタンスを停止および割り当て解除する

個々の VM インスタンスを停止するには、Stop-AzVm を 使用し、インスタンス名を指定します。

Stop-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

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

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

スケール セット内のすべての VM インスタンスを起動するには、Start-AzVmss を使用します。

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

スケール セット内の個々の VM インスタンスを起動するには、Start-AzVM を使用し、インスタンス名を指定します。

Start-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

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

スケール セット内のすべての VM を再起動するには、Restart-AzVmss を使用します。

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

個々のインスタンスを再起動するには、[Restart-AzVM] を使用し、インスタンス名を指定します。

Restart-AzVM -ResourceGroupName "myResourceGroup" -name "myScaleSet_instance1"

リソースをクリーンアップする

リソース グループを削除すると、グループに含まれているリソース (VM インスタンス、仮想ネットワーク、ディスクなど) もすべて削除されます。 -Force パラメーターは、追加のプロンプトを表示せずにリソースを削除することを確定します。 -AsJob パラメーターは、操作の完了を待たずにプロンプトに制御を戻します。

Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob

次のステップ

このチュートリアルでは、Azure PowerShell を使用していくつかの基本的なスケール セットの作成および管理タスクを実行する方法について学習しました。

  • リソース グループを作成する
  • スケール セットを作成する
  • 特定の VM サイズを確認して使用する
  • スケール セットを手動でスケーリングする
  • スケール セットの停止、起動、再起動などの一般的なスケール セット管理タスクを実行する

次のチュートリアルに進み、スケール セット インスタンスに接続する方法について学習してください。