Windows Virtual Desktop #76 Start VM on Connect を使ってみた話

この記事のWVDは”Windows Virtual Desktop Spring 2020 Release”が対象です。

https://www.microsoft.com/en-us/microsoft-365/roadmap?filters=Windows%20Virtual%20Desktop

Windows Virtual Desktop について、サインイン時のVM自動起動が利用可能となりました。 ロードマップのページを一昨日見たときはまだリリース前だったとは思うのですが、上記のロードマップのページでは 2021/3/30 にリリースだったようです。 この機能は ワークスペースからセッションホストに接続する際、セッションホストの Virtual Machine が停止している場合は自動的に Power-On してくれる機能となります。 Citrix や VMware は昔から提供している機能ですし、スケジュールによる Virtual Machine の停止・起動運用とも相性がよい機能です。

実際にどんな挙動となるのかスクリーンショットで紹介していきます。  途中、PowerShellの設定で This functionality is not supported. It will be included in a future release. のメッセージで機能を有効化することが出来ないというトラブルもありましたが、最終的に設定方法と機能の正常動作を確認することが出来ました。

まずはセッションホストとなる Virtual Machine が停止状態であることを確認します。

Windows Virtual Desktop の Host pool からも仮想マシン1台があるが、使用不可もその1台となっていることを確認します。

リモートデスクトップクライアントを起動し、デスクトップリソースにアクセスします。 併せて時間も測定しておくことにします。

数秒で以下のエラーが返ってきました。 これは過去の記事でも紹介していますが、利用できるリソースが無い=セッションホストの Virtual Machine が起動していない時のメッセージです。 

マニュアルも読まずに始めてしまっていたのですが、機能の有効化にはどうやら設定が必要なようです。 一端マニュアルを確認することにします。

Microsoft Docs にこの新機能のページが追加されていることを確認出来ました。

Windows Virtual Desktop > How-to を展開します。

一番下に Start VM on Connect が追加されています。

手順の流れはまずは Role を作って、PowerShell で設定します。 現時点では PowerShell か REST API での設定となるようです。

Role の作成ですが、Azure Portal からサブスクリプションの アクセス制御(IAM)に移動します。

カスタム ロールの追加をクリックします。

名前は適当に決めて、

アクセス許可ページでは、アクセス許可の追加から Microsoft Docs 記載の2つの権限を追加します。

残りの、割り当て可能なスコープ、JSON、確認と作成はそのまま進めていくことで カスタムロールの作成は完了します。

次に、作ったカスタムロールに Windows Virtual Desktop を割り当てます。

最後に PowerShell から Host Pool で機能を有効化します。 しかし、失敗します。

実行コマンドとエラーは以下の通り。This functionality is not supported. It will be included in a future release. とのことで、対象の Host Pool が Start VM on Connect に対応していないか、Cloud Shell の PowerShell が古いかのどちらかが原因と考えられます。

> Update-AzWvdHostPool -ResourceGroupName rg-bigriver.jp -Name Windows10_2004 -StartVMOnConnect:$true
Update-AzWvdHostPool_UpdateExpanded: ActivityId: 8a4c3926-f61d-4763-8316-7d2f9df8ff42 Error: This functionality is not supported. It will be included in a future release. Go to: https://go.microsoft.com/fwlink/?linkid=2146741

最新化した、 PowerShell 実行環境でも同様のエラーとなりました。 PowerShell のモジュールが古いということはなさそうです。

Module の Version は 2.1.0 より新しいものと指定はあります。

インストールしているのは 2.1.1 ですので問題はなさそうです。

Host Pool 側は検証環境ははいにしています。まあ、Microsoft Docs にはこれが条件の記載はなかったので関係しないと思います。

This functionality is not supported. It will be included in a future release. のメッセージをそのまま受け取れば、私の Host Pool ではまだ Start VM on Connect 機能がデプロイされていないのかもしれません。 ちょっと時間をおいて試してみることにします。

原因がわかりました。 この Start VM on Connect は Personal (個人用デスクトップ)が対象なのですが、今回試した Host Pool は非 Personal でした。 

Personal な Host Pool を準備し、再度、PowerShel による設定を試みます。今度は PowerShell による設定が成功しました。

それでは Start VM on Connect 機能のテストを再度実施します。

まずは、Session Host を停止します。 以下の通り、仮想マシンは停止しています。

Personal な Host Pool には使用可能な Session Host はいない状況です。

リモートデスクトップクライアントからデスクトップリソースに接続を試みます。

進捗確認のウィンドウがポップアップします。

上記から5秒くらいで リモートPCを開始しています… とメッセージが表示されます。

約3分間ほどで仮想マシンが起動し、 Active Directory の認証を求められます。

デスクトップが表示されました。

サインイン直後にパフォーマンスを確認すると、CPU使用率は比較的高いです。 これは Windows Virtual Desktop に関係なく Windows であれば同様の傾向になります。 

ディスクも同様です。 

CPUやディスクがサインイン後に使用率が高くなるのは、色々な要因があります。 夜間にスケジュールされている沢山のメンテナンススケジュールが実行されていない場合や Microsoft Update、今回の環境にはインストールしていませんがアンチウイルスソフトなどが起動からサインイン、サインイン後の数分間はCPUやディスクリソースを大量に消費します。  そういう意味では、この普段は停止しておいて使う時に起動する運用を私は使いたいとは思わなかったりします。 エンドユーザをコントロールできる状況であればよいのですが OA 環境には向かないとも思います。サインインに時間がかかる、サインイン出来ても5分、10分の間もっさりしている、などエンドユーザの使用感に悪い影響が出てしまうためです。 まあ、大体はアンチウイルスソフトを停止するだけで解決はするのですがそう簡単に止めるわけにもいかなかったりしますし。

とりあえず、今回の検証の目的であった Start VM on Connect の設定方法と機能を確認することが出来ました。あとはスケジュールの起動・停止を簡単な GUI から実行出来ると Citrix や Horizon との差も縮まると思います。

以上