VM の Hibernate を AVD の個人型ホストプールのスケーリングプランで利用する
これは何...?
- 2023年11/15-17にかけてIT開発者およびビジネス意思決定者向けのイベントである Microsoft Ignite が開催されています。
- Microsoft Ignite 2023 Book of News[1] の中でも触れられている Azure Virtual Desktop Autoscale for Personal Desktops におけるセッションホストの
Hibernate
の検証を行います。 - こちらの機能は現在プレビュー段階です。
- 単に個人型 AVD のオートスケールについては別の記事[2]を書いているので、そちらと併せてご参照ください。
仮想マシンの Hibernate (休止状態)とは
細かい点については、公式ドキュメント[3]やテックブログ[4]をご参照いただきたいところですが、超ざっくり言うと「VM のメモリ内状態が維持されたまま、マシンの割り当てを解除する」ことで「マシンコストを削減」しつつ、「VM の再起動後にアプリとプロセスを最後の状態から再開」することができるものになります。
テックブログにおいて、この Hibernate
の利用シナリオの1つとして、AVD が挙げられています。
Starting today, customers can also use hibernation (in preview) with Personal Desktop Autoscale and Start VM on Connect. Customers can configure their personal scaling plan to either hibernate or deallocate host machines. By choosing to hibernate machines, customers will be able to resume from right where they left off when the session starts again.
実際に試してみる
既存の AVD 環境で試してみよう、となったのですが。Hibernate 自体がまだ制限が結構あるのでそこは注意します。
まず事前準備として、サブスクリプションに対して Hibernate のプレビュー機能を登録します。
既存の VM に対しては Hibernate を有効化することができないため、ホストプールに Hibernate を有効化した新規のセッションホスト VM を追加します。登録キーの作成を求められる場合は画面に従います。Hibernate 利用のセッションホストのみにしたい場合には、以前デプロイされていたセッションホストをホストプールから削除します。
ドキュメント上は Windows 11 対応しているという記載があるのですが、Azure Portal 側で怒られてしまったので、一旦 Windows 10 で作成します。
セッションホストがデプロイされ、RUNNING
となっていることを確認します。次に、スケーリングプランにおいて、切断時の挙動を「休止状態」に設定します。ピーク時間(手元の設定においては9時-18時、検証は10時ごろに行っている)において、切断後即座に休止状態に入る設定としてみます。
AVD の Web クライアント(https://client.wvd.microsoft.com/arm/webclient/index.html)にアクセスし、該当の Desktop Application を選択してログインします。ホストプールにて、ユーザが割り当たったことを確認します。
作業をした風を装うため、適当にブラウザを開いたり Zenn にログインしたりしてみます。
その後、AVD のセッションを切断します。切断後即座に Hibernate されるはずなので、ホストプール側を見てみます。 DEALLOCATED
という状態になりました(HIBERNATED
とは表示されないようです)。
VM のリソース画面を見てみると、休止状態となっています。
再度同じユーザで Web クライアントから Desktop Application を選択し、接続してみます。ホストプール側で Start VM on Connect
をオンにしているため、VM が起動します。
VM が起動すると認証画面が現れ、認証に成功すると先ほど開いていた画面がそのまま表れます(時刻を確認してもらえれば全く同じスクショではないことがわかると思います)。なので、VM の割り当て解除を挟むにもかかわらず透過的に作業が継続できるわけですね。
おわり
- Microsoft Ignite 2023 で発表された VM の Hibernate x AVD のシナリオを検証した
- 作業の継続性という意味では明らかに Hibernate を利用したスケーリングプランを利用する方が優秀
- VM に対する課金も発生しないので、Hibernate が利用できる場合に使わないシナリオはあるのか?は疑問
- 新しい仕組みではあるので、Hibernate を利用可能なVMサイズ・イメージ等制限事項も多いので注意が必要
- multi-session 型の場合にどういう動きになるのかはスケーリングプランの設定が違うので別途検証が必要
-
https://learn.microsoft.com/ja-jp/azure/virtual-machines/hibernate-resume?tabs=osLimitsWindows%2CenablehiberPortal%2CcheckhiberPortal%2CenableWithPortal%2CcliLHE%2CUbuntu18HST%2CPortalDoHiber%2CPortalStatCheck%2CPortalStartHiber%2CPortalImageGallery ↩︎
-
https://techcommunity.microsoft.com/t5/azure-compute-blog/reduce-compute-costs-by-pausing-vms-now-in-public-preview/ba-p/3981127 ↩︎
Discussion