VDA 注册
本节介绍
注意:
在本地环境中,VDA 会向交付控制器注册。在 Citrix Cloud 服务环境中,VDA 会向云连接器注册。在混合环境中,一些 VDA 会向交付控制器注册,而另一些则会向云连接器注册。
VDA 投入使用之前,必须向站点中的一个或多个 Controller 或 Cloud Connector 注册(建立通信)。VDA 通过检查一个名为 ListofDDCs 的列表来查找 Controller 或 Connector。VDA 上的 ListOfDDCs 包含将该 VDA 指向站点中的 Controller 或 Cloud Connector 的 DNS 条目。为了实现负载平衡,VDA 会自动将连接分配到列表中的所有 Controller 或 Cloud Connector。
为什么 VDA 注册如此重要?
- 从安全角度来看,注册是一项敏感操作。您正在 Controller 或 Cloud Connector 与 VDA 之间建立连接。对于此类敏感操作,如果一切不完美,则预期行为是拒绝连接。您实际上正在建立两个独立的通信通道:VDA 到 Controller 或 Cloud Connector,以及 Controller 或 Cloud Connector 到 VDA。连接使用 Kerberos,因此时间同步和域成员资格问题是不可原谅的。Kerberos 使用服务主体名称 (SPN),因此您不能使用负载平衡的 IP\主机名。
- 如果您在添加和删除 Controller(或 Cloud Connector)时,VDA 没有准确和最新的 Controller 或 Cloud Connector 信息,则 VDA 可能会拒绝由未列出的 Controller 或 Cloud Connector 代理的会话启动。无效条目可能会延迟虚拟桌面系统软件的启动。VDA 不会接受来自未知和不受信任的 Controller 或 Cloud Connector 的连接。
除了 ListofDDCs 之外,ListOfSIDs(安全 ID)还指示 ListofDDCs 中哪些计算机是受信任的。ListofSIDs 可用于减少 Active Directory 上的负载或避免来自受损 DNS 服务器的潜在安全威胁。有关详细信息,请参阅 ListOfSIDs。
如果 ListofDDCs 指定了多个 Controller 或 Cloud Connector,VDA 会尝试以随机顺序连接到它们。在本地部署中,ListofDDCs 还可以包含 Controller 组。VDA 会尝试连接到组中的每个 Controller,然后才移动到 ListofDDCs 中的其他条目。
Citrix Virtual Apps and Desktops™ 在 VDA 安装期间会自动测试与已配置的控制器或云连接器的连接。如果无法访问控制器或云连接器,则会显示错误。如果您忽略了无法联系控制器或云连接器的警告(或者在 VDA 安装期间未指定控制器或云连接器地址),则会有消息提醒您。
用于配置控制器或云连接器地址的方法
管理员选择 VDA 首次注册(初始注册)时要使用的配置方法。在初始注册期间,VDA 上会创建一个持久缓存。在后续注册期间,除非检测到配置更改,否则 VDA 会从此本地缓存中检索 Controller 或 Cloud Connector 列表。
在后续注册期间检索该列表的最简单方法是使用自动更新功能。自动更新默认启用。有关详细信息,请参阅自动更新。
有多种方法可以在 VDA 上配置控制器或云连接器地址。
- 基于策略(LGPO 或 GPO)
- 基于注册表(手动、组策略首选项 (GPP)、在 VDA 安装期间指定)
- 基于 Active Directory 组织单位(旧版组织单位发现)
- 基于机器创建服务的配置 (personality.ini)
在安装 VDA 时,您可以指定初始注册方法。(如果禁用自动更新,则在 VDA 安装期间选择的方法将用于后续注册。)
下图显示了 VDA 安装向导的交付控制器页面。

基于策略的配置 (LGPO\GPO)
Citrix® 建议使用 GPO 进行初始 VDA 注册。它具有最高优先级。(尽管自动更新被列为最高优先级,但自动更新仅在初始注册后使用。)基于策略的注册提供了使用组策略进行配置的集中化优势。
要指定此方法,请完成以下两个步骤:
- 在 VDA 安装向导的交付控制器页面上,选择稍后执行(高级)。即使您在 VDA 安装期间未指定控制器地址,向导也会多次提醒您指定控制器地址。(VDA 注册非常重要。)
- 通过 Citrix 策略启用或禁用基于策略的 VDA 注册,使用
Virtual Delivery Agent Settings > Controllers设置。(如果安全性是您的首要任务,请使用Virtual Delivery Agent Settings > Controller SIDs设置。)
此设置存储在 HKLM\Software\Policies\Citrix\VirtualDesktopAgent (ListOfDDCs) 下。
基于注册表
要指定此方法,请完成以下步骤之一:
- 在 VDA 安装向导的“交付控制器”页面上,选择“手动执行”。然后,输入已安装的控制器的 FQDN,然后单击“添加”。如果您安装了更多控制器,请添加它们的地址。
- 对于命令行 VDA 安装,请使用 /controllers 选项并指定已安装的控制器或云连接器的 FQDN。
此信息存储在注册表项 HKLM\Software\Citrix\VirtualDesktopAgent 或 HKLM\Software\Wow6432Node\Citrix\VirtualDesktopAgent 下的注册表值 ListOfDDCs 中。
您也可以手动配置此注册表项或使用组策略首选项 (GPP)。此方法可能优于基于策略的方法(例如,如果您希望对不同的控制器或云连接器进行条件处理,例如:对于以 XDW-001- 开头的计算机名称,使用 XDC-001)。
更新 ListOfDDCs 注册表项,其中列出了站点中所有控制器或云连接器的 FQDN。(此项等同于 Active Directory 站点 OU。)
HKEY_LOCAL_MACHINE\Software\Citrix\VirtualDesktopAgent\ListOfDDCs (REG_SZ)
如果 HKEY_LOCAL_MACHINE\Software\Citrix\VirtualDesktopAgent 注册表位置同时包含 ListOfDDCs 和 FarmGUID 项,则 ListOfDDCs 用于控制器或云连接器发现。如果在 VDA 安装期间指定了站点 OU,则存在 FarmGUID。(这可能用于旧版部署。)
(可选)更新 ListOfSIDs 注册表项(有关详细信息,请参阅 ListOfSIDs:
HKEY_LOCAL_MACHINE\Software\Citrix\VirtualDesktopAgent\ListOfSIDs (REG_SZ)
请记住:如果您还通过 Citrix 策略启用了基于策略的 VDA 注册,这将覆盖您在 VDA 安装期间指定的设置,因为它是一种优先级更高的方法。
基于活动目录组织单位(旧版)
此方法主要用于向后兼容,不建议使用。如果您仍在使用此方法,Citrix 建议更改为其他方法。
要指定此方法,请完成以下两个步骤:
- 在 VDA 安装向导的“交付控制器”页面上,选择“从 Active Directory 中选择位置”。
- 使用
Set-ADControllerDiscovery.ps1脚本(在每个控制器上可用)。此外,在每个 VDA 上配置FarmGuid注册表项以指向正确的 OU。此设置可以使用组策略进行配置。
基于 MCS
如果您使用 MCS 预配 VM,MCS 会设置 Controller 或 Cloud Connector 列表。此功能与自动更新配合使用。创建目录时,MCS 会在初始预配期间将 Controller 或 Cloud Connector 列表注入到 Personality.ini 文件中。自动更新会使列表保持最新。
要指定此方法,请在 VDA 安装向导的交付控制器页面上,选择让机器创建服务™执行此操作。
回顾与建议事项
最佳做法如下:
- 在进行初始注册时,建议使用组策略注册方法。
- 使用自动更新(默认启用)使 Controller 列表保持最新。
- 在多区域部署中,使用组策略进行初始配置(至少包含两个 Controller 或 Cloud Connector)。将 VDA 指向其区域本地的 Controller 或 Cloud Connector。使用自动更新使其保持最新。自动更新会自动优化卫星区域中 VDA 的
ListofDDCs。 -
在
ListOfDDCs注册表项上列出多个 Controller,用空格或逗号分隔,以防止在 Controller 不可用时出现注册问题。例如:DDC7x.xd.local DDC7xHA.xd.local 32-bit: HKEY_LOCAL_MACHINE \Software\Citrix\VirtualDesktopAgent\ListOfDDCs HKEY_LOCAL_MACHINE \Software\Citrix\VirtualDesktopAgent\ListOfDDCs (REG_SZ) <!--NeedCopy--> - 确保
ListofDDCs下列出的所有值都映射到有效的完全限定域名,以防止启动注册延迟。
自动更新
自动更新(在 XenApp and XenDesktop 7.6 中引入)默认启用。它是使 VDA 注册保持最新状态的最有效方法。尽管不用于初始注册,但自动更新软件会在初始注册发生时将 ListofDDCs 下载并存储在 VDA 上的持久缓存中。此过程针对每个 VDA 执行。缓存还包含计算机策略信息,这可确保策略设置在重新启动后仍保留。
使用 MCS 或 Citrix Provisioning™ 预配计算机时支持自动更新,但 Citrix Provisioning 服务器端缓存除外。服务器端缓存不是常见方案,因为自动更新缓存没有持久存储。
要指定此方法:
- 通过包含设置
Virtual Delivery Agent Settings > Enable auto update of Controllers的 Citrix 策略启用或禁用自动更新。此设置默认启用。
工作原理:
- 每次 VDA 重新注册(例如,在计算机重新启动后),缓存都会更新。每个 Controller 或 Cloud Connector 还会每 90 分钟检查一次站点数据库。如果自上次检查以来添加或删除了 Controller 或 Cloud Connector,或者发生了影响 VDA 注册的策略更改,则 Controller 或 Cloud Connector 会向其注册的 VDA 发送更新列表,并且缓存会更新。VDA 接受来自其最新缓存列表中的所有 Controller 或 Cloud Connector 的连接。
- 如果 VDA 收到的列表中不包含其已注册的控制器或云连接器(换句话说,该控制器或云连接器已从站点中移除),VDA 将重新注册,并从
ListofDDCs中的控制器或云连接器中进行选择。
示例:
- 一个部署包含三个控制器:A、B 和 C。VDA 注册到控制器 B(该控制器在 VDA 安装期间指定)。
- 稍后,将两个 Controller(D 和 E)添加到站点。在 90 分钟内,VDA 会收到更新列表,然后接受来自 Controller A、B、C、D 和 E 的连接。(在 VDA 重新启动之前,负载不会均匀分布到所有 Controller。)
- 再后来,Controller B 被移动到另一个站点。在 90 分钟内,原始站点中的 VDA 会收到更新列表,因为自上次检查以来 Controller 发生了更改。最初注册到 Controller B 的 VDA(该 Controller 不再在列表中)会重新注册,从当前列表中的 Controller(A、C、D 和 E)中进行选择。
在多区域部署中,卫星区域中的自动更新功能会首先自动缓存所有本地 Controller。主区域中的所有 Controller 都缓存在备份组中。如果卫星区域中没有可用的本地 Controller,则会尝试向主区域中的 Controller 注册。
如下例所示,缓存文件包含主机名和安全 ID 列表 (ListofSIDs)。VDA 不查询 SID,这减少了 Active Directory 负载。

您可以使用 WMI 调用检索缓存文件。但是,它存储在只有 SYSTEM 帐户才能读取的位置。
重要提示:
此信息仅用于提供参考。请勿对本文件进行任何修改。对本文件或本文件夹进行的任何修改,都将导致配置不受支持。
Get-WmiObject -Namespace "Root\Citrix\DesktopInformation" -Class "Citrix_VirtualDesktopInfo" -Property "PersistentDataLocation"
如果您出于安全原因(与减少 Active Directory 负载不同)需要手动配置 ListofSIDs,则无法使用自动更新功能。有关详细信息,请参阅 ListOfSIDs。
自动更新优先级的例外
尽管自动更新通常在所有 VDA 注册方法中具有最高优先级并覆盖其他方法的设置,但存在一个例外。缓存中的 NonAutoListOfDDCs 元素指定了初始 VDA 配置方法。自动更新会监控此信息。如果初始注册方法发生更改,注册过程将跳过自动更新,并使用下一个最高优先级的配置方法。当您将 VDA 移动到另一个站点时(例如,在灾难恢复期间),此过程会很有帮助。
配置方面的考量
查看常见的 VDA 注册配置。
查看 VDA 注册步骤。
配置可能影响 VDA 注册的项目时,请考虑以下事项。
控制器或云连接器地址
无论您使用哪种方法指定控制器或云连接器,Citrix 都建议使用 FQDN 地址。IP 地址不被视为受信任的配置,因为 IP 比 DNS 记录更容易受到攻击。如果您手动填充 ListofSIDs,则可以在 ListofDDCs 中使用 IP。但是,仍然建议使用 FQDN。
负载平衡
如前所述,VDA 会自动将连接分配到 ListofDDCs 中的所有控制器或云连接器。故障转移和负载平衡功能内置于 Citrix 代理协议 (CBP) 中。如果您在配置中指定了多个控制器或云连接器,则注册会在需要时自动在它们之间进行故障转移。启用自动更新后,所有 VDA 都会自动进行故障转移。
出于安全原因,您不能使用网络负载平衡器,例如 Citrix ADC。VDA 注册使用 Kerberos 相互身份验证,其中客户端 (VDA) 必须向服务 (控制器) 证明其身份。但是,控制器或云连接器也必须向 VDA 证明其身份。这意味着 VDA 和控制器或云连接器同时充当服务器和客户端。如本文开头所述,存在两个通信通道:VDA 到控制器/云连接器,以及控制器/云连接器到 VDA。
此过程中的一个组件称为服务主体名称 (SPN),它作为属性存储在 Active Directory 计算机对象中。当您的 VDA 连接到控制器或云连接器时,它必须指定要与之通信的对象。此地址是一个 SPN。如果您使用负载平衡 IP,Kerberos 相互身份验证会正确识别该 IP 不属于预期的控制器或云连接器。
有关详细信息,请参阅:
- 克贝罗斯简介
- 使用 Kerberos 进行相互身份验证(https://docs.microsoft.com/zh-cn/windows-server/security/kerberos/kerberos-authentication-overview)
自动更新取代 CNAME
自动更新功能取代了 XenApp 和 XenDesktop 7.x 之前版本中的 CNAME (DNS 别名) 功能。从 XenApp 和 XenDesktop 7 开始,CNAME 功能已禁用。请使用自动更新而不是 CNAME。(如果必须使用 CNAME,请参阅 CTX137960。为了使 DNS 别名一致工作,请勿同时使用自动更新和 CNAME。)
控制器/云连接器组
在某些情况下,您可能希望将 Controller 或 Cloud Connector 分组处理,其中一个组是首选组,如果所有 Controller/Cloud Connector 都失败,则使用另一个组进行故障转移。请记住,Controller 或 Cloud Connector 是从列表中随机选择的,因此分组有助于强制优先使用。
这些组旨在用于单个站点(而非多个站点)内。
使用括号指定控制器/云连接器组。例如,对于四个控制器(两个主控制器和两个备份控制器),分组可能如下所示:
(XDC-001.cdz.lan XDC-002.cdz.lan) (XDC-003.cdz.lan XDC-004.cdz.lan)
在此示例中,首先处理第一个组中的 Controller(001 和 002)。如果两者都失败,则处理第二个组中的 Controller(003 和 004)。
对于 XenDesktop 7.0 或更高版本,您需要执行一个额外步骤才能使用 注册组 功能。您需要从 Studio 禁止 启用 Controller 自动更新 策略。
SID 列表
VDA 可以联系以进行注册的 Controller 列表是 ListofDDCs。VDA 还必须知道要信任哪些 Controller;VDA 不会自动信任 ListofDDCs 中的 Controller。ListofSIDs(安全 ID)标识受信任的 Controller。VDA 仅尝试向受信任的 Controller 注册。
在大多数环境中,ListofSIDs 是从 ListofDDCs 自动生成的。您可以使用 CDF 跟踪来读取 ListofSIDs。
通常,无需手动修改 ListofSIDs。有几个例外。前两个例外不再有效,因为已有更新的技术可用。
-
控制器角色分离: 在 XenApp 和 XenDesktop 7.7 中引入区域之前,当仅使用部分控制器进行注册时,需要手动配置
ListofSIDs。例如,如果您使用 XDC-001 和 XDC-002 作为 XML 代理,并使用 XDC-003 和 XDC-004 进行 VDA 注册,则需要在ListofSIDs中指定所有控制器,并在ListofDDCs中指定 XDC-003 和 XDC-004。这不是典型或推荐的配置。请勿在较新的环境中使用此配置。请改用区域。 -
减少 Active Directory 负载: 在 XenApp 和 XenDesktop 7.6 中引入自动更新功能之前,使用
ListofSIDs来减少域控制器上的负载。通过预填充ListofSIDs,可以跳过从 DNS 名称到 SID 的解析。但是,自动更新功能消除了此工作的需要,因为此持久缓存包含 SID。Citrix 建议保持自动更新功能启用。 - 安全性: 在某些高度安全的环境中,手动配置受信任控制器的 SID,以避免受损 DNS 服务器可能带来的安全威胁。但是,如果执行此操作,则还必须禁用自动更新功能。否则,将使用持久缓存中的配置。
因此,除非有特殊原因,否则请勿修改 ListofSIDs。
如果必须修改 ListofSIDs,请在 HKLM\Software\Citrix\VirtualDesktopAgent 下创建一个名为 ListOfSIDs (REG_SZ) 的注册表项。该值是受信任 SID 的列表,如果有多个,则用空格分隔。
在以下示例中,一个控制器用于 VDA 注册 (ListofDDCs),但两个控制器用于代理 (List OfSIDs)。

VDA 注册期间的控制器搜索
当 VDA 尝试注册时,代理代理首先在本地域中执行 DNS 查找,以确保可以访问指定的控制器。
如果初始查找未找到控制器,代理代理可以在 AD 中启动回退自上而下查询。该查询会搜索所有域,并频繁重复。如果控制器地址无效(例如,管理员在安装 VDA 时输入了不正确的 FQDN),则该查询的活动可能会导致域控制器上出现分布式拒绝服务 (DDoS) 情况。
以下注册表项控制代理代理在初始搜索期间无法找到控制器时是否使用回退自上而下查询。
HKEY_LOCAL_MACHINE\Software\Citrix\VirtualDesktopAgent
- 名称:
DisableDdcWildcardNameLookup - 类型:
DWORD - 值:
0(默认)或任何非零值
当设置为 0 时,启用回退搜索。如果控制器初始搜索失败,则启动回退自上而下搜索。这是默认行为。但是,如果设置为任何非零值,则禁用回退搜索。如果控制器初始搜索失败,Broker Agent 将停止查找。
使用只读域控制器进行 VDA 注册期间的 LDAP 绑定序列
当 VDA 向只读域控制器 (RODC) 注册时,Broker Agent 必须选择要忽略的轻型目录访问协议 (LDAP) 绑定。为了进行此选择,Broker Agent 需要一个合适的注册表项。
如果未提供注册表项,或者注册表项字段为空,则 VDA 向 RODC 注册所需时间会更长,因为它需要通过原始 LDAP 绑定序列。
要修改 LDAP 绑定序列,已将注册表项 ListofIgnoredBindings 添加到 HKEY_LOCAL_MACHINE\Software\Policies\Citrix\VirtualDesktopAgent。使用 ListofIgnoredBindings 可以根据需要修改 LDAP 绑定序列,从而加快 VDA 向 RODC 注册的速度。
- 名称:
ListofIgnoredBindings - 类型:
REG_SZ - 可能的值包括以下各项:
DefaultPath、DomainPath、PDCPath
该值是绑定路径选项的列表,每个选项之间用逗号分隔。注册表项将忽略任何它不识别为有效的值。
排查 VDA 注册问题
如前所述,VDA 必须向 Delivery Controller 或 Cloud Connector 注册,才能在启动代理会话时被考虑。未注册的 VDA 可能导致原本可用的资源利用不足。VDA 未注册的原因有很多,其中许多管理员都可以进行排查。Studio 在目录创建向导中以及创建交付组后提供故障排除信息。
-
在计算机目录创建期间识别问题: 在目录创建向导中,添加现有计算机后,计算机帐户名称列表会指示每台计算机是否适合添加到目录。将鼠标悬停在每台计算机旁边的图标上,以显示有关该计算机的信息性消息。
如果消息识别出有问题的计算机,您可以删除该计算机(使用删除按钮),或者添加该计算机。例如,如果消息指示未获取有关某台计算机的信息(可能是因为它从未注册),您仍然可以选择添加该计算机。
目录的功能级别控制目录中计算机可用的产品功能。使用新产品版本中引入的功能可能需要新的 VDA。设置功能级别可使该版本中引入的所有功能(以及之后版本中引入的功能,如果功能级别未更改)可用于目录中的计算机。但是,该目录中 VDA 版本较早的计算机将无法注册。
-
创建交付组后识别问题: 创建交付组后,Studio 会显示与该组关联的计算机的详细信息。
交付组的详细信息窗格会显示应注册但未注册的计算机数量。换句话说,可能有一台或多台计算机已开机且未处于维护模式,但当前未向控制器注册。查看“未注册但应注册”的计算机时,请检查详细信息窗格中的故障排除选项卡,以了解可能的原因和建议的纠正措施。
VDA 注册故障排除的更多信息
-
有关功能级别的更多信息,请参阅 VDA 版本和功能级别。
-
有关 VDA 注册故障排除的更多信息,请参阅 CTX136668。
-
您还可以使用 Citrix Scout 运行状况检查来排查 VDA 注册和会话启动问题。有关详细信息,请参阅 关于运行状况检查。