【ホストプール展開苦闘編】AVD for Azure Stack HCI & Azure Stack HCI 23H2を理解しつつ試してみる!
この記事の内容
- Azure Stack HCI上にAzure Virtual Desktop(AVD)のホストプールを展開する手順を紹介します
- ホストプール展開中にカスタムスクリプト拡張機能がタイムアウトして失敗した際のトラブルシューティングをまとめます
- Azure Arc VM上のArc拡張機能が「作成中」状態のままになる既知の問題と、その回避策を解説します
- 設定ファイルのリソース名からGUIDを削除するという具体的な修正手順を紹介します
- 再デプロイ時にWindowsアップデートがデプロイ処理と競合する可能性についても触れます
ホストプールのデプロイ手順
Azure Portalから、AVDのホストプール作成画面に進みます。リソースグループを選択し、ホストプール名を入力します。今回の検証環境では、以下のような設定でデプロイを試みました。
- ホストプール名: HostPool1(任意)
- 優先するデスクトップの種類: デスクトップ
- ホストプールの種類: プール
- 仮想マシンの追加: あり
仮想マシンの設定では、通常のAzure仮想マシンではなく「Azure Stack HCI仮想マシン」を選択してオンプレミス環境に展開します。カスタムの場所としてJumpstartのHCIBoxを選び、事前にダウンロードしていたイメージを使用します。
- 仮想マシン数: 2
- 仮想プロセッサ数: 2
- メモリ: 静的 / 24GB(環境に合わせて調整)
- ネットワーク: 事前に作成済みのもの(DCPが構成済み)
- ドメイン参加: Active Directory(Microsoft Entra IDはまだ選択不可)
- ドメイン参加のUPN: アドミニストレーターアカウント(UPN形式)
ワークスペースはデプロイ時に新規作成(例:Workspace1)し、デスクトップアプリグループに登録しておくと後の手順が省けます。
検証を通過したら「作成」をクリックし、デプロイを開始します。
デプロイ失敗:タイムアウトエラー
デプロイを開始しておよそ2時間16分が経過したところで、デプロイが失敗しました。エラー内容は「リクエストタイムアウト」です。時間がかかりすぎたために処理がタイムアウトとなり、正常完了しませんでした。
デプロイの詳細を確認すると、以下の状況が分かります。
- ホストプールの作成:成功
- ワークスペースのリンク:成功
- HCI ADVMリンクとテンプレート(VM本体):失敗
失敗したリソースの詳細を掘り下げると、VM自体は作成されていましたが、その後に実行される**カスタムスクリプト拡張機能(Custom Script Extension)**がタイムアウトになっていました。
トラブルシューティング:拡張機能の「作成中」状態を調査
作成されたVMに接続して状態を確認すると、以下の状況が確認できました。
- VM自体は起動しており、IPアドレスも取得済み
- ゲスト管理の構成:有効、接続済み
- カスタムスクリプト拡張機能:「作成しています」のまま変化なし
ゲストエージェントのログを確認するために、以下のパスへアクセスします。
ログファイルを開いて末尾を確認すると、繰り返し同じエラーが出力されていました。
エラーの内容を整理すると、次の問題が判明しました。
- ローカルエンドポイント(
http://localhost:40342)からトークンが取得できない - 取得しようとしているトークンのリソースIDと、エージェントの設定ファイル上のリソース名が一致していない
- トークン自体はVMの名前(例:
hoge1)で発行されているが、設定ファイル側のリソース名がhoge1_<GUID>になっており不一致となっている
このため、トークンを取得できないまま無限ループに陥り、最終的にタイムアウトしていたことが分かりました。
原因判明:Azure Stack HCIの既知の問題
調査を進めると、これはAzure Stack HCIの既知の問題であることが分かりました。Azure Stack HCIのリリースノートに、以下の内容が記載されています。
Arc VM上のArc拡張機能が無期限に「作成中」状態のまま
このリリースノートは、Azure Stack HCIのドキュメントから参照できます。バージョン2311(プレビュー)での既知の問題として記録されており、回避策が提供されています。
ポイント:リリースノートは必ず確認しましょう。 本事例では1週間ほど原因を特定できずにいましたが、リリースノートに回避策が明記されていました。
回避策:設定ファイルの書き換え
リリースノートに記載されている回避策は、VMにログインして設定ファイルを手動で書き換えるというものです。
手順
- 対象のVMにログインします
- 以下のパスにある設定ファイルをメモ帳(Notepad)で開きます
- ファイル内の
resourceNameプロパティを確認します。以下のように、VM名の後にGUIDが付いている場合は、GUIDの部分を削除してVM名のみにします
修正前:
"resourceName": "hoge1_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
修正後:
"resourceName": "hoge1"
- ファイルを保存します
- 関連するサービスを再起動します(VM全体の再起動でも可)
再起動後、カスタムスクリプト拡張機能のステータスが「成功」に変わることを確認できました。VMを再起動しなくても、サービスの再起動だけで解消できるケースもあります。
再デプロイと追加の注意点
修正を確認した後、ホストプールを再作成してデプロイを実施しました。再デプロイ時にはいくつかの追加の注意点がありました。
テンプレートの再デプロイには有効期限に注意
一度失敗したデプロイをそのまま「再デプロイ」しようとした場合、テンプレートに含まれるトークンの有効期限が切れているとデプロイが即座に失敗します。再デプロイ前に有効期限を更新してから実施してください。
Windowsアップデートとの競合
新しいVMが作成された直後、カスタムスクリプト拡張機能が実行されているタイミングでWindowsアップデートが走り始めることがあります。アップデートのダウンロードとインストールが拡張機能の処理と競合し、デプロイが失敗する原因になる可能性があります。
VMを展開した直後はWindowsアップデートを一時停止するか、デプロイ完了まで手動での更新を避けることをお勧めします。
ログの確認場所
デプロイ中の進捗状況はいくつかのパスから確認できます。
カスタムスクリプト拡張機能が実行されると、C:\Packages\Plugins\ 配下に関連ファイルが展開され、セッションホスト構成用のスクリプト(SetupSessionHost.ps1 など)が実行される様子を確認できます。
セッションホストの登録確認
設定ファイルの修正を適用した状態でデプロイを最初からやり直した結果、以下の順序で処理が成功しました。
- Azureアークマシンの作成:成功
- ネットワークインターフェイス(NIC)の作成:成功
- 仮想マシンインスタンスの作成:成功
- カスタムスクリプト拡張機能の実行:成功
- ドメイン参加:成功
最終的に、AVDの管理ポータルのホストプール画面にセッションホスト(仮想マシン)が1台登録されたことを確認できました。セッションホストの状態は「シャットダウン済み」と表示されており、再起動後はAVDクライアントからデスクトップに接続できる状態になります。
まとめ
今回の検証では、Azure Stack HCI上へのAVDホストプール展開において、以下の内容を確認しました。
- Azure Portalから「Azure Stack HCI仮想マシン」を選択することで、オンプレミスのAzure Stack HCIクラスター上にセッションホストを展開できます
- 展開中にカスタムスクリプト拡張機能がタイムアウトした場合、Arc拡張機能の既知の問題(バージョン2311)が原因である可能性があります
- 回避策は、
agentconfig.json内のresourceNameからGUIDを削除し、VMの名前のみにしてサービスを再起動することです - リリースノートは必ず事前に確認することが重要です。既知の問題と回避策が記載されており、今回のような1週間の遠回りを防ぐことができます
- デプロイ直後はWindowsアップデートとの競合にも注意が必要です
Azure Stack HCIはまだ成熟途上の段階であり、ドキュメントやリリースノートを丁寧に読みながら検証を進めることが、トラブルを最小限に抑える最善の方法です。