Azure 仮想マシン スケール セットでの自動スケーリングの概要

Azure 仮想マシン スケール セットは、アプリケーションを実行する VM インスタンスの数を増減させることができます。 インスタンス数は、次のいくつかの方法で更新できます。

  • スケール セットの容量を手動で増減する
  • 設定されたスケジュールに基づく
  • メトリックのしきい値に基づくルールに従う
  • 予測人工知能によって検出された使用パターンに基づいて自動的に行う

この自動化された柔軟性のある動作により、アプリケーションを監視してパフォーマンスを最適化する管理上の負担を減らすことができます。 この記事では、使用できるパフォーマンス メトリックの概要と、自動スケールで実行できるアクションについて説明します。

注意

自動スケーリングを使用するには、追加するインスタンスの構成を定義する仮想マシンのスケーリング プロファイルで、スケール セットを定義する必要があります。 仮想マシンのスケーリング セットの詳細を参照してください。

手動スケーリング

sku.capacity プロパティを更新することで、仮想マシン スケール セット内のインスタンス数を手動で増減できます。

Azure portal

  1. 既存の仮想マシン スケール セットに移動します。
  2. [設定] で、[スケーリング] タブを選択します。
  3. まだ選択されていない場合は、[手動スケール] を選択します。
  4. [インスタンス数] を更新します。
  5. [保存] ボタンを押します。

Azure CLI

az vmss scale \
	--new-capacity 5 \
	--name <scale set name> \
	--resource-group <resource group name>

Azure PowerShell

Update-AzVmss `
	-SkuCapacity 5 `
	-ResourceGroupName <resource group name> ` 
	-VMScaleSetName <scale set name>  `

自動スケールの利点

アプリケーションの需要が増加すると、スケール セット内の VM インスタンスに対する負荷が増加します。 この増加した負荷が短期的な需要ではなく持続したものである場合は、スケール セット内の VM インスタンスの数を増減する自動スケール ルールを構成できます。

Note

スケール セットに対して自動インスタンス修復を使用する場合、スケール セット内のインスタンスの最大数は 1000 個にすることができます。 自動インスタンス修復の詳細をご覧ください。

これらの VM インスタンスが作成され、アプリケーションがデプロイされると、スケール セットはロード バランサーを通じてそれらへのトラフィックの分散を開始します。 監視するメトリック (CPU やメモリなど)、指定されたしきい値をアプリケーションの負荷が満たす必要がある期間、およびスケール セットに追加する VM インスタンスの数を制御します。

夜間や週末は、アプリケーションの需要が低下する可能性があります。 この低下した負荷が一定期間持続する場合、スケール セット内の VM インスタンスの数を減らす自動スケール ルールを構成できます。 このスケールイン アクションによって、現在の需要を満たすのに必要な数のインスタンスのみが実行されるようになるため、スケール セットの実行コストが削減されます。

ホストベースのメトリックを使用する

VM インスタンスから使用できるホスト メトリックを組み込む自動スケール ルールを作成できます。 ホスト メトリックを使用すると、追加のエージェントやデータ コレクションをインストールおよび構成することなく、スケール セット内の VM インスタンスのパフォーマンスを視覚化できます。 これらのメトリックを使用する自動スケール ルールは、CPU の使用状況、メモリーに対する需要、またはディスクへのアクセスに応じて、VM インスタンスの数をスケール インまたはスケール アウトできます。

ホストベースのメトリックを使用する自動スケール ルールは、次のツールのいずれかを使用して作成できます。

より詳細なパフォーマンス メトリックを使用する自動スケール ルールを作成するには、VM インスタンスで Azure Diagnostics 拡張機能をインストールして構成するか、App Insights を使用してアプリケーションを構成します。

ホストベースのメトリック、Azure 診断拡張機能におけるゲスト内 VM メトリック、および App Insights を使用する自動スケール ルールは、次の構成設定を使用できます。

メトリックのソース

自動スケール ルールは、次のソースのメトリックを使用できます。

メトリックのソース 使用事例
現在のスケール セット 追加のエージェントをインストールおよび構成する必要がないホストベースのメトリックの場合。
ストレージ アカウント Azure 診断拡張機能が Azure ストレージにパフォーマンス メトリックを書き込み、それを使用して自動スケール ルールがトリガーされます。
Service Bus キュー アプリケーションまたはその他のコンポーネントが Azure Service Bus キューのメッセージを送信し、ルールをトリガーできます。
Application Insights アプリケーションにインストールされた、アプリからメトリックを直接ストリームするインストルメンテーション パッケージ。

自動スケール ルールの条件

自動スケール ルールを作成するときに、次のホストベースのメトリックを使用できます。 Azure 診断拡張機能または App Insights を使用する場合、どのメトリックを監視して自動スケール ルールで使用するかを定義します。

メトリックの名前
CPU 使用率
Network In
Network Out
Disk Read Bytes
Disk Write Bytes
Disk Read Operations/Sec
Disk Write Operations/Sec
未使用の CPU クレジット
使用済みの CPU クレジット

指定のメトリックを監視する自動スケール ルールを作成するとき、そのルールは次のいずれかのメトリック集計アクションを考慮します。

集計の種類
Average
最小値
最大値
合計
Last (最後へ)
Count

自動スケール ルールはその後、次のいずれかの演算子を使用して、メトリックを定義したしきい値と比較します。

演算子
より大きい
以上
より小さい
以下
等しい
等しくない

ルールがトリガーされたときのアクション

自動スケール ルールがトリガーされるとき、スケール セットは次のいずれかの方法で自動的にスケールされます。

スケール操作 使用事例
カウントを増やす量 作成する VM インスタンスの固定数。 VM の数が少ないスケール セットで便利です。
パーセントを増やす量 VM インスタンスのパーセンテージべースの増加量。 固定量の増加ではパフォーマンスの目立った改善が見込まれない大規模なスケール セットに適しています。
増やした後のカウント 目的の最大量に達するために必要な数だけ VM インスタンスを作成します。
カウントを減らす量 削除する VM インスタンスの固定数。 VM の数が少ないスケール セットで便利です。
パーセントを減らす量 VM インスタンスのパーセンテージべースの減少量。 固定量の減少で使用量やコストの目立った減少が見込まれない大規模なスケール セットに適しています。
減らした後のカウント値 目的の最小量に達するために必要な数だけ VM インスタンスを削除します。

Azure Diagnostics 拡張機能におけるゲスト内 VM メトリック

Azure Diagnostics 拡張機能は、VM インスタンス内部で実行されるエージェントです。 エージェントはパフォーマンス メトリックを監視して Azure ストレージに保存します。 これらのパフォーマンス メトリックには、ディスクの AverageReadTime や CPU の PercentIdleTime など、VM のステータスに関するより詳細な情報が含まれます。 CPU の使用状況やメモリ使用量の割合だけでなく、より詳細な VM パフォーマンスの認識に基づいて自動スケール ルールを作成できます。

Azure Diagnostics 拡張機能を使用するには、VM インスタンスで使用する Azure のストレージ アカウントを作成し、Azure Diagnostics エージェントをインストールしてから、特定のパフォーマンス カウンターをそのストレージ アカウントにストリームするように VM を構成します。

詳しくは、Linux VM または Windows VM で Azure Diagnostics 拡張機能を有効にする方法に関する記事をご覧ください。

App Insights におけるアプリケーションレベルのメトリック

Application Insights を使用して、アプリケーションのパフォーマンスをより視覚化できます。 アプリケーションに、アプリを監視して Azure に利用統計情報を送信する、小さなインストルメンテーション パッケージをインストールします。 アプリケーションの応答時間、ページの読み込みパフォーマンス、セッション数などのメトリックを監視できます。 これらのアプリケーション メトリックを使用して、お客様のエクスペリエンスに影響する可能性があるアクションにつながるインサイトに基づき、細かく深いレベルでルールをトリガーするように自動スケール ルールを作成できます。

App Insights について詳しくは、「Application Insights とは何か?」をご覧ください。

スケジュールに基づく自動スケール

スケジュールに基づく自動スケール ルールを作成することもできます。 スケジュールベースのルールでは、決まった時間に VM インスタンスの数を自動的にスケールできます。 パフォーマンスベースのルールは、自動スケール ルールがトリガーされ、新しい VM インスタンスがプロビジョニングされるまでに、パフォーマンスに影響を及ぼす可能性があります。 このような需要を予測できる場合、お客様やアプリケーションの追加需要に合わせて、事前に追加の VM インスタンスをプロビジョニングして備えることができます。

次に示す例は、スケジュールベースの自動スケール ルールを使用するメリットが見込まれるシナリオです。

  • 営業日の開始時、お客様の需要が増えるときに VM インスタンスの数を自動的にスケール アウトします。 営業日の終了時、アプリケーションの利用が減る夜間のリソースのコストを最小限に抑えるために、VM インスタンスの数を自動的にスケール インします。
  • ある部門で月または年度の特定の時期にアプリケーションの使用頻度が高くなる場合、追加需要に対応するために VM インスタンスの数を自動的にスケールします。
  • マーケティング イベント、プロモーション、ホリデー セールなどを開催するときに、お客様の需要を事前に予測して、VM インスタンスの数を自動的にスケールできます。

制限事項

  • 特定のスケール セットに対して最大 20 個の自動スケール ルールを設定できます。

次のステップ

次のツールのいずれかを使用して、ホストベースのメトリックを使用する自動スケール ルール作成できます。

VM インスタンスの管理方法については、「Azure PowerShell を使用して仮想マシン スケール セットを管理する」を参照してください。

自動スケール ルールをトリガーするときにアラートを生成する方法について詳しくは、「Azure Monitor で自動スケール操作を使用して電子メールと webhook アラート通知を送信する」をご覧ください。 Azure Monitor で監査ログを使用して電子メールと webhook アラート通知を送信することもできます。