本地主机缓存
本文提供了本地主机缓存 (LHC) 功能的全面概述,重点介绍其保持业务连续性的能力。本文解释了LHC在正常运行期间以及LHC模式激活时的功能。此外,本文还提供了配置检查、故障排除、用于LHC管理的PowerShell命令以及LHC运行状况事件日志监控的指导。
概述
当云连接器因网络中断或Citrix Cloud出现问题而失去与Citrix Cloud™的连接时,LHC可保持最终用户对应用程序和桌面的访问。当LHC模式激活时,活动会话不受影响,新会话通过在云连接器上运行的LHC代理进行代理。
LHC默认启用,但确保您的环境为LHC正确配置非常重要。尽管配置错误可能不会中断正常的代理,但它们会阻碍LHC性能,从而在LHC模式处于活动状态时对最终用户造成中断。为确保LHC功能正常,请在Studio中检查您的区域节点,以查找Citrix检测到的与区域相关的错误和警告。此外,请查阅检查弹性配置指南和避免可能对DaaS弹性产生负面影响的常见配置错误文章,以获取全面的LHC配置清单。
重要:
仅当云连接器从StoreFront接收流量或启用了服务连续性时,LHC才会启用。有关服务连续性如何使用本地主机缓存来在服务中断期间保持用户对应用程序和桌面的访问的更多信息,请参阅服务连续性。
-
工作原理
- 在正常运行期间,云连接器上的远程代理提供程序服务与Citrix Cloud通信以执行所有代理操作。Citrix配置同步器服务 (CSS) 定期检查Citrix Cloud中的配置更改,并将此数据同步到云连接器上的LHC代理。如果云连接器失去与Citrix Cloud的连接或Citrix Cloud出现问题,则LHC模式将激活并确保继续访问应用程序和桌面。
正常代理操作期间

- 云连接器上的Citrix远程代理提供程序服务接受来自StoreFront的连接请求。远程代理提供程序服务与Citrix Cloud通信,以将用户与已在Citrix Cloud注册的VDA连接。
- CSS大约每5分钟检查一次Citrix Cloud中的云代理,以查看是否进行了任何配置更改。这些更改可以是管理员发起的(例如更改交付组属性),也可以是系统操作(例如计算机分配)。
-
如果自上次检查以来发生了配置更改,CSS会将信息同步到云连接器上的LHC代理。(LHC代理也称为高可用性服务或HA代理)。
-
所有配置数据都会被复制,而不仅仅是自上次检查以来发生更改的项目。CSS将配置数据导入到云连接器上的Microsoft SQL Server Express LocalDB数据库中。此数据库称为本地主机缓存数据库。CSS确保本地主机缓存数据库中的信息与Citrix Cloud中站点数据库中的信息匹配。
安装云连接器时会自动安装Microsoft SQL Server Express LocalDB(由LHC数据库使用)。LHC数据库不能在云连接器之间共享。您无需备份LHC数据库。每次检测到配置更改时,都会重新创建它。
- 如果自上次检查以来未发生任何更改,则不会复制配置数据。
LHC模式激活时

- LHC代理开始侦听连接信息并处理连接请求。
- 当云连接器首次失去与Citrix Cloud的连接时,LHC代理没有当前的VDA注册数据,但当VDA与其通信时,会触发注册过程。在此过程中,LHC代理还会获取该VDA的当前会话信息。
-
当LHC代理正在处理连接时,远程代理提供程序服务会继续监控与Citrix Cloud的连接。连接恢复后,远程代理提供程序服务会指示LHC代理停止侦听连接信息,Citrix Cloud会恢复代理操作。下次VDA通过远程代理提供程序服务与Citrix Cloud通信时,会触发注册过程。LHC代理会删除LHC模式激活时剩余的任何VDA注册。当CSS得知Citrix Cloud中发生了配置更改时,它会恢复同步信息。
- 万一LHC在同步期间启动,则会丢弃当前导入,并使用上次已知的配置。
事件日志指示同步发生和LHC模式激活的时间。
-
对LHC模式下的操作没有时间限制。
-
您还可以手动触发LHC模式。有关这样做的原因和方法,请参阅强制LHC模式。
具有多个云连接器的区域
- 除其他任务外,CSS还会定期向LHC代理提供有关区域中所有云连接器的信息。有了这些信息,每个LHC代理都会了解区域中其他云连接器上运行的所有对等LHC代理。
LHC代理通过单独的通道相互通信。这些代理使用其运行所在计算机的FQDN名称的字母顺序列表来确定(选举)哪个LHC代理将在区域进入LHC模式时代理区域中的操作。在LHC模式期间,所有VDA都会重新注册到选定的LHC代理。区域中未选定的LHC代理会主动拒绝传入的连接和VDA注册请求。
重要提示:
区域内的连接器必须能够通过以下地址相互访问:
http://<FQDN_OF_PEER_CONNECTOR>:80/Citrix/CdsController/ISecondaryBrokerElection。如果连接器无法通过此地址进行通信,则可能会选举出多个代理,并且在 LHC 模式下会发生启动失败。
-
在 LHC 模式下,如果 Cloud Connector 重新启动或 LHC 代理失败:
- 如果该 Cloud Connector 不是选定的 LHC 代理,则重新启动不会产生任何影响。
- 如果该 Cloud Connector 是选定的 LHC 代理,则会选举下一个 Cloud Connector 上的 LHC 代理,从而导致 VDA 注册。选举顺序基于 Cloud Connector FQDN 的字母顺序。一旦 LHC 代理再次变为活动状态,LHC 操作将在按字母顺序排列的第一个连接器上继续,这可能导致 VDA 再次注册。在这种情况下,注册期间的性能可能会受到影响。
有关 LHC 代理选举相关事件的更多信息,请参阅事件日志。
本地主机缓存数据内容
LHC 数据库包含以下数据,这些数据是主数据库中数据的子集:
- 被授予站点发布资源权限的用户和组的身份。
- 当前正在使用或最近使用过站点发布资源的用户身份。
- 在站点中配置的 VDA 计算机(包括远程 PC 访问计算机)的身份。
- 正在主动用于连接到已发布资源的客户端 Citrix Workspace™ 应用程序计算机的身份(名称和 IP 地址)。
它还包含在 LHC 模式下建立的当前活动连接的以下信息:
- Citrix Workspace 应用程序执行的任何客户端计算机端点分析结果。
- 涉及站点的基础架构计算机(例如 Citrix Gateway 和 StoreFront 服务器)的身份。
- 用户最近活动的日期、时间以及类型
本地主机缓存状态
在进入和退出 LHC 模式的整个周期中,存在多种状态。下图描述了进入和退出 LHC 模式的状态。

- 在正常工作状态下,所有组件都运行正常,所有代理事务都由云代理处理。 - - CSS 正在积极地将配置从云代理复制到 Cloud Connector。
如果任何健康检查失败,Cloud Connector 将转换为待定 HA 状态。在此状态下,将启动全面的健康检查以确定下一步操作。连接器与区域中的其他连接器交互以确定其健康状况。
- 从待定 HA 转换为初始 HA 的决定基于给定区域中所有连接器的健康状况。如果健康检查成功,连接器/控制器将转换回正常工作状态。或者,如果健康检查持续失败,连接器/控制器将转换为初始 HA 状态。
- 在初始 HA 状态下,选定连接器上的 LHC 代理接管代理职责。当前区域中所有以前注册的 VDA 现在将向 Cloud Connector 上的 LHC 代理注册。所有 VDA 重新向 HA 服务注册可能需要长达 5 分钟。在初始 HA 结束时,将启动健康检查。如果所有健康检查都成功,则状态转换为待定恢复,否则状态转换为扩展 HA。
- 在扩展 HA 期间,健康检查会持续进行。当健康检查在扩展 HA 期间成功时,状态将转换为待定恢复。连接器保持在扩展 HA 状态没有最长时间限制。
-
待定恢复作为缓冲期,以确保服务在退出 LHC 模式之前完全健康。如果在待定恢复期间任何健康检查失败,则状态将转换回扩展 HA。
- 如果在整个 10 分钟的待定恢复期间所有健康检查都成功,则状态将转换为正常工作。通过此转换,LHC 模式结束,并且区域中所有已向 LHC 代理注册的 VDA 现在将重新向云代理注册。此重新注册可能再次需要长达 5 分钟。
LHC 模式下的重要注意事项
在 LHC 模式下,请考虑以下影响:
- |方面|LHC 模式下的影响|
| Studio 访问 | 可能无法访问,具体取决于中断的性质。在 LHC 模式下运行的区域中的 VDA 在 Studio 中显示为未注册,因为它们已向 LHC 代理注册。 |
| 远程 PowerShell SDK 访问
|
访问受限。
设置 SDK 身份验证:运行 Get-XDAuthentication -ProfileName WindowsCurrentUser 以防止 SDK 代理重定向 cmdlet 调用。进行这些更改后,您可以使用所有 Get-Broker cmdlet。
注意:在初始 cmdlet 调用中包含 -AdminAddress localhost:89 参数。
示例: Get-BrokerMachine -AdminAddress localhost:89
|
| 监控数据 | LHC 模式处于活动状态时,监控功能不显示活动。监控数据的一个子集可在 Monitor 中趋势页面的本地主机缓存控制板中找到。 |
| 虚拟机管理程序凭据 | 无法从主机服务获取。处于未知电源状态的计算机无法进行电源操作。已开机的 VM 可用于连接。 |
| 分配的计算机 | 仅在正常操作期间分配的计算机才可用。在 LHC 模式下无法进行新分配。 |
| 远程 PC 访问计算机 | 不支持自动注册和配置。在正常操作期间注册和配置的计算机可用。 |
| 服务器托管的应用程序和桌面会话限制 | 如果资源位于不同的区域,用户使用的会话可能超出其配置的会话限制。 |
| 区域行为 | 每个区域独立运行。如果启用了 StoreFront 高级健康检查功能,StoreFront 能够在 LHC 模式下将启动请求路由到相应的区域,并避免会话启动失败。 |
| 计划的 VDA 重启 | 如果 LHC 模式在交付组中 VDA 的计划重启开始之前进入,则重启将在 LHC 模式退出且正常代理操作恢复时开始,这可能导致区域退出 LHC 模式时发生意外重启。有关可能改变此行为的更多信息和配置,请参阅由于数据库中断而延迟的计划重启。 |
| 区域首选项 | 区域首选项配置不用于会话启动。 |
| 标记限制 | 对于具有多个区域中 VDA 的交付组,如果标记的 VDA 不存在于所有区域中,则标记限制可能导致启动失败。 |
注意:
从 2025 年 6 月起,用于 SDK 身份验证的
$XDSDKAuth已弃用。有关详细信息,请参阅弃用。
应用程序和桌面支持
-
LHC 支持以下类型的 VDA 和交付模型:
-
VDA 类型 交付模型 LHC 模式下的 VDA 可用性 - |—|—|—|
| 多会话操作系统 | 应用程序和桌面 | 始终可用。 |
| 单会话操作系统静态(已分配) | 桌面 | 始终可用。 |
| 电源管理的单会话操作系统随机(池化) | 桌面 | 默认情况下仅可用于一个会话。 |
您可以将它们配置为在 LHC 期间始终可用于新会话。有关详细信息,请参阅使用 Studio 启用和使用 PowerShell 启用。
-
重要提示: 启用对电源管理型单会话池化计算机的访问可能会导致来自先前用户会话的数据和更改出现在后续会话中。
注意:
在池化交付组中启用对电源管理型桌面 VDA 的访问不会影响配置的
ShutdownDesktopsAfterUse属性在正常操作期间的工作方式。当在 LHC 期间启用对这些桌面的访问时,VDA 在返回正常代理操作后不会自动重新启动。池化交付组中的电源管理型桌面 VDA 可以保留来自先前会话的数据,直到 VDA 重新启动。当用户在非 LHC 操作期间注销 VDA 或管理员重新启动 VDA 时,可能会发生 VDA 重新启动。
使用 Studio 启用电源管理型单会话 OS 池化 VDA 的 LHC
使用 Studio,您可以按交付组使这些计算机在 LHC 模式期间可用于新连接:
- 要在交付组创建期间启用此功能,请参阅[创建交付组](/zh-cn/citrix-daas/install-configure/delivery-groups-create#local-host-cache-mode-page)。
- 要为现有交付组启用此功能,请参阅[管理交付组](/zh-cn/citrix-daas/install-configure/delivery-groups-manage#enable-local-host-cache-for-single-session-pooled-vdas)
注意:
此设置仅在 Studio 中适用于提供电源管理型 VDA 的池桌面交付组。
使用 PowerShell 为电源管理型单会话操作系统池 VDA 启用 LHC
要为特定交付组中的 VDA 启用 LHC,请执行以下步骤:
-
通过运行以下命令在站点级别启用此功能:
Set-BrokerSite -ReuseMachinesWithoutShutdownInOutageAllowed $true <!--NeedCopy--> -
通过运行以下命令并指定交付组名称,为交付组启用 LHC:
Set-BrokerDesktopGroup -Name "name" -ReuseMachinesWithoutShutdownInOutage $true <!--NeedCopy-->
要更改新创建的电源管理型 VDA 池交付组的默认 LHC 可用性,请运行以下命令:
Set-BrokerSite -DefaultReuseMachinesWithoutShutdownInOutage $true
<!--NeedCopy-->
注意:
更改默认设置不会更改现有交付组的设置,并且仅影响使用 PowerShell 创建的交付组。
StoreFront 配置
如果使用本地 StoreFront 部署,请查看以下内容:
- 如果使用负载平衡虚拟服务器,请将虚拟服务器配置为根据代理功能监视连接器(例如,在 NetScaler® 上使用内置的 CITRIX-XD-DDC 监视器进行连接器负载平衡)。
- 将单个云租户中的所有 Cloud Connector 作为单个资源源包含在 StoreFront 中。
- 在 StoreFront 中查看 NetScaler Gateway 配置,并确保所有连接器都列为 STA 服务器。查看 NetScaler 设备,并确保 StoreFront 中列出的所有 STA 在 NetScaler Gateway 虚拟服务器中采用相同的格式。STA 服务运行状况也可以在 Gateway 虚拟服务器中进行监视。
- 将所有连接器添加到 StoreFront 中的资源源,并确保 StoreFront 可以通过资源源中指定的端口与所有 Cloud Connector 进行通信。
注意:
> 对于拥有大量连接器的客户,为每个区域配置负载平衡虚拟服务器可能有助于减少管理开销并简化故障排除。有关详细信息,请参阅 [Citrix TIPs: 集成 Citrix Virtual Apps and Desktops 服务和 StoreFront](https://www.citrix.com/blogs/2021/05/05/citrix-tips-integrating-citrix-virtual-apps-and-desktops-service-and-storefront/)。
验证本地主机缓存是否正常工作
要验证 LHC 是否已正确设置并正常工作:
- 确保同步导入成功完成。有关如何监视 LHC 同步的更多信息,请查看事件日志。
- 确保已在每个 Cloud Connector 上创建本地主机缓存数据库。这确认了高可用性服务可以在需要时接管。
- 在 Cloud Connector 服务器上,浏览到
c:\Windows\ServiceProfiles\NetworkService。 - 验证是否已创建
HaDatabaseName.mdf和HaDatabaseName_log.ldf。
- 在 Cloud Connector 服务器上,浏览到
- 在区域中的所有 Cloud Connector 上强制执行 LHC 模式:验证本地主机缓存正常工作后,请记住将所有 Cloud Connector 恢复到正常模式。有关退出 LHC 模式所需时间的更多信息,请参阅本地主机缓存状态。
监视本地主机缓存
事件日志
事件日志提供有关 LHC 运行状况和性能的关键信息。
配置同步器服务
在正常操作期间,当 CSS 使用 LHC 代理将配置数据导入 LHC 数据库时,可能会发生以下事件。
| 事件 ID | 描述 |
|---|---|
| 503 | 指示 CSS 收到更新的配置。每次从 Citrix Cloud 收到更新的配置时,都会发生此事件。这表示同步过程的开始。 |
| 504 | 指示 CSS 导入了更新的配置。配置导入成功完成。 |
| 505 | 指示 CSS 导入失败。配置导入未成功完成。如果存在以前成功的配置,则在进入 LHC 模式时将使用该配置。但是,它将与当前配置不同步。如果没有可用的以前配置,则该服务在 LHC 模式期间无法参与会话代理。在这种情况下,请参阅故障排除部分,并联系 Citrix 支持。 |
| 507 | 指示 CSS 放弃了导入,因为系统处于 LHC 模式,并且正在使用 LHC 代理进行代理。服务收到了新配置,但由于进入了 LHC 模式而放弃了导入。这是预期行为。 |
| 510 | 指示未从主配置服务接收到 CSS 配置数据。 |
| 517 | 指示与主代理服务通信时出现问题。 |
| 518 | 指示 CSS 脚本中止,因为 LHC 代理(高可用性服务)未运行。 |
高可用性服务
此服务也称为 LHC 代理。
| 事件 ID | 描述 |
|---|---|
| 3502 | 表示发生中断,LHC 代理正在执行代理操作。 |
| 3503 | 表示中断已解决,正常操作已恢复。 |
| 3504 | 表示已选定的 LHC 代理以及参与选举的其他 LHC 代理。 |
| 3507 | 表示 LHC 模式在选定的 LHC 代理上处于活动状态。包含中断摘要,包括中断持续时间、VDA 注册和会话信息。 |
| 3508 | 表示 LHC 在选定的 LHC 代理上不再处于活动状态,并且正常操作已恢复。包含中断摘要,包括中断持续时间、LHC 事件期间注册的计算机数量以及 LHC 模式期间成功启动的数量。 |
| 3509 | 表示 LHC 在未选定的 LHC 代理上处于活动状态。每 2 分钟包含一次中断持续时间,并指示选定的 LHC 代理。 |
| 3510 | 表示 LHC 在未选定的 LHC 代理上不再处于活动状态。包含中断持续时间,并指示选定的 LHC 代理。 |
远程代理提供程序
此服务充当 Citrix Cloud 与您的 VDA 和 Cloud Connector 之间的代理。
| 事件 ID | 描述 |
|---|---|
| 3001 | 首次检测到导致 Cloud Connector 进入 Pending HA(待定 HA)状态的故障。运行状况检查开始评估故障是瞬态还是持久性故障。在 Pending HA(待定 HA)状态的分配时间过后,最新的运行状况检查结果会指示是否需要进入 LHC 模式,或者是否可以恢复正常操作。 |
| 3002 | 表示 Cloud Connector 无法进入 LHC 模式。原因包含在事件信息中。 |
| 3003
|
表示 Cloud Connector 正在转换 LHC 模式状态。该事件提供以下详细信息:
|
-
^^ ^^ - 正在转换到的状态 -
^^ ^^ - 上一个状态的持续时间
注意:
您的 Cloud Connector 上全天定期发生的 3001 事件通常无需担忧。但是,如果它们每小时发生多次,则表明存在网络问题,可能需要进一步调查。
-
Citrix Monitor
Citrix Monitor 包含有关您环境中不同区域的 LHC 模式条目和性能的集中信息。

有关详细信息,请参阅监视站点的历史趋势。
强制本地主机缓存模式
在以下情况下,您可能需要有意强制本地主机缓存模式:
- 如果您的网络反复出现故障:强制 LHC 直到网络问题解决,可防止在正常模式和 LHC 模式之间持续转换(以及由此导致的频繁 VDA 注册风暴)。
- 测试灾难恢复计划。
- 帮助确保本地主机缓存正常工作。
要强制 LHC 模式:
-
在
HKLM\Software\Citrix\DesktopServer\LHC中编辑每个 Cloud Connector 服务器的注册表:创建OutageModeForced并将其设置为 REG_DWORD1。- 将值设置为
1会指示 LHC 代理进入 LHC 模式,无论与 Citrix Cloud 的连接状态如何。 - 将值设置为
0会指示 LHC 代理退出 LHC 模式并恢复正常操作。
- 将值设置为
要验证事件:
- 监视
C:\ProgramData\Citrix\workspaceCloud\Logs\Plugins\HighAvailabilityService中的Current_HighAvailabilityService日志文件。
解决同步导入失败问题
当同步导入 LHC 数据库失败并记录 505 事件时,您可以使用以下故障排除工具:
- CDF 跟踪:
- 为
ConfigSyncServer和BrokerLHC模块启用跟踪。 - 与其他代理模块一起使用以识别问题。
- 为
- CSS 跟踪报告:
-
生成详细报告,精确定位导致同步失败的对象。
注意:
启用此报告可能会影响同步速度。在不主动进行故障排除时将其禁用。
要启用和生成 CSS 跟踪报告:
-
启用报告:运行以下命令:
New-ItemProperty -Path HKLM:\SOFTWARE\Citrix\DesktopServer\LHC -Name EnableCssTraceMode -PropertyType DWORD -Value 1 <!--NeedCopy--> -
定位报告:HTML 报告生成在
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp\CitrixBrokerConfigSyncReport.html。 -
禁用报告:报告生成后,运行以下命令禁用报告功能:
Set-ItemProperty -Path HKLM:\SOFTWARE\Citrix\DesktopServer\LHC -Name EnableCssTraceMode -Value 0 <!--NeedCopy-->
-
本地主机缓存 PowerShell 命令
您可以使用 PowerShell 命令在您的 Cloud Connector 上管理本地主机缓存。
PowerShell 模块位于 Cloud Connector 上的以下位置:
C:\Program Files\Citrix\Broker\Service\ControlScripts
重要提示:
仅在 Cloud Connector 上运行此模块。
导入 PowerShell 模块
要在您的 Cloud Connector 上导入模块,请运行以下命令:
Import-Module "C:\Program Files\Citrix\Broker\Service\ControlScripts\HighAvailabilityServiceControl.psm1
<!--NeedCopy-->
管理 LHC 的 PowerShell 命令
以下 cmdlet 可帮助您在 Cloud Connector 上激活和管理 LHC 模式。
| Cmdlet | 功能 |
|---|---|
Enable-LhcForcedOutageMode |
将 Broker 置于 LHC 模式。本地主机缓存数据库文件必须已由 CSS 成功创建,Enable-LhcForcedOutageMode 才能正常运行。此 cmdlet 仅强制在其上运行的 Cloud Connector 启用 LHC。要使 LHC 处于活动状态,必须在区域内的所有 Cloud Connector 上运行此 cmdlet。 |
Disable-LhcForcedOutageMode |
使 Broker 退出 LHC 模式。此 cmdlet 仅禁用在其上运行的 Cloud Connector 上的 LHC 模式。必须在区域内的所有 Cloud Connector 上运行 Disable-LhcForcedOutageMode。 |
Set-LhcConfigSyncIntervalOverride |
设置 CSS 检查 Citrix DaaS™ 站点内配置更改的时间间隔。时间间隔范围为 60 秒(一分钟)到 3600 秒(一小时)。此设置仅适用于在其上运行的 Cloud Connector。为了在所有 Cloud Connector 之间保持一致性,请考虑在每个 Cloud Connector 上运行此 cmdlet。例如:Set-LhcConfigSyncIntervalOverride -Seconds 1200
|
Clear-LhcConfigSyncIntervalOverride |
将 CSS 检查 Citrix DaaS 站点内配置更改的时间间隔设置为默认值 300 秒(五分钟)。此设置仅适用于在其上运行的 Cloud Connector。为了在所有 Cloud Connector 之间保持一致性,请考虑在每个 Cloud Connector 上运行此 cmdlet。 |
Enable-LhcHighAvailabilitySDK |
启用对其上运行的 Cloud Connector 内所有 Get-Broker* cmdlet 的访问。 |
Disable-LhcHighAvailabilitySDK |
禁用对其上运行的 Cloud Connector 内 Broker PowerShell 命令的访问。 |
注意:
- 在 Cloud Connector 上运行
Get-Broker*cmdlet 时,请使用端口 89。例如:
Get-BrokerMachine -AdminAddress localhost:89- 当不在 LHC 模式下时,Cloud Connector 上的 LHC Broker 仅保存配置信息。
- 在 LHC 模式下,LHC Broker 保存以下信息:
- 资源状态
- 会话详细信息
- VDA 注册
- 配置信息
更多信息
-
有关以下信息,请参阅本地主机缓存的规模和大小注意事项:
- 测试方法和结果
- RAM 大小注意事项
- CPU 核心和插槽配置注意事项
- 存储注意事项