Windows Virtual Desktop (WVD) で オートスケールを試す!

Windows Virtual Desktop (WVD)の機能の一つ「オートスケール」が新しくなって登場!!以前は、サーバーを用意し、タスクスケジューラーでスクリプトを実行する方式でしたが、リニューアルされ、Logic Apps + Automation にてスクリプトが実行される方式になりました。これにより、サーバーの運用から開放されると共に、コストが大幅に下がります。

この機能は、Windows 10 Multi-session OS利用時に効果を発揮します。
Single-sessionで2core以上を割り当てた場合、Personal割り当てでは効果がありません。
※VM上のすべてのCoreが指定したセッション数を満たさなければ、別のVMを起動しないため

【必要なコンポーネント】

Logic Appsにて定期的に実行されるスクリプトにより、Runbookが呼び出され、CPUあたりのセッション数に基づき、Session Hostを起動/停止(割り当て解除)させる事ができます。

【動作のしくみ】

・BeginPeakTime:CPUセッション数 測定開始時間
・EndPeakTime:CPUセッション数 測定終了時間
・MinimumNumberOfRDSH:CPUセッション数測定時間外での最小稼働台数
・SessionThresholdPerCPU:CPUあたりのセッション数

※PeekTime時にスケールアップを行い、OffPeek時にスケールダウンを行う。
※設計のポイントは、最小利用ユーザー数を割り出す事!


全体の流れ

Step1:Automation & Runbook の作成
Step2:実行アカウント の作成
Step3:Logic Apps の作成

事前に「Windows Virtual Desktop (WVD) を構築する!」を作成しておく必要があります。





Step1:Automation & Runbook の作成

Login-AzAccount
※Azure環境にサインイン

Invoke-WebRequest -Uri “https://raw.githubusercontent.com/Azure/RDS-Templates/master/wvd-templates/wvd-scaling-script/createazureautomationaccount.ps1” -OutFile “C:\Users\taushiga\Desktop\createazureautomationaccount.ps1
※Azure Automation を作成するスクリプトをダウンロード

C:\Users\taushiga\Desktop\createazureautomationaccount.ps1 -SubscriptionID “3ae~c8ff” -ResourceGroupName “AutoScale” -AutomationAccountName “WVDscale” -Location “japaneast
※Azure Automation の作成

Automationが作成されているのが確認できます。


Step2:実行アカウント の作成

作成したAutomationを選択ー[実行アカウント]を選択

[Azure Active Directory]ー[アプリの登録]にて確認できます。

作成した”実行アカウント”を選択

“アプリケーションID”をコピー

Add-RdsAccount -DeploymentUrl “https://rdbroker.wvd.microsoft.com”
※WVD環境にサインイン

New-RdsRoleAssignment -RoleDefinitionName “RDS Contributor” -ApplicationId “604afedb~3” -TenantName “taushiga
※実行アカウントに対して”RDS Contributor”権限を割り当てる





Step3:Logic Apps の作成

先ずは、Logic Appsの作成に必要な”WebhookURI”を取得します。

Login-AzAccount
※Azure環境にサインイン

Invoke-WebRequest -Uri “https://raw.githubusercontent.com/Azure/RDS-Templates/master/wvd-templates/wvd-scaling-script/createazurelogicapp.ps1” -OutFile “C:\Users\taushiga\Desktop\createazurelogicapp.ps1
※Logic Apps を作成するスクリプトをダウンロード

Add-RdsAccount -DeploymentUrl “https://rdbroker.wvd.microsoft.com”
※WVD環境にサインイン

$resourceGroupName = “AutoScale
$aadTenantId = “72f9~db47
$subscriptionId = “3ae~3c8ff
$tenantName = “taushiga
$hostPoolName = “DemoPoolv1“ ←対象となるHost Pool
$recurrenceInterval = “15” ←スクリプトを実行する間隔 ※15分推奨
$beginPeakTime = “9:00
$endPeakTime = “18:00
$timeDifference = “+9:00″ ←日本時間
$sessionThresholdPerCPU = “2
$minimumNumberOfRdsh = “1“ ←”0″も指定可能
$limitSecondsToForceLogOffUser = “300
$logOffMessageTitle = “お知らせ
$logOffMessageBody = “直ちにサインアウトしてください
$location = “japaneast
$connectionAssetName = “AzureRunAsConnection” ←実行アカウント名
$webHookURI = “https://s4events.azure~.net/webhooks?token=UBR~YaiELnQ%3d
$automationAccountName = “WVDscale
$maintenanceTagName = “tagtag

c:\Users\taushiga\Desktop\createazurelogicapp.ps1 -ResourceGroupName $resourceGroupName `
-AADTenantID $aadTenantId `
-SubscriptionID $subscriptionId `
-TenantName $tenantName `
-HostPoolName $hostPoolName `
-RecurrenceInterval $recurrenceInterval `
-BeginPeakTime $beginPeakTime `
-EndPeakTime $endPeakTime `
-TimeDifference $timeDifference `
-SessionThresholdPerCPU $sessionThresholdPerCPU `
-MinimumNumberOfRDSH $minimumNumberOfRdsh `
-LimitSecondsToForceLogOffUser $limitSecondsToForceLogOffUser `
-LogOffMessageTitle $logOffMessageTitle `
-LogOffMessageBody $logOffMessageBody `
-Location $location `
-ConnectionAssetName $connectionAssetName `
-WebHookURI $webHookURI `
-AutomationAccountName $automationAccountName `
-MaintenanceTagName $maintenanceTagName

Logic Apps が作成されているのが確認できます。

設定したパラメータは、後から変更可能です。


確認してみましょう!

[Automation]ー[ジョブ] ※実行結果

実行結果を選択すると詳細内容が表示される。

失敗した実行結果を選択すると、”例外タブ”に原因が表示される。

OffPeek(スケールダウン)時の警告画面