Azure Virtual Desktop(AVD)のオートスケーリング機能を試してみる!

皆さん、こんにちは!!

少し前の投稿で、Azure Virtual Machineの休止機能(ハイバーネーション)を試してみたましたが、AVDのオートスケーリング機能にも、仮想マシンの休止ステータスが実装されました。どのような動作になるのか気になったため、検証してみたいと思います。

※仮想マシンの休止(ハイバーネート)機能の投稿はこちらから:Azure Virtual Machineのハイバネーション機能を試してみる

それでは、やっていきましょう!!

 

 

1. 検証の前提

今回は、休止機能を利用するため、マルチセッション用ではなく、個人向けホストプール(専有型)のAVDセッションホストを作成します。マルチセッション用にオートスケーリングプランを作成した場合、休止機能は利用できないので注意してください。

そして、今回作成するセッションホストにStart VM on Connectを適用したいと思います。

1-1. そもそもオートスケーリング機能とは

オートスケーリング機能とは、ホスト プール内のセッション ホスト仮想マシン (VM) をスケジュールに応じてスケールアップまたはスケールダウンして、デプロイコストを最適化できます。仮想マシンの自動シャットダウン機能と同じで、電源管理として利用できる機能の1つということを覚えていただければいいかなと思います。

2. ホストプールの作成

まずは、Azure Virtual Desktopのホストプール + 仮想マシンを作成します。大きなポイントとしては、ホストプールは個人用、仮想マシンのVMは32GB以上である必要があります。

2-1. ホストプールの作成

まずは、Azure Portalにアクセスし、検索枠からAzure Virtual Desktopを選択します。

個人用のホストプールを作成します。ユーザの割り当ては、自動、直接、どちらでも構いません。直接を選択した場合は、忘れずにユーザを割り当ててください。

以下が作成した仮想マシンの情報になります。サイズはStandard D8ads v5は、メモリが32GB以上、台数としては3台作成しています。

ホストプールの作成が完了しました。

忘れずに、ホストプールのアプリケーショングループにユーザを割り当ててください。

3. Start VM on Connectの有効化

続いて、オートケーリングプランを作成する前に、ホストプールのセッションホスト(VM)に対して、Start VM on Connectを有効化します。

事前準備のためのロールベースアクセス制御(RBAC)の設定から、実施していきたいと思います。

3-1. Desktop Virtualization Power On/Off 共同作成者ロールの付与

サブスクリプションをスコープにして、アプリであるWindows Virtual Desktop/Azure Virtual Desktopに対して、ロールを付与する必要があります。

まずは、サブスクリプションを選択し、「アクセス制御(IAM)」に進みます。

アクセス制御の画面に遷移しますので、ページ上にある「追加」→「ロールの割り当ての追加」を押下します。

ページ上部にある検索欄から、「Desktop Virtualization Power On/Off」と検索すると表示されますので、該当ロールを選択し、「次へ」を押下します。

 

「レビューと割り当て」で、ロールを付与しましょう。

ロールが付与されたことが確認できました。

3-2. Start VM on Connectの有効化

それでは、Start VM on Connectを有効化します。Start VM on Connectは、ホストプール単位で有効化できます。

Azure Virtual Desktopから、先ほど作成したホストプールの概要ページまでいきます。

概要ページから、左サイドメニューにある「プロパティ」から設定を有効化できます。有効化したあとは、忘れずに、ページ上部にある保存ボタンを押下ください。

 

これで、Start VM on Connectの準備は完了です。

3-3. 起動確認

それでは、実際に設定が反映されているか確認してみます。

こちらがセッションホストの状態です。User700にホストが割り当てられていて、その他のセッションはシャットダウンされている状態です。User800のアカウントでログインし、セッションホストが起動するのか動作検証を実施します。

ブラウザからアクセスします。URL:https://client.wvd.microsoft.com/arm/webclient/index.html

User800へのアクセスが完了しました。割り当てたワークスペースが反映されています。

それでは、デスクトップアイコンを選択します。

すると画面上にはVMを起動しています、と表示されました。

この時、セッションホストの管理画面では、User800が割り当てられていることが確認できます。

数分後、資格情報入力画面が表示されました。

セッションホストの起動も確認できています。それでは、資格情報を入力し…..

無事、ログインできました。

4. スケーリングプランの作成

続いて、ホストプールに割り当てる、スケーリングプランを作成します。こちらのスケジュールをもとに、オートスケーリング機能が動作することになります。

Azure Virtual Desktopの概要ページから、「スケーリングプラン」を選択します。

「作成」を選択してください。

4-1. スケジュール設定

スケーリングプランは、

・ランプアップ/ピーク時間 =  スケールアウト

・ランプダウン/ピーク時以外の時間 = スケールイン

の時間軸でVMの起動数を管理することができます。

それでは、作成を進めていきます。基本情報は下記の通り設定しました。特別な設定などは必要ありません。

もし、このスケーリングプランの対象から外したいセッションホストがあった場合に、そのセッションホストが付与されているタグを、除外タグに入れてください。そうすることで、スケーリングプランの対象外にさせることができます。(例:役員の方などの、業務を止められない方が利用するセッションホストを指定)

続いて、スケジュールになります。ここで、実際のスケジュールを作成します。「スケーリングを追加する」を選択してください。

4-2. スケジュール作成

今回は平日のスケジュールを設定します。

4-2-1. ランプアップ

ランプアップ時間を決めます。私の周りでは、早くて7:00amから業務をスタートさせることが多いので、その時間を設定してみます。

ランプアップの時間帯では、あらかじめVMを起動させておくことができます。今回はStart VM on Connectを利用しているので、コスト効率も踏まえ、起動しない設定としました。

「切断の設定」と、「ログオフの設定」について解説します。

セッションを切断、もしくはログオフした場合に、何分後にセッションホストをどのような状態にさせたいか、選べる設定です。アクションは、「停止」 or 「休止」 or「 起動したまま」、の3つから選べます。

ですので、上記の設定だと、セッションを切断した場合はすぐにセッションホストを「休止」にさせ、ログオフした場合は、10分後にセッションホストが「休止」になる、のような動き方になります。

4-2-2. ピーク時間

ピーク時間ですが、基本的には勤務開始時間を選択するのがベストです。一般的な定時である9:00amで作成してみます。

また、基本的に勤務時間帯にはなりますが、お昼休憩を見越した、切断、ログオフの設定をし、よりコスト効率が見込める環境を目指します。

お昼休みを考慮した結果、切断、ログオフともに5分でセッションホストを休止状態とするようにしました。

4-2-3. ランプダウン

スケールインさせていく時間の設定ですが、基本的には定時後の時間がベストだと考えています。ですので、17時30分を設定しようと思います。

後は、定時後とはいえ、残業する方や、自宅に戻って作業を再開させる方もいるかと思いますので、そのような方々を考慮した切断、ログオフの設定をしたいと思います。

定時で終わる方もいるということで、切断した場合は15分後にVMをシャットダウンすることにし、ログオフの場合は、残業される方も考え、5分後に休止状態にします。

4-2-4. ピーク時以外の時間

勤務時間後であり、残業も考えられないであろう時間を設定します。22時以降の残業は考えないものとして、10:00pmを設定し、切断もログオフ時も、瞬時にセッションホストをシャットダウンさせたいと思います。

また、一切のVMの起動(サービス残業)も認めません。

最後に「追加」に進めば、スケジュール追加は終了です。

4-3. ホストプールの割り当て

先ほど作成したホストプールに割り当てます。

これで設定は完了です。

「確認と作成」を選択し、スケーリングプランの作成は完了です。完了と同時に、スケーリングプランがホストプールに適用されます。もし、設定と同時の有効化を避けたければ、「自動スケーリングを有効にする」のチェックマークを外してください。

 

5. 動作検証

スケーリングプラン通り、セッションホストが動作するのか見てみたいと思います。ホストプールへは適用しています。

時間の関係上、ブログ作成時の時間(ランプダウン : 18時15分)の動きを見てみたいと思います。

まずは、User900を使って、ログインします。

起動、ログインが完了しました。

User900を切断( Disconnect )しました。18時43分に実施しましたので、15分後である18時58分の状態を見てみましょう

正常に、セッションホストがシャットダウンされていることが確認できました。

次に、User700を起動します。

無事起動が完了しました。それでは、Edgeを開いた状態で、ログオフしてみたいと思います。リモートデスクトップのスタートメニューから、アカウントを選択し、サインアウトします。5分後どのようになっているか確認してみます。

セッションホストはシャットダウンではなく、「使用不可」と表示されています。

それでは、実際のセッションホスト(VM)がどうなっているか確認してみましょう。セッションホスト一覧から、User700は「HP-HA-100-0」に割り当てられていることが分かっています。

セッションホストは想定通り、休止状態になっています。

それでは、再度セッションホストに接続してみて、Edgeのブラウザが立ち上がったままの状態か確認します。

通常のデスクトップ画面が表示されました。想定外の動きかと思いましたが、Edgeを開くと前回のセッションから再開、が表示されたため、セッションそのものは残っていたようです。

 

6. まとめ

今回は、Azure Virtual Machine(仮想マシン)に機能追加された休止ステータスを、Azure Virtual Desktop(AVD)のオートスケーリング機能と組み合わせてみました。仮想マシンのメモリが32GBが必要になる点や、オートスケーリング機能における仮想マシンの休止状態をサポートしているのが個人用のみという点を考慮すると、汎用性はあまり高くないという印象を持ちました。

一方で、既に、個人単位でAVDを利用されているお客様であれば、ユーザの使い勝手を極力下げず、コスト最適化が見込めると考えています。

AVD最大のメリットであるマルチセッションを活かせるような機能アップデートがあれば、更新したいと思います!!

 

この記事を書いた人

森 信之介
テクニカルマーケターとして、ブログ執筆、セミナー講師を行っております!