Azure Virtual Desktop (AVD)の機能の一つ「オートスケール」が新しくなって登場!!以前は、サーバーを用意し、タスクスケジューラーでスクリプトを実行する方式でしたが、リニューアルされ、Logic Apps + Automation にてスクリプトが実行される方式になりました。これにより、サーバーの運用から開放されると共に、コストが大幅に下がります。
この機能は、Windows 10 Multi-session OS利用時に効果を発揮します。
Single-sessionで2core以上を割り当てた場合、Personal割り当てでは効果がありません。
※VM上のすべてのCoreが指定したセッション数を満たさなければ、別のVMを起動しないため
※最新版はこちら「Azure Virtual Desktop (AVD) で 新オートスケールを試す!」
【必要なコンポーネント】
Logic Appsにて定期的に実行されるスクリプトにより、Runbookが呼び出され、CPUあたりのセッション数に基づき、Session Hostを起動/停止(割り当て解除)させる事ができます。
【動作のしくみ】
・BeginPeakTime:CPUセッション数 測定開始時間
・EndPeakTime:CPUセッション数 測定終了時間
・MinimumNumberOfRDSH:CPUセッション数測定時間外での最小稼働台数
・SessionThresholdPerCPU:CPUあたりのセッション数
※PeekTime時にスケールアップを行い、OffPeek時にスケールダウンを行う。
※設計のポイントは、最小利用ユーザー数を割り出す事!
全体の流れ
Step1:Automation & Runbook の作成
Step2:実行アカウント の作成
Step3:Logic Apps の作成
事前に「Azure Virtual Desktop (AVD) を構築する!」を作成しておく必要があります。
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”
※AVD環境にサインイン
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”
※AVD環境にサインイン
$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“ ←”0″の場合サインアウトを待つ
$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(スケールダウン)時の警告画面