クイックスタート: Azure CLI を使用して仮想マシン スケール セットを作成する

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

Note

次の記事は、均一仮想マシン スケール セットに関するものです。 新しいワークロードにはフレキシブル仮想マシン スケール セットを使用することをお勧めします。 この新しいオーケストレーション モードの詳細については、フレキシブル仮想マシン スケール セットの概要に関するページを参照してください。

仮想マシン スケール セットを使用すると、自動スケーリングの仮想マシン セットをデプロイおよび管理できます。 スケール セット内の VM の数を手動で拡張したり、CPU などのリソースの使用率、メモリの需要、またはネットワーク トラフィックに基づいて自動的にスケールする規則を定義したりすることができます。 その後、Azure ロード バランサーがトラフィックをスケール セット内の VM インスタンスに分散します。 このクイックスタートでは、Azure CLI を使用して仮想マシン スケール セットを作成し、サンプル アプリケーションをデプロイします。

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

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • この記事では、Azure CLI のバージョン 2.0.29 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

スケール セットを作成する

重要

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

スケール セットを作成する前に、az group create を使ってリソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。

az group create --name myResourceGroup --location eastus

ここでは、az vmss create を使用して仮想マシン スケール セットを作成します。 以下の例では、myScaleSet という名前のスケール セットを作成します。このスケール セットは、変更が適用されると自動的に更新するように設定され、SSH キーが ~/.ssh/id_rsa に存在しない場合は生成します。 これらの SSH キーは、VM インスタンスにログインする必要がある場合に使用されます。 SSH キーの既存のセットを使用するには、代わりに --ssh-key-value パラメーターを使用して、キーの場所を指定します。

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image <SKU image> \
  --upgrade-policy-mode automatic \
  --admin-username azureuser \
  --generate-ssh-keys

すべてのスケール セットのリソースと VM を作成および構成するのに数分かかります。

サンプル アプリケーションをデプロイする

スケール セットをテストするには、基本的な Web アプリケーションをインストールします。 VM インスタンスにアプリケーションをインストールするスクリプトをダウンロードして実行するために、Azure カスタム スクリプト拡張機能が使用されます。 この拡張機能は、デプロイ後の構成、ソフトウェアのインストール、その他の構成や管理タスクに役立ちます。 詳細については、「Windows のカスタム スクリプト拡張機能」を参照してください。

カスタム スクリプト拡張機能を使用して、基本的な NGINX Web サーバーをインストールします。 次のように、az vmss extension set を使用して、NGINX をインストールするカスタム スクリプト拡張機能を適用します。

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh"],"commandToExecute":"./automate_nginx.sh"}'

アプリケーションへのトラフィックを許可する

スケール セットが作成されたとき、Azure ロード バランサーが自動的にデプロイされました。 ロード バランサーは、スケール セット内の VM インスタンスにトラフィックを分散します。 トラフィックがサンプル Web アプリケーションに到達できるようにするには、az network lb rule create を使用してロード バランサー規則を作成します。 次の例では、myLoadBalancerRuleWeb という名前の規則を作成します。

az network lb rule create \
  --resource-group myResourceGroup \
  --name myLoadBalancerRuleWeb \
  --lb-name myScaleSetLB \
  --backend-pool-name myScaleSetLBBEPool \
  --backend-port 80 \
  --frontend-ip-name loadBalancerFrontEnd \
  --frontend-port 80 \
  --protocol tcp

スケール セットのテスト

動作中のスケール セットを表示するには、Web ブラウザーでサンプル Web アプリケーションにアクセスします。 ロード バランサーのパブリック IP アドレスを取得するには、az network public-ip show を使用します。 次の例では、スケール セットの一部として作成された myScaleSetLBPublicIP の IP アドレスを取得します。

az network public-ip show \
  --resource-group myResourceGroup \
  --name myScaleSetLBPublicIP \
  --query '[ipAddress]' \
  --output tsv

ロード バランサーのパブリック IP アドレスを Web ブラウザーに入力します。 ロード バランサーは、次の例に示すように、VM インスタンスのいずれかにトラフィックを配分します。

Default web page in NGINX

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

必要がなくなったら、次のように az group delete を使用して、リソース グループ、スケール セット、およびすべての関連リソースを削除できます。 --no-wait パラメーターは、操作の完了を待たずにプロンプトに制御を戻します。 --yes パラメーターは、追加のプロンプトを表示せずにリソースの削除を確定します。

az group delete --name myResourceGroup --yes --no-wait

次のステップ

このクイック スタートでは、基本的なスケール セットを作成し、カスタム スクリプト拡張機能を使用して基本的な NGINX Web サーバーを VM インスタンスにインストールしました。 さらに学習するには、Azure 仮想マシン スケール セットを作成および管理する方法についてのチュートリアルに進んでください。