Azure Virtual Desktop 用に Azure Automation と Azure Logic Apps を使用してセッション ホストをスケーリングする

仮想マシン (VM) をスケーリングすると、Azure Virtual Desktop の総デプロイ コストを削減できます。 これは、ピーク時以外の使用時間帯にセッション ホスト VM をシャットダウンして割り当て解除し、ピーク時間帯に再びオンにして再割り当てすることを意味します。

この記事では、Azure Automation アカウントで構築されたスケーリング ツールと、Azure Virtual Desktop 環境でセッション ホスト VM を自動的にスケーリングする Azure Logic Apps について説明します。 スケーリング ツールの使用方法については、Azure Automation と Azure Logic Apps を使用したセッション ホストのスケーリング設定に関する記事を参照してください。

Note

Azure Virtual Desktop のネイティブ自動スケーリング ソリューションは、プールされたおよび個人用のホスト プールで一般提供されており、スケーリング スケジュールに基づいてセッション ホスト VM を自動的にスケールインまたはスケールアウトします。 構成を容易にするために自動スケーリングを使用することをお勧めします。 詳細については、自動スケーリングの計画に関するページを参照してください。

スケーリング ツールのしくみ

スケーリング ツールでは、セッション ホスト VM のコストを最適化したいお客様のために低コストの自動化オプションを提供しています。

スケーリング ツールを使用すると、次の操作を行えます。

  • ピーク時とピーク時以外の営業時間に基づいて、VM の起動と停止をスケジュールします。
  • CPU コアあたりのセッション数に基づいて VM をスケールアウトします。
  • ピーク時以外の時間帯に VM をスケールインして、最低限の数のセッション ホスト VM だけを実行状態のままにします。

スケーリング ツールは、Azure Automation アカウント、PowerShell Runbook、Webhook、ロジック アプリを組み合わせて使用することで機能します。 ツールが実行されると、ロジック アプリによって Webhook が呼び出され、Runbook が起動します。 その後、Runbook によってジョブが作成されます。

ピーク時とピーク時以外の時間は次のように定義されます。

  • ピーク時: 同時ユーザー セッションの "最大数" に達すると見込まれる時間帯。
  • ピーク時以外: 同時ユーザー セッションの "最小数" に達すると見込まれる時間帯。

ピーク時の使用時間帯は、このジョブによって現在のセッション数と現在実行中のセッション ホストの VM 容量が、ホスト プールごとにチェックされます。 この情報を使用して、実行中のセッション ホスト VM が既存のセッションをサポートできるかどうかが、CreateOrUpdateAzLogicApp.ps1 ファイルに定義された SessionThresholdPerCPU パラメーターに基づいて計算されます。 セッション ホスト VM が既存のセッションをサポートできない場合は、このジョブによってホスト プール内の別のセッション ホスト VM が起動されます。

注意

SessionThresholdPerCPU では、VM 上のセッション数は制限されません。 このパラメーターは、接続を負荷分散するために、どのタイミングで新しい VM を起動する必要があるかを決めるだけのものです。 セッションの数を制限するには、「Update-AzWvdHostPool」の手順に従って、MaxSessionLimit パラメーターを適切に構成する必要があります。

ピーク時以外の使用時間中に、MinimumNumberOfRDSH パラメーターに基づいて、シャットダウンすべきセッション ホスト VM の数がジョブによって決定されます。 LimitSecondsToForceLogOffUser パラメーターを 0 以外の正の値に設定した場合、ジョブによってセッション ホスト VM はドレイン モードに設定され、新しいセッションがホストに接続できないようになります。 その後、ジョブによって、現在サインインしているすべてのユーザーは作業内容を保存するよう通知され、構成された時間待機した後、ユーザーは強制的にサインアウトされます。セッション ホスト VM 上のすべてのユーザー セッションがサインアウトされると、ジョブによって VM がシャットダウンされます。 VM がシャットダウンされると、ジョブによってセッション ホストのドレイン モードがリセットされます。

注意

セッション ホスト VM を手動でドレイン モードに設定した場合、セッション ホスト VM はジョブでは管理されません。 セッション ホスト VM が実行中で、ドレイン モードに設定されている場合は、使用不可として扱われます。これにより、ジョブで負荷を処理するために追加の VM が起動されます。 Azure VM を手動でドレイン モードに設定する場合は、事前にタグを付けるようお勧めします。 後で Azure Logic Apps スケジューラを作成するときに、MaintenanceTagName パラメーターを使用してタグに名前を付けることができます。 タグを使用すると、こうした VM をスケーリング ツールが管理する VM と区別することができます。 メンテナンス タグを設定すると、タグを削除するまで、スケーリング ツールでその VM に変更を加えることもできなくなります。

LimitSecondsToForceLogOffUser パラメーターを 0 に設定した場合は、指定されたグループ ポリシー内のセッション構成設定で、ユーザー セッションのサインオフを処理することがジョブによって許可されます。 これらのグループ ポリシーを確認するには、 [コンピューターの構成]>[ポリシー]>[管理用テンプレート]>[Windows コンポーネント]>[リモート デスクトップ サービス]>[リモート デスクトップ セッション ホスト]>[セッションの時間制限] にアクセスしてください。 セッション ホスト VM にアクティブなセッションが存在する場合は、ジョブによってセッション ホスト VM は実行状態のままとなります。 アクティブなセッションが存在しない場合は、ジョブによってセッション ホスト VM はシャットダウンされます。

常に、ジョブではホスト プールの MaxSessionLimit を考慮に入れて、現在のセッション数が最大容量の 90% を超えているかの判断も行われます。 超えている場合、ジョブによって別のセッション ホスト VM が起動されます。

ジョブは、設定された繰り返し間隔に基づいて定期的に実行されます。 Azure Virtual Desktop 環境のサイズに基づいてこの間隔を変更できますが、VM の起動とシャットダウンには時間がかかることがあるため、延期期間を考慮してください。 繰り返し間隔を 15 分に設定することをお勧めします。

ただし、このツールには次の制限事項もあります。

  • このソリューションは、プールされたマルチセッションのセッション ホスト VM にのみ適用されます。
  • このソリューションでは任意のリージョンの VM が管理されますが、Azure Automation アカウントおよび Azure Logic Appsと同じサブスクリプションでのみ使用できます。
  • Runbook 内のジョブの最長実行時間は、3 時間です。 ホスト プール内の VM の起動または停止に時間がかかる場合、ジョブは失敗します。 詳細については、「共有リソース」を参照してください。
  • スケーリング アルゴリズムが適切に機能するためには、少なくとも 1 つの VM またはセッション ホストをオンにする必要があります。
  • スケーリング ツールでは、CPU またはメモリに基づくスケーリングはサポートされていません。
  • スケーリングは、ホスト プール内の既存のホストでのみ機能します。 スケーリング ツールでは、新しいセッション ホストのスケーリングはサポートされていません。

注意

スケーリング ツールにより、現在スケーリングされているホスト プールの負荷分散モードが制御されます。 このツールでは、ピーク時とピーク時以外の両方に対して、幅優先の負荷分散モードが使用されます。

次のステップ