クイックスタート - ARM テンプレートを使用して Linux 仮想マシン スケール セットを作成する

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

Note

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

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

Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイしようとしているものを、デプロイを作成する一連のプログラミング コマンドを記述しなくても記述できます。

ARM テンプレートを使用して、関連するリソースのグループをデプロイできます。 1 つのテンプレートで、Virtual Machine Scale Sets の作成、アプリケーションのインストール、および自動スケール ルールの構成を実行できます。 変数やパラメーターを使用してこのテンプレートを再利用することで、既存のスケール セットを更新したり、追加のスケール セットを作成したりできます。 テンプレートは、Azure portal、Azure CLI、Azure PowerShell からデプロイすることも、継続的インテグレーション/継続的デリバリー (CI/CD) パイプラインから呼び出すこともできます。

環境が前提条件を満たしていて、ARM テンプレートの使用に慣れている場合は、 [Azure へのデプロイ] ボタンを選択します。 Azure portal でテンプレートが開きます。

Button to deploy the Resource Manager template to Azure.

前提条件

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

テンプレートを確認する

このクイックスタートで使用されるテンプレートは Azure クイックスタート テンプレートからのものです。

テンプレートでは、次のリソースが定義されています。

スケール セットを定義する

テンプレートを使用してスケールを作成するには、適切なリソースを定義します。 Virtual Machine Scale Sets のリソースの種類のコア部分は次のとおりです。

プロパティ プロパティの説明 テンプレート値の例
type 作成する Azure リソースの種類 Microsoft.Compute/virtualMachineScaleSets
name スケール セットの名前 myScaleSet
location スケール セットを作成する場所 米国東部
sku.name 各スケール セット インスタンスの VM サイズ Standard_A1
sku.capacity 最初に作成する VM インスタンスの数 2
upgradePolicy.mode 変更が発生した場合の VM インスタンスのアップグレード モード 自動
imageReference VM インスタンスに使用するプラットフォームまたはカスタム イメージ Canonical Ubuntu Server 16.04-LTS
osProfile.computerNamePrefix 各 VM インスタンス名のプレフィックス myvmss
osProfile.adminUsername 各 VM インスタンスのユーザー名 azureuser
osProfile.adminPassword 各 VM インスタンスのパスワード P@ssw0rd!

スケール セット テンプレートをカスタマイズするために、VM サイズや初期容量を変更することができます。 また、別のプラットフォームやカスタム イメージを使用することもできます。

サンプル アプリケーションを追加する

スケール セットをテストするには、基本的な Web アプリケーションをインストールします。 スケール セットをデプロイするとき、VM 拡張機能によって、デプロイ後の構成とオートメーション タスク (アプリのインストールなど) を提供できます。 スクリプトは、Azure ストレージや GitHub からダウンロードできます。また、拡張機能の実行時に Azure Portal に提供することもできます。 拡張機能をスケール セットに適用するには、上記のリソース例に extensionProfile セクションを追加します。 拡張機能プロファイルは、通常、次のプロパティを定義します。

  • 拡張機能の種類
  • 拡張機能の発行元
  • 拡張機能のバージョン
  • 構成またはインストール スクリプトの場所
  • VM インスタンスで実行するコマンド

テンプレートでは、カスタム スクリプト拡張機能を使用して、Bottle、Python Web フレームワーク、および単純な HTTP サーバーをインストールします。

fileUris には 2 つのスクリプト - installserver.shworkserver.pyが定義されます。 これらのファイルが GitHub からダウンロードされた後、commandToExecute によって、アプリをインストールして構成する bash installserver.sh が実行されます。

テンプレートのデプロイ

テンプレートは、次の [Deploy to Azure](Azure へのデプロイ) ボタンを選択することでデプロイできます。 このボタンは、Azure ポータルを開き、完全なテンプレートを読み込み、スケール セットの名前、インスタンス数、管理者の資格情報などのいくつかのパラメーターの入力を求めます。

Button to deploy the Resource Manager template to Azure.

Resource Manager テンプレートは、Azure CLI を使用してデプロイすることもできます。

# Create a resource group
az group create --name myResourceGroup --location EastUS

# Deploy template into resource group
az deployment group create \
    --resource-group myResourceGroup \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/python/vmss-bottle-autoscale/azuredeploy.json

プロンプトに応答して、VM インスタンスのスケール セットの名前、インスタンスの数、および 管理者の資格情報を指定します。 スケール セットとサポート リソースを作成するのに数分かかります。

デプロイの検証

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

az network public-ip list \
    --resource-group myResourceGroup \
    --query [*].ipAddress -o tsv

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

Default web page in NGINX

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

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

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

次のステップ

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