
Azure Virtual Desktop(以下AVDと省略)は、Microsoft Azureで実装するデスクトップ仮想化サービスです。AVDでは、クラウドの特徴を生かして、電源管理を実装することで、稼働が少ない夜間や休日の時間帯では、デスクトップホストをシャットダウンして運用コストを効率化することが可能です。クラウド型VDIでは仮想マシンの電源管理が重要で、AVDにも電源管理機能としての自動スケーリングという仕組みがあります。
今回は、AVDの自動スケーリング機能であるスケーリングプランを使って効率的な電源管理を実装する方法についてご紹介します。
- ライター:三木 亮弘
- ITインフラ技術のSEに従事して二十年以上になります。
現在は、クラウドアプリケーションの技術支援を担当しています。
目次
Azure Virtual Desktop(以下AVDと省略)は、Microsoft Azureで実装するデスクトップ仮想化サービスです。AVDでは、クラウドの特徴を生かして、電源管理を実装することで、稼働が少ない夜間や休日の時間帯では、デスクトップホストをシャットダウンして運用コストを効率化することが可能です。クラウド型VDIでは仮想マシンの電源管理が重要で、AVDにも電源管理機能としての自動スケーリングという仕組みがあります。
今回は、AVDの自動スケーリング機能であるスケーリングプランを使って効率的な電源管理を実装する方法についてご紹介します。
一般的なデスクトップ稼働時間
一般的に企業や団体でVDIシステムをデスクトップの中核として利用する場合、業務時間に応じてデスクトップに接続することになります。例えば9:00から18:00が業務時間の場合、社員などの利用ユーザセッション総数の推移をグラフ化すると、以下のイメージ図のようになります。

AVDスケーリングプラン
AVDで実装されるスケーリングプランは、デスクトップセッションが利用される時間帯に応じて、必要なセッションホストの台数を調整することが可能です。利用が多い日中の時間帯にはホスト数を規定値まで最大限に用意し、利用がほとんどない夜間の時間帯にはシャットダウン させることがコスト効率上、理想的となります。

スケーリングプランを設定するには、適用したい曜日と時間帯を指定して、「容量のしきい値」、「ホストの最小割合」などのパラメータを設定する必要があります。
「容量のしきい値」が、オートスケールでホストを起動させるためのしきい値を決める重要なパラメータです。

ランプアップ動作確認
この「容量のしきい値」の適正値を考察するための動作確認を行いました。今回のテストでは、Windows11 win11-21h2-avd-m365をベースとしたマシンイメージでB2ms 2 vcpu /8 GiBメモリインスタンスを3台利用し、1ホスト10セッション、合計30セッションを許容するホストプールを作成しました。
1台10セッション確立可能な、3台で構成するホストプールを作成し、ランプアップ時間、ビーク時間、ランプダウン時間、ピーク時以外の時間 で「容量のしきい値」と「ホストの最小割合」を以下のように設定しました。

初期状態としては、1台のホストが起動している状態として、1ユーザ目のセッションを7:00に接続し、順次接続ユーザ数を増やしていきます。
7番目のユーザのセッションが確立した段階で、ホスト数を確認すると、この状態ではホストの起動台数は1台のままでした。
次に8セッション目が確立されると、2台目のホストの起動が開始されました。


1ホスト10セッションの「容量」に対して、70%となる7セッションを超えるセッション数、つまり8セッション目が確立された段階で、オートスケールポリシーが発動し、ホストの起動がされたことを確認できました。
同様に、3台目のホストの起動は、2ホスト20セッションの容量に対して70%を超える15セッション目が確立されると起動が開始されました。1ホスト10セッションを賄う想定の設計で、容量しきい値70%という設定値は、実質80%の8セッション目が確立されたことがトリガーとなるため、設定値が意図した値になっているか注意が必要だと感じました。
オートスケール検知、実行時間
オートスケールが検知されて起動が完了し、セッションが確立可能になるまでの時間を計測 したところ、オートスケール検知から、セッションが確立可能となる時間は、約2分でした 。
時間の内容は以下の通りです。
・オートスケールポリシーで定義した容量を超えるセッションが確立して、ホストが起動を開始するまでの時間:約30秒
・ホスト起動が完了しAVDコンソールに反映されるまでの時間:約2分
・起動したホストにセッションが確立できた時間(上記時間とほぼ同時):約2分
スケーリングプランは、有効にしたタイミングから対象のホストプールのセッション数が変動する度に評価がされるという仕様とのことですが、実際の動作をみてみたところ、かなり早く検知からスケールまでができるという印象です。
尚、今回のテストでは、Windows11 win11-21h2-avd-m365をベースとしたイメージでB2ms 2 vcpu /8 GiBメモリインスタンスを利用しています。実装する初期起動アプリケーションやサービスにより変動はあると思います。また計測はストップウォッチを用いて、オートスケール発動のトリガーとなるセッションが確立したタイミグでスタートし、次の新しいセッションが、新しく起動したホストに確立できたときにストップウォッチを停止して時間を計測しています。
オートスケール検知時間を測定した理由として、このホスト起動を含めたセッション確立可能となるまでのタイムラグの時間帯にセッション要求が多量にきてしまい、ホストのセッション上限に達してしまうと、新しく接続してきたユーザが、セッションを確立することができません。
就業開始の朝の時間帯に、出勤ボタン押す必要があるなど、短時間にセッション数の増加の立ち上がりが急激になるような利用の場合、注意が必要となります。
短時間にセッションの立ち上がりが大きい利用ケースでは、「容量しきい値」を低めの値に設定しておくことが望ましいと考えます。
例えば以下のように容量しきい値を20%など十分に低い値に設定しておけば、7時から早い段階で、ホスト数の起動台数を確保することができ、セッション数の増加の立ち上がりが急激な 場合でも、ユーザに接続待ちを発生させることはないと考えます。

ランプダウン動作確認
就業時間が終了して、セッションが終了していくタイミングで、クラウド側のホストをシャットダウンしコストを抑えるための設定がランプダウンとなります。ランプアップとは逆にセッションが決めた容量のしきい値を下回ったときにホストをシャットダウンしていきます。
30%の設定値の場合、1ホスト辺り3セッション平均を下回った数のセッション数となるとホストがシャットダウンされる想定となります。
「ユーザーのログオフを強制する」をいいえに選択し、「VM にはアクティブなセッションがありません」を選択した場合、アクティブなセッション数が 0 の時、セッションホストが停止されます。
ユーザセッション数が6になったタイミングで、ホストが3台から1台シャットダウンされ2台になりました。ユーザセッションが3になったタイミングでホストが2台から1台シャットダウンされ1台になりました。
ランプダウンフェーズでは、「負荷分散アルゴリズム」を深さ優先にしておくことで、セッション数を単一のホストに寄せることができ、セッション数0のホストを作りやすくして、シャットダウンをしやすくすることが設定上望ましいと考えます。
まとめ
今回は、AVDの自動スケーリング機能であるスケーリングプランを使って効率的な電源管理を実装する方法についてご紹介しました。
クラウドを利活用した運用が一般化してきている中で、より効率的な設定や実装を取り入れて、運用コストを効率化していきたいものです。本記事がAzure Virtual Desktop利活用のご参考になれば幸いです。
参考情報
※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。