この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
※2019年6月5日、2019年7月25日に一部更新しています。
はじめに
Windows Virtual Desktop (WVD)のパブリックプレビューのご体験いかがでしょうか?
多くの方は「とりあえず触ってみよう」と触れて多くのエラーに心折れた方もいるのではないでしょうか。
この記事では各種エラーとその対応方法を弊社独自の見解で解説していきます。
Windows Virtual Desktop 作成の流れ
ざっくりとした流れはこちらです
- Azure 環境の用意
- パブリックプレビューの申し込みを実施
- WVD テナント作成ユーザに TenantCreator 権限を付与
- RDS アカウントの追加および WVD テナントの作成(PowerShell による作業)
- Active Directory サーバを構築し、仮想デスクトップをデプロイするドメインを用意
- Azure AD Connect サーバを構築し、仮想デスクトップにサインインするユーザを用意
- Azure ポータルより、WVD をデプロイ
Azure ポータルで作成すると内部的に概ねこのような処理が行われているようです。
- 可用性セットの作成
- VM 作成
- 拡張機能 [joindomain] インストール後、ドメイン参加
- 拡張機能 [dscextension] インストール
- Hostpool 作成
- AppGroup 作成
- AppGroupUser 追加
トラブル解説
RDS アカウントの追加ができない
Add-RdsAccount : 1 つ以上のエラーが発生しました。
発生場所 行:1 文字:1
+ Add-RdsAccount -DeploymentUrl "https://rdbroker.wvd.microsoft.com"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-RdsAccount], AggregateException
+ FullyQualifiedErrorId : System.AggregateException,Microsoft.RDInfra.RDPowershell.Context.AddRdsAccount
RDS アカウントの追加は PowerShell で Add-RdsAccount コマンドを実行することになりますが、こちらを実行するには対象となる Azure AD に対して AD のユーザー同期を予め行っておく必要があります。Azure AD は何らかのADと同期されている状態であれば、問題ありません。
VM 作成に失敗する
この時点で失敗した方はリソースグループ上に可用性セットのリソースのみが作成されており、以下のエラーで失敗しているはずです。
原因:仮想ネットワークの設定に問題あり
WVD で VM を作成するには予め仮想ネットワークを作成し、AD が参照する DNS サーバを指定している必要があります。WVD 作成時に仮想ネットワークを作るとこの時点で失敗します。
ドメイン参加に失敗する
Azure ポータル上に VM リソースが確認できたけど、以下のエラーが起こった場合の原因を見てみましょう。
原因:AD に関する情報が間違っている
AD に関する情報として、入力したアカウントにドメイン参加権限がなかったり、入力したドメインや OU の指定に誤りがある可能性が高いです。
VM 拡張のインストールに失敗する
AD 上にコンピュータオブジェクトも作られ、WVD デプロイ成功まで目前ですが、以下のようなエラーが起こることがあります。
このエラーが発生した場合、インストール時のスクリプト実行において問題が発生していることを意味します。
該当のスクリプトはこちらにあるので詳細に興味がある方はご確認ください。
https://github.com/Azure/RDS-Templates/tree/master/wvd-templates/Create%20and%20provision%20WVD%20host%20pool/DSC
このスクリプトが行っていることは概ね以下のような処理となっています。
- まず1台にインストールに必要なスクリプトやエージェントを展開し、レジストリを確認した後にWindows Virtual Desktop の認証を行います。
- 1が問題なければホストプールを作成
- セッション ホストがホスト プールに参加することを承認する登録トークンを作成
- Windows Virtual Desktop エージェントをインストール
- Windows Virtual Desktop エージェント ブートローダーをインストール
- 残りすべてを同時並行で1および4と5を繰り返す
このような処理フローのため、2台のセッションホストでも10台のセッションホストでもほとんど処理時間に違いは出てきません。
原因
エラーに関する公式ドキュメントの説明はこちらにあります。
Azure Resource Manager template and PowerShell Desired State Configuration (DSC) errors
いくつかの原因が書かれています。
- 権限や名前解決の問題
- 一時的なエラー(運が悪かった?)
- パスワードに禁止文字が使われている
どれも参考になることはありませんでした。。。
原因(よくあるエラー):セッションホストの管理者権限がない!?
エラーとしては権限不足によりエージェントやブートローダーのインストールに失敗することが原因となります。
まだ弊社でも検証を行っている状況ですが、同じ設定でも成功したり失敗したりするため、単に権限だけの問題とも考えにくい状況です。
弊社の見解では、この時点でエラーが起こる場合はユーザー側に問題がある可能性は低いと考えています。その証拠に、エラー画面でパラメータを変えることなく「再デプロイ」ボタンを押してデプロイに成功することもありました。
また、複数のセッションホストを作る際に、1 台だけ失敗することもありました。
原因(その他エラー)
- Windows Virtual Desktop tenant name に不備がある!?
- Azure Portal が悪い!?
- システムが不安定
Azure Portal からデプロイしていると名前が原因でエラーになることがあります。その場合は、後述の手動インストールと同じ手順で問題は解決します。
弊社が検証している中で、複数台のセッションホストをデプロイしているときにだいたいは成功している中、一部がエラーになることもありました。
当然ながら1つのデプロイにおいてセッションホスト間に違いはないはずです。
もし 1 台目でも成功していれば、残りのところで失敗して終わったとしても、ホストプールが作成されているため WVD にアクセスすることは可能です。1台でも失敗したら手動で PowerShell でホストプールに登録すれば修復可能です。
解決方法1(おすすめ):手動インストール
このエラーが発生している人は Azure 上にドメイン参加されたセッションホストの VM だけが残っている状態かと思います。
まず、PowerShell でホストプールを作成します。次に、ADからそれらのVMに直接ログインしてホストプールに VM を登録していきます。最後に AppGroup にユーザーを追加してください。
Azrue Portal からのデプロイは失敗しましたが、これらの手順によってリカバリ完了であとは問題なくご利用いただけます。
解決方法2:ARM テンプレートからデプロイ
結果論として、Azure Portal の処理に何か原因がありそうな挙動です。
ARM テンプレートからデプロイすることでこの障害を回避することが出来ます。弊社メンバーの中には ARM テンプレートからのデプロイでエラーになったことがない者もいます。
ARMテンプレートのいいところとして、Azure Portal からのデプロイ時には指定できない細かい設定を行うことが出来ることです。
やや中級者以上向けかもしれません。
WVD にアクセスしても利用できない
WVD のホストプールが作成された状態でもアクセスした時に以下のようなエラーになる場合があります。
管理者がリソースをまだセットアップしていないようです。後でもう一度やり直すか、管理者にお問い合わせください。
原因:ユーザーが設定されていない
このトラブルシューティングでは現状 PowerShell でしか問題解決できません。
以下のコマンドで問題を確認し、解決しましょう。
# ログイン
Add-RdsAccount -DeploymentUrl "https://rdbroker.wvd.microsoft.com"
# Hostpool を確認
Get-RdsHostPool -TenantName テナント名
# AppGroup を確認 ※現在は固定で「Desktop Application Group」
Get-RdsAppGroup -TenantName テナント名 -HostPoolName Hostpool名
# AppGroupUser を確認
Get-RdsAppGroupUser -TenantName テナント名 -HostPoolName Hostpool名 -AppGroupName "Desktop Application Group"
# ユーザーを追加
Add-RdsAppGroupUser -TenantName テナント名 -HostPoolName Hostpool名 -AppGroupName "Desktop Application Group" -UserPrincipalName UPN(メールアドレス)
ホストプールが出来ているにもかかわらず、利用できなかった方はユーザー追加することで利用できるようになったはずです。
これらの PowerShell を実行するにあたって WVD の構成を把握しているとイメージできるかと思います。これはインターネット上に公開されていたマイクロソフト社の資料から抜粋したものです。
以上です。
いかがでしょうか?少しでも問題解決のお役に立てると幸いです。
弊社では Windows Virtual Desktop の導入支援を行っていますので、お気軽にご相談ください。