Azure Virtual Desktop (AVD) で 新オートスケールを試す!

オートスケール機能「第三弾」となるオートスケールが登場しました!
特徴は、セッション数を考慮しながら、スケールアウト/インを行えるところです。
シャットダウン時には、セッションが無い場合や強制的に停止するなどが選択できます。
この機能は、AzurePortalに組み込まれているので、何かをデプロイする必要はありません。

【動作のしくみ】

ランプアップ&ピーク時間:セッションホストをスケールアウトさせる時間帯
ランプダウン&ピーク時間外:セッションホストをスケールアウト/インさせる時間帯

ランプアップ&ピーク時間の設定

ホストの最小割合:最小起動台数を調整できる
ホストプール内の全セッションホスト[セッション数の上限]の合計値、に対する割合で指定

例:ホストプール内の合計セッション数が[10]、ホストの最小割合が[10%]の場合、1台の
セッションホストが常に起動している状態となります。

容量のしきい値:スケールアウト
起動しているセッションホストの[セッション数の上限]の合計値、に対する割合で指定

例:起動しているセッションホストの合計セッション数が[10]、容量のしきい値が[60%]である場合、アクテイブセッションが[60%]を上回ると、追加でセッションホストを起動します。
※アクテイブセッションの割合が、しきい値を下回るまでVMを起動させます。

ランプダウン&ピーク時間外の設定

ホストの最小割合:最小起動台数 ※上記と同じ動作

容量のしきい値:スケールアウト/イン
起動しているセッションホストの[セッション数の上限]の合計値、に対する割合で指定

例:起動しているセッションホストの合計セッション数が[10]、容量のしきい値が[60%]である場合、アクテイブセッションが[60%]を上回ると、追加でセッションホストを起動します。
また、アクテイブセッションが[60%]を下回ると、セッションホストを停止します。
※停止のための条件は、停止した状態でも、既存のアクテイブセッションを受け入れられる&しきい値を下回っている場合に限ります。

[利用のための諸条件]

・ホストプールの種類は[Pooled]のみ。
・1つのホストプールに割り当てられるスケーリングプランは1つだけ
・1つのスケーリングプランを複数のホストプールに割り当てられる
・各曜日に対してスケジュール設定が可能
・ドレインモードのセッションホストも対象になるので、除外タグを利用
・ホストプール作成時に設定した、負荷分散アルゴリズムは上書きされる
・サインイン/アウトのタイミングで評価している
・全台停止している場合、スケールアウトは機能しません


全体の流れ

Step1:カスタムロールの作成
Step2:カスタムロールの割り当て
Step3:スケーリングプランの作成
Step4:診断ログの設定


Step1:カスタムロールの作成

[サブスクリプション]ー[アクセス制御]ー[+追加]ー[カスタムロールの追加]を選択

カスタムロール名:表示名
説明:コメントを記載
ベースラインのアクセス許可:
ロールを複製します=既存ロールをベースにして作成
最初から始める=ベース無しで作成
JSONから開始=JSONファイルをアップロードして作成

※「アクセス許可」「割り当て可能なスコープ」は変更なし

[actions]項目に下記を追加します。
“Microsoft.Insights/eventtypes/values/read”,
“Microsoft.Compute/virtualMachines/deallocate/action”,
“Microsoft.Compute/virtualMachines/restart/action”,
“Microsoft.Compute/virtualMachines/powerOff/action”,
“Microsoft.Compute/virtualMachines/start/action”,
“Microsoft.Compute/virtualMachines/read”,
“Microsoft.DesktopVirtualization/hostpools/read”,
“Microsoft.DesktopVirtualization/hostpools/write”,
“Microsoft.DesktopVirtualization/hostpools/sessionhosts/read”,
“Microsoft.DesktopVirtualization/hostpools/sessionhosts/write”,
“Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/delete”,
“Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read”,
“Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/sendMessage/action”,
“Microsoft.DesktopVirtualization/hostpools/sessionhosts/usersessions/read”

これにて、カスタムロールが完成!


Step2:カスタムロールの割り当て

[サブスクリプション]ー[アクセス制御]ー[+追加]ー[ロールの割り当ての追加]を選択

作成したカスタムロールを選択

[+メンバーを選択する]ー[Windows Virtual Desktop]を選択

割り当てを確認


Step3:スケーリングプランの作成

[スケーリングプラン]ー[+作成]を選択

名前:表示名
場所:スケーリングプランの保存場所 ※セッションホストの場所とは関係なし
フレンドリ名 ※変更可能
説明:スケジュールの概要を記載するのが良いかも ※変更可能
タイムゾーン:セッションホストの場所に合わせる ※変更可能
ホストプールの種類:[Pooled]固定
除外タグ:※変更可能

ここからスケジュール作成に移ります。

1つの曜日に1つのスケジュールを割り当て可能

開始時間:ランプアップの開始時間
負荷分散アルゴリズム:スムーズなサインインのため[幅優先]を推奨
ホストの最小割合:0~100 ※ピーク時間にも引き継がれる
容量のしきい値:0~100 ※ピーク時間にも引き継がれる

開始時間:ランプダウンの開始時間 ※24時を超えた設定は不可
負荷分散アルゴリズム:停止の影響を受けるユーザーを減らすため[深さ優先]を推奨
ホストの最小割合:0~100 ※ピーク時以外の時間にも引き継がれる
容量のしきい値:0~100 ※ピーク時以外の時間にも引き継がれる
ユーザーのログオフを強制する:はい=強制的に停止する
ユーザーをログアウトしてVMをシャットダウンするまでの遅延時間:
通知メッセージ:停止するVMのデスクトップ上に表示します。

ユーザーのログオフを強制する:いいえ=下記の状態で停止する
上:アクテイブセッションもしくは、切断されたセッションが無い場合に停止 ※空の状態
下:アクテイブセッションが無い場合に停止 ※切断されたセッションがあっても停止

スケジュールの作成が完了

割り当てるホストプールを選択します。 ※複数指定可能

最後に確認


Step4:診断ログの設定

[診断設定]ー[診断設定を追加する]を選択

Blobに出力

insights-logs-autoscale:スケールアウト/インに関するログ
insights-logs-management:イベントログ

insights-logs-autoscale “Message”を抜粋

“Message”:”Active session hosts are at 25.00% capacity (1 sessions across 2 active session hosts). This is below the minimum capacity threshold of 90%. 1 session hosts can be drained and deallocated.”

“Message”:”Active session hosts are at 50.00% capacity (1 sessions across 1 active session hosts). This is below the minimum capacity threshold of 90%. But, if any session hosts are drained/deallocated, the maximum capacity threshold of 90% will be exceeded. No action will be taken.”


おまけ

ユーザーのログオフを強制した時の警告画面