排查 Azure 虚拟桌面代理问题 您所在的位置:网站首页 远程桌面rd过期 排查 Azure 虚拟桌面代理问题

排查 Azure 虚拟桌面代理问题

2023-05-19 03:03| 来源: 网络整理| 查看: 265

你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

排查常见的 Azure 虚拟桌面代理问题 项目 04/23/2023

由于多种因素,Azure 虚拟桌面代理可能会导致连接问题:

中转站上出现了错误,导致代理停止服务。 与更新相关的问题。 在代理安装过程中与安装相关的问题会破坏到会话主机的连接。

本文将指导你了解这些常见情况的解决方案以及如何解决连接问题。

注意

为了排查与会话连接和 Azure 虚拟桌面代理相关的问题,建议通过转到“事件查看器”>“Windows 日志”>“应用程序”来查看会话主机虚拟机 (VM) 上的事件日志。 查找具有以下某一种源的事件,以确定问题:

WVD-Agent WVD-Agent-Updater RDAgentBootLoader MsiInstaller 错误:RDAgentBootLoader 和/或远程桌面代理加载程序已停止运行

如果看到以下任何问题,则意味着加载该代理的启动加载程序未能正确安装该代理,并且代理服务未在会话主机 VM 上运行:

RDAgentBootLoader 已停止或未运行。 远程桌面代理加载程序没有状态。

若要解决此问题,请启动 RDAgent 启动加载程序:

在“服务”窗口中,右键单击“远程桌面代理加载程序”。

选择“启动”。 如果看到此选项为灰显,则表明不具有管理员权限。 需要获取这些权限才能启动该服务。

请等待 10 秒,然后右键单击“远程桌面代理加载程序”。

选择“刷新”。

如果服务在启动并刷新后停止,则可能出现注册失败。 有关详细信息,请参阅 INVALID_REGISTRATION_TOKEN。

错误:INVALID_REGISTRATION_TOKEN

在会话主机 VM 上,转到“事件查看器”>“Windows日志”>“应用程序”。 如果看到 ID 为 3277 的事件,并且该事件的说明中包含“INVALID_REGISTRATION_TOKEN”,则表明你使用的注册令牌未被识别为有效令牌。

若要解决此问题,请创建有效的注册令牌:

若要创建新注册令牌,请按照为 VM 生成新的注册密钥部分中的步骤进行操作。

打开注册表编辑器。

转到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RDInfraAgent”。

选择“IsRegistered”。

在“值数据:”输入框中,键入“0”,然后选择“确定” 。

选择“RegistrationToken”。

在“值数据:”输入框中,粘贴步骤 1 中的注册令牌。

以管理员身份打开 PowerShell 提示符,并运行以下命令以重启 RDAgentBootLoader 服务:

Restart-Service RDAgentBootLoader

返回到注册表编辑器。

转到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RDInfraAgent”。

验证是否已将“IsRegistered”设置为 1,并且 RegistrationToken 的数据列中不存在任何内容。

错误:代理无法连接到中转站,出现 INVALID_FORM

在会话主机 VM 上,转到“事件查看器”>“Windows日志”>“应用程序”。 如果看到 ID 为 3277 的事件,并且该事件的说明中包含“INVALID_FORM”,则表明代理无法连接到中转站或访问特定终结点。 此问题可能是因为使用了特定的防火墙或 DNS 设置。

若要解决此问题,请检查是否可以访问称为 BrokerURI 和 BrokerURIGlobal 的两个终结点:

打开注册表编辑器。

转到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RDInfraAgent”。

记下“BrokerURI”和“BrokerURIGlobal”的值 。

打开 Web 浏览器,在地址栏中输入你的 BrokerURI 值,并将 /api/health 添加到末尾,例如 https://rdbroker-g-us-r0.wvd.microsoft.com/api/health。

在浏览器中打开另一个标签页,在地址栏中输入你的 BrokerURIGlobal 值,并将 /api/health 添加到末尾,例如 https://rdbroker.wvd.microsoft.com/api/health。

如果网络未阻止连接到中转站,则两个页面应成功加载并显示消息“RD 中转站处于正常状态”,如以下屏幕截图所示:

如果网络阻止了中转站连接,则页面将不会加载,如以下屏幕截图中所示。

必须取消阻止所需的终结点,然后重复步骤 4 到 7。 有关详细信息,请参阅所需 URL 的列表。

如果执行上述步骤未能解决问题,请确保没有任何组策略使用了阻止代理连接到中转站的密码。 Azure 虚拟桌面使用与 Azure Front Door 相同的 TLS 1.2 密码。 有关详细信息,请参阅连接安全性。

错误:3703

在会话主机 VM 上,转到“事件查看器”>“Windows日志”>“应用程序”。 如果看到 ID 为 3703 的事件,并且该事件的说明中包含“RD 网关 URL: 无法访问”,则表明代理无法访问网关 URL。 若要成功连接到会话主机,必须允许发往所需 URL 的列表中的 URL 的网络流量。 此外,请确保防火墙或代理设置不会阻止这些 URL。 使用 Azure 虚拟桌面需要取消阻止这些 URL。

要解决此问题,请运行所需 URL 检查工具来验证是否可以访问所需的 URL。 如果使用 Azure 防火墙,请参阅使用 Azure 防火墙保护 Azure 虚拟桌面部署和 Azure 防火墙 DNS 设置,详细了解如何为 Azure 虚拟桌面配置该防火墙。

错误:3019

在会话主机 VM 上,转到“事件查看器”>“Windows日志”>“应用程序”。 如果看到 ID 为 3019 的事件,则代理无法访问 Web 套接字传输 URL。 若要成功连接到会话主机,并允许网络流量绕过这些限制,则必须取消阻止所需 URL 的列表中列出的 URL。 请与网络团队合作,以确保防火墙、代理和 DNS 设置未阻止这些 URL。 还可以检查网络跟踪日志,以确定正在阻止 Azure 虚拟桌面服务的位置。 如果为此特定问题创建一个 Microsoft 支持案例,请确保将网络跟踪日志附加到该请求。

错误:InstallationHealthCheckFailedException

在会话主机 VM 上,转到“事件查看器”>“Windows日志”>“应用程序”。 如果看到 ID 为 3277 的事件,并且其说明中显示“InstallationHealthCheckFailedException”,则堆栈侦听器未起作用,因为终端服务器已经切换了该堆栈侦听器的注册表项。

若要解决此问题,请执行下列操作:

查看堆栈侦听器是否正常工作

如果堆栈侦听器不起作用,请手动卸载并重新安装堆栈组件。

错误:ENDPOINT_NOT_FOUND

在会话主机 VM 上,转到“事件查看器”>“Windows日志”>“应用程序”。 如果看到 ID 为 3277 的事件,并且其说明中显示“ENDPOINT_NOT_FOUND”,则表示中转站找不到要与之建立连接的终结点。 发生这种情况的原因可能会是以下某一种:

主机池中没有任何主机会话 VM。 主机池中的主机会话 VM 未处于活动状态。 主机池中的所有主机会话 VM 都已超过最大会话限制。 主机池中的 VM 上都没有运行代理服务。

若要解决此问题,请执行下列操作:

确保 VM 已开机且未从主机池中删除。

确保 VM 未超出最大会话限制。

确保代理服务正在运行并且堆栈侦听器运行正常。

确保代理可以连接到中转站。

确保 VM 具有有效注册令牌。

确保 VM 注册令牌未过期。

错误:InstallMsiException

在会话主机 VM 上,转到“事件查看器”>“Windows日志”>“应用程序”。 如果看到 ID 为 3277 的事件,并且该事件的说明中包含“InstallMsiException”,则表明该安装程序在你尝试安装代理时已在为另一应用程序运行,或者,组策略正在阻止 msiexec.exe 运行。

若要检查组策略是否正在阻止 msiexec.exe 运行,请执行以下操作:

通过从权限提升的命令提示符下运行 rsop.msc 来打开策略的结果集。

在弹出的“策略的结果集”窗口中,转到“计算机配置”>“管理模板”>“Windows 组件”>“Windows Installer”>“禁用 Windows Installer”。 如果状态为“已启用”,请与 Active Directory 团队协作以允许 msiexec.exe 运行。

注意

此列表不是完整的策略列表,而只是我们目前知道的策略。

错误:Win32Exception

在会话主机 VM 上,转到“事件查看器”>“Windows日志”>“应用程序”。 如果看到 ID 为 3277 的事件,并且该事件的说明中包含“InstallMsiException”,则表明某个策略正在阻止 cmd.exe 启动。 阻止此程序会阻止运行控制台窗口,而只要代理更新就需要使用控制台窗口来重启服务。

通过从权限提升的命令提示符下运行 rsop.msc 来打开策略的结果集。

在弹出的“策略的结果集”窗口中,转到“用户配置”>“管理模板”>“系统”>“阻止访问命令提示符”。 如果状态为“已启用”,请与 Active Directory 团队协作以允许 cmd.exe 运行。

错误:堆栈侦听器在 Windows 10 2004 会话主机 VM 上不起作用

在会话主机 VM 上,从命令提示符下运行 qwinsta.exe,并记下 SESSIONNAME 列中 rdp-sxs 旁边显示的版本号。 如果 rdp-tcp 和 rdp-sxs 条目的 STATE 列不是“Listen”,或者 rdp-tcp 和 rdp-sxs 条目根本未列出,则表示存在堆栈问题。 堆栈更新将与代理更新一起安装,但如果安装失败,Azure 虚拟桌面侦听器将无法正常工作。

若要解决此问题,请执行下列操作:

打开注册表编辑器。

转到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations”。

在“WinStations”下,你可能会看到不同堆栈版本的多个文件夹,请选择与你在命令提示符下运行 qwinsta.exe 时看到的版本信息匹配的文件夹。

查找“fReverseConnectMode”并确保其数据值为“1” 。 另外,请确保“fEnableWinStation”设置为“1” 。

如果“fReverseConnectMode”未设置为 1,请选择“fReverseConnectMode”并在其值字段中输入“1” 。

如果“fEnableWinStation”未设置为 1,请选择“fEnableWinStation”并在其值字段中输入“1” 。

对在命令提示符下运行 qwinsta.exe 时看到的版本信息匹配的每个文件夹重复上述步骤。

提示

若要一次更改多个 VM 的 fReverseConnectMode 或 fEnableWinStation 模式,可以执行以下两项操作之一 :

从已正常运行的计算机中导出注册表项,并将其导入到需要此更改的所有其他计算机。 创建组策略对象 (GPO) 以便为需要更改的计算机设置注册表项值。

重启会话主机 VM。

打开注册表编辑器。

转到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ClusterSettings”。

在 ClusterSettings 下,找到 SessionDirectoryListener 并确保其数据值为 rdp-sxs“Windows日志”>“应用程序”。 如果看到 ID 为 3389 的事件并且其说明中显示“MissingMethodException: 找不到方法”,则表示 Azure 虚拟桌面代理未成功更新,并且还原到某个早期版本。 此问题可能是因为 VM 上目前安装的 .NET framework 的版本号低于 4.7.2。 若要解决此问题,需要通过按照 .NET Framework 文档中的安装说明操作来将 .NET 升级到版本 4.7.2 或更高版本。

错误:会话主机 VM 停滞在“正在升级”状态

如果为主机池中的会话主机列出的状态始终显示为“不可用”或“正在升级”,则表明代理或堆栈未成功安装。

若要解决此问题,请首先重新安装并行堆栈:

以管理员身份登录到会话主机 VM。

从权限提升的 PowerShell 提示符下运行 qwinsta.exe,并记下 SESSIONNAME 列中 rdp-sxs 旁边显示的版本号。 如果 rdp-tcp 和 rdp-sxs 条目的 STATE 列不是“Listen”,或者 rdp-tcp 和 rdp-sxs 条目根本未列出,则表示存在堆栈问题。

运行以下命令来停止 RDAgentBootLoader 服务:

Stop-Service RDAgentBootLoader

转到“控制面板”>“程序”>“程序和功能”,或在 Windows 11 上转到“设置应用”>“应用”。

卸载“远程桌面服务 SxS 网络堆栈”的最新版本或注册表编辑器内 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations 中的 ReverseConnectionListener 值下列出的版本。

返回到 PowerShell 提示符,运行以下命令,将会话主机 VM 上可用于并行堆栈的最新安装程序的文件路径添加到变量并列出其名称:

$sxsMsi = (Get-ChildItem "$env:SystemDrive\Program Files\Microsoft RDInfra\" | ? Name -like SxSStack*.msi | Sort-Object CreationTime -Descending | Select-Object -First 1).FullName $sxsMsi

运行以下命令,安装会话主机 VM 上可用于并行堆栈的最新安装程序:

msiexec /i $sxsMsi

重启会话主机 VM。

在命令提示符下再次运行 qwinsta.exe,并验证 rdp-tcp 和 rdp-sxs 条目的 STATE 列是否为“Listen”。 如果未显示,则需要重新注册 VM 并重新安装代理组件。

错误:会话主机 VM 停滞在“不可用”状态

如果会话主机 VM 停滞在“不可用”状态,则表示 VM 未通过运行状况检查中列出的运行状况检查之一。 必须解决导致 VM 无法通过运行状况检查的问题。

错误:VM 停滞在“需要帮助”状态

如果会话主机未通过 UrlsAccessibleCheck 运行状况检查,你需要识别部署当前正在阻止哪个必需的 URL。 知道哪个 URL 被阻止后,识别哪个设置正在阻止该 URL,并删除该设置。

服务阻止必需 URL 的原因有两个:

有一个处于活动状态的防火墙阻止了大多数出站流量以及对必需 URL 的访问。 本地 hosts 文件阻止了必需的网站。

若要解决防火墙相关的问题,请添加一个规则,在其中允许出站连接到与被阻止 URL 关联的 TCP 端口 80/443。

如果本地 hosts 文件阻止了必需的 URL,请确保设备上的 Hosts 文件中不包含任何必需的 URL。 可在以下注册表项和值中找到 Hosts 文件位置:

项:HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

类型:REG_EXPAND_SZ

名称:DataBasePath

如果会话主机未通过 MetaDataServiceCheck 运行状况检查,则服务无法访问 IMDS 终结点。 若要解决此问题,需要执行以下操作:

重新配置网络、防火墙或代理设置,以取消阻止 IP 地址 169.254.169.254。 确保 HTTP 客户端在查询 IMDS 时绕过 VM 中的 Web 代理。 我们建议在 VM 内用于处理出站网络流量方向的任何防火墙策略中允许必需的 IP 地址。

如果问题由 Web 代理导致,请在 Web 代理的配置中添加 169.254.169.254 的例外。 若要添加此例外,请打开权限提升的命令提示符或 PowerShell 会话并运行以下命令:

netsh winhttp set proxy proxy-server="http=" bypass-list="169.254.169.254" 错误:找不到连接:RDAgent 没有到中转站的活动连接

会话主机 VM 可能遇到了连接限制,并且无法接受新连接。

若要解决此问题,请执行以下操作之一:

更改最大会话限制。 此更改会确保资源更均匀地分布在会话主机中,并将防止资源耗尽。 增加会话主机 VM 的资源容量。 错误:正在操作 Pro VM 或其他不受支持的 OS

只有 Windows 企业版或 Windows Server SKU 支持并行堆栈,这就意味着 Pro VM 等操作系统不支持。 如果不具有 Enterprise 或 Server SKU,该堆栈将会安装在 VM 上但不会激活,因此,在命令行中运行 qwinsta 时,将不会显示该堆栈。

若要解决此问题,请使用支持的操作系统创建会话主机 VM。

错误:NAME_ALREADY_REGISTERED

会话主机 VM 的名称已经注册,可能是重复项。

若要解决此问题,请执行下列操作:

按照从主机池删除会话主机部分中的步骤进行操作。

再创建一个 VM。 请确保为此 VM 选择独一无二的名称。

转到 Azure 门户并打开 VM 所在的主机池的“概述”页。

打开“会话主机”选项卡,并检查以确保所有会话主机都在该主机池中。

等待 5-10 分钟,让会话主机状态显示为“可用”。

你的问题未在此处列出或未解决

如果在本文中找不到你的问题,或者说明内容没有帮助,建议你卸载、重新安装并重新注册 Azure 虚拟桌面代理。 本部分的说明介绍了如何通过以下方式将会话主机 VM 重新注册到 Azure 虚拟桌面服务:

卸载所有代理、启动加载程序和堆栈组件。

从主机池中移除会话主机。

为 VM 生成新的注册密钥。

重新安装 Azure 虚拟桌面代理和引导加载程序。

如果你遇到以下一个或多个场景,请按照本部分中的这些说明进行操作:

会话主机 VM 的状态停滞为“升级”或“不可用”。 堆栈侦听器不起作用,并且是在 Windows 10 版本 1809、1903 或 1909 上运行。 收到 EXPIRED_REGISTRATION_TOKEN 错误。 未看到会话主机 VM 出现在会话主机列表中。 在“服务”控制台中看不到“远程桌面代理加载程序”服务。 在任务管理器中,RdAgentBootLoader 组件未显示为正在运行的进程。 在自定义映像 VM 上收到“连接中转站无法验证设置”错误。 本文中前面的部分未解决你的问题。 步骤 1:卸载所有代理、启动加载程序和堆栈组件程序

在重新安装代理、引导加载程序和堆栈之前,必须先从 VM 卸载任何现有的组件。 若要卸载所有代理、启动加载程序和堆栈组件程序,请执行以下操作:

以管理员身份登录到会话主机 VM。

转到“控制面板”>“程序”>“程序和功能”,或在 Windows 11 上转到“设置应用”>“应用”。

卸载以下程序,然后重启会话主机 VM:

注意

卸载“远程桌面服务 SxS 网络堆栈”时,系统会提示你应关闭“远程桌面服务”和“远程桌面服务 UserMode 端口重定向程序”。 如果使用 RDP 连接到会话主机 VM,请选择“不要关闭应用程序”,然后选择“确定”,否则 RDP 连接将无法正常工作。

远程桌面代理启动加载程序 远程桌面服务基础结构代理 远程桌面服务基础结构日内瓦代理 远程桌面服务 SxS 网络堆栈

注意

你可能会看到这些程序的多个实例。 请确保将它们全部删除。

步骤 2:从主机池删除会话主机

在从主机池中删除会话主机时,该会话主机不再注册到该主机池。 此更改相当于重置会话主机注册。 若要从主机池删除会话主机,请执行以下操作:

登录 Azure 门户。

在搜索栏中,键入“Azure 虚拟桌面”,然后选择匹配的服务条目。

选择“主机池”,然后选择会话主机 VM 所在主机池的名称。

选择“会话主机”,以查看该主机池中所有会话主机的列表。

查看会话主机列表,并勾选要删除的会话主机旁边的框。

选择“删除” 。

步骤 3:为 VM 生成新的注册密钥

必须生成用于将会话 VM 重新注册到主机池和服务的新注册密钥。 若要为 VM 生成新注册密钥,请执行以下操作:

登录 Azure 门户。

在搜索栏中,键入“Azure 虚拟桌面”,然后选择匹配的服务条目。

选择“主机池”,然后选择会话主机 VM 所在主机池的名称。

在“概述”边栏选项卡上,选择“注册密钥”。

打开“注册密钥”选项卡,然后选择“生成新密钥” 。

输入到期日期,然后选择“确定”。

注意

到期日期可以是自生成时间和日期起最短不少于 1 小时并且最长不超过 27 天的时间和日期。 仅在你需要时才生成注册密钥。

将新生成的密钥复制到剪贴板,或者下载文件。 稍后会需要用到。 步骤 4:重新安装代理和启动加载程序

重新安装最新版本的代理和启动加载程序还会自动安装并行堆栈和 Geneva 监视代理。 若要重新安装代理和启动加载程序,请执行以下操作:

以管理员身份登录会话主机 VM,并为会话主机 VM 运行代理安装程序和引导加载程序:

Azure 虚拟桌面代理

Azure 虚拟桌面代理引导加载程序

提示

对于下载的每个代理和引导加载程序安装程序,可能需要取消阻止它们。 右键单击每个文件并选择“属性”,然后选择“取消阻止”,最后选择“确定”。

在安装程序要求提供注册令牌时,请从剪贴板粘贴注册密钥。

运行该启动加载程序的安装程序。

重启会话 VM。

登录 Azure 门户。

在搜索栏中,输入“Azure 虚拟桌面”,然后选择匹配的服务条目。

选择“主机池”,然后选择会话主机 VM 所在主机池的名称。

选择“会话主机”,以查看该主机池中所有会话主机的列表。

现在,应该会看到在主机池中注册的会话主机,其状态为“可用”。

删除 DisableRegistryTools 注册表项

如果已执行所有四个步骤,但代理仍不起作用,则可能是因为在以下位置之一启用了 DisableRegistryTools 注册表项:

HKU:\DEFAULT\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools = 1 HKU:\S-1-5-18\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools = 1 HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools = 1

此注册表项阻止代理安装并行堆栈,这会导致 installMSIException 错误。 此错误导致会话主机停滞在不可用状态。

若要解决此问题,需要删除注册表项:

从前面列出的三个位置中删除 DisableRegistryTools 项。

从“应用和功能”文件夹中卸载并删除受影响的并行堆栈安装。

删除受影响的并行堆栈的注册表项。

重新启动 VM。

启动代理,让它自动安装并行堆栈。

后续步骤

如果问题仍然存在,请创建支持案例,并包括有关所遇问题的详细信息,以及任何为尝试解决此问题所采取的操作。 以下列表包括了其他可用于排查 Azure 虚拟桌面部署中的问题的资源。

如需大致了解如何排查 Azure 虚拟桌面问题和跟踪升级,请参阅故障排除概述、反馈和支持。 若要排查在 Azure 虚拟桌面环境中创建主机池时的问题,请参阅环境和主机池创建。 若要排查在 Azure 虚拟桌面中配置虚拟机 (VM) 时遇到的问题,请参阅会话主机虚拟机配置。 若要排查 Azure 虚拟桌面客户端连接问题,请参阅 Azure 虚拟桌面服务连接。 若要排查将 PowerShell 与 Azure 虚拟桌面结合使用时遇到的问题,请参阅 Azure 虚拟桌面 PowerShell。 若要详细了解该服务,请参阅 Azure 虚拟桌面环境。 若要完成故障排除教程,请参阅教程:排查资源管理器模板部署问题。 若要了解审核操作,请参阅使用 Resource Manager 执行审核操作。 若要了解部署期间为确定错误需要执行哪些操作,请参阅查看部署操作。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有