本地主机缓存

本地主机缓存 (LHC) 功能允许在 Cloud Connector 无法与 Citrix Cloud 通信时继续在 Citrix Virtual Apps and Desktops 服务部署中执行连接代理操作。当网络连接断开 20 秒时,本地主机缓存将参与进来。

启用了本地主机缓存时,中断时已连接的用户可以继续工作而不中断。重新连接和新连接会遇到最短连接延迟。

重要: 每个卫星区域(资源位置)都必须安装并配置本地 StoreFront。本地主机缓存仅在包含本地 StoreFront 的资源位置中起作用。

数据内容

本地主机缓存包含以下信息(主数据库中的一部分信息):

  • 为其专门分配了对从站点发布的资源的权限的用户和组的身份。
  • 当前正在使用或最近使用了站点中已发布资源的用户的身份。
  • 站点中配置的 VDA 计算机(包括 Remote PC Access 计算机)的标识。
  • 主动使用 Citrix Workspace 应用程序计算机连接到已发布的资源的客户端的标识(名称和 IP 地址)。

此外,它还包含主数据库不可用时建立且当前处于活动状态的连接的信息:

  • Citrix Workspace 应用程序执行的任何客户端计算机端点分析的结果。
  • 站点涉及的基础结构计算机(例如 Citrix Gateway 和 StoreFront 服务器)的标识。
  • 用户进行的最近活动的日期和时间以及类型。

工作原理

正常操作过程中:

正常操作示意图

  • Cloud Connector 上的代理主体 (Citrix Remote Broker Provider Service) 接受来自 StoreFront 的连接请求,并与 Citrix Cloud 进行通信,以将用户与在 Cloud Connector 中注册的 VDA 连接。
  • Citrix Config Synchronizer Service (CSS) 大约每隔 2 分钟与 Citrix Cloud 代理核对一次,查看是否对配置做出了任何更改。这些更改可以是管理员启动的更改(例如,更改交付组属性)或系统操作(例如,计算机分配)。
  • 如果自上次核对后更改了配置,CSS 会将信息同步(复制)到 Cloud Connector 上的辅助代理(Citrix High Availability Service,上图中的高可用性代理)。所有配置数据都会被复制,而不仅仅是自上次核对后更改的项目。辅助代理将数据导入 Cloud Connector 上的 Microsoft SQL Server Express LocalDB 数据库。CSS 确保辅助代理的 LocalDB 数据库中的信息与 Citrix Cloud 中的站点数据库中的信息一致。每次同步时,都会重新创建 LocalDB 数据库。

LocalDB 数据库在您安装 Cloud Connector 时自动安装。该数据库不能跨 Cloud Connector 共享。不需要备份此数据库;每次检测到配置变更时都会重新创建此数据库。

  • 如果自上次核对后没有进行任何更改,则不复制配置数据。

中断过程中:

中断示意图

当中断开始时:

  • 辅助代理开始侦听并处理连接请求。
  • 中断开始时,辅助代理没有当前的 VDA 注册数据,但当 VDA 与其通信时,就会立即触发注册过程。在该过程中,辅助 Broker 还获取有关该 VDA 的当前会话信息。
  • 在辅助代理处理连接的同时,代理主体将继续监视与 Citrix Cloud 的连接。恢复连接时,代理主体将指示辅助代理停止侦听连接信息,并且代理主体将继续执行代理操作。下次 VDA 与代理主体通信时,将触发注册过程。辅助代理将删除上一次中断中剩余的任何 VDA 注册。了解 Citrix Cloud 中是否发生配置变更时,CSS 将继续同步信息。

在同步期间发生中断这种不太可能发生的事件中,会丢弃当前导入,并使用已知的最后一个配置。

事件日志指示何时发生同步和中断。

对中断模式下的操作没有时间限制。

您还可以有意触发中断。有关为什么以及如何执行此操作的详细信息,请参阅强制中断

具有多个 Cloud Connector 的资源位置(卫星区域)

除其他任务外,CSS 还定期向辅助代理提供与资源位置中所有 Cloud Connector 有关的信息。获取该信息后,每个辅助代理都将知晓所有对等辅助代理。

辅助 Broker 在单独的通道中相互通信。如果发生中断,它们使用正在其中运行的计算机的 FQDN 名称的字母列表来确定(选择)哪个辅助 Broker 将负责在区域中执行代理操作。在中断期间,所有 VDA 向选定的辅助 Broker 重新注册。区域中的非选定辅助 Broker 将主动拒绝传入连接和 VDA 注册请求。

如果在中断期间某个选定的辅助代理出现故障,则将选择另一个辅助代理来接管,并且 VDA 将在新选定的辅助代理中重新注册。

在中断期间,如果重新启动某个 Cloud Connector:

  • 如果该 Cloud Connector 不是选定的主代理,则重新启动没有任何影响。
  • 如果该 Cloud Connector 是选定的主代理,则将选择另一个 Cloud Connector,这会导致 VDA 进行注册。重新启动的 Cloud Connector 开启后,将自动接管代理,这会导致 VDA 重新注册。在这种情况下,在注册期间,性能会受影响。

事件日志提供有关选择的信息。

设计考虑事项和要求

对中断模式下的操作没有时间限制。但是,如果中断是由于其资源位置中的 Citrix Cloud 连接在本地断开导致的,客户应尽快从其受影响的资源位置恢复连接。

中断期间不可用的功能以及其他差异

  • 无法使用 Studio 或运行 PowerShell cmdlet。
  • 中断期间,监视数据将发生送到 Citrix Cloud。因此,监视功能 (Director) 将不显示中断时间间隔内的活动。
  • 无法从 Host Service 获取虚拟机管理程序凭据。所有计算机都处于未知电源状态,因此无法发出任何电源操作。但是,已打开电源的主机上的 VM 可以用于连接请求。
  • 仅当在正常操作过程中发生了分配时,才可以使用分配的计算机。在中断期间不能执行新分配。
  • 不能自动注册和配置 Remote PC Access 计算机。但是,正常操作过程中注册和配置的计算机可以使用。
  • 如果资源在不同的区域中,服务器托管的应用程序和桌面用户使用的会话可能超过其配置的会话限制。
  • 用户只能从包含当前处于活动状态的/选定的 High Availability Service 的区域中已注册的 VDA 启动应用程序和桌面。中断期间不支持跨区域启动(从一个区域中的 High Availability Service 到另一个区域中的 VDA)。
  • 如果对交付组中的 VDA 开始计划的重新启动之前发生站点数据库中断,则重新启动将在中断结束后开始。这可能会产生意想不到的结果。有关详细信息,请参阅计划的重新启动因数据库中断而延迟

本地主机缓存仅适用于客户部署的 StoreFront。它不适用于 Workspace。

服务器托管的应用程序和桌面以及静态(已分配)桌面支持本地主机缓存。

默认情况下,发生中断时,启用了 ShutdownDesktopsAfterUse 属性的池交付组(通过 MCS 或 Citrix Provisioning 创建)中进行电源管理的桌面 VDA 将被置于维护模式。您可以更改此默认值,以允许在中断期间使用这些桌面。但是,中断期间您无法依赖电源管理。(正常操作恢复后,电源管理恢复。)此外,由于这些桌面未重新启动,它们可能包含前一个用户的数据。

要覆盖默认行为,必须在站点范围内启用并针对受影响的每个交付组启用。拨打支持电话,使其在站点范围内启用(无法使用远程 PowerShell SDK 运行此命令)。

Set-BrokerSite -ReuseMachinesWithoutShutdownInOutageAllowed $true

对于每个受影响的交付组,请运行以下 PowerShell cmdlet。

Set-BrokerDesktopGroup -Name "name" -ReuseMachinesWithoutShutdownInOutage $true

在站点和交付组中启用此功能不会影响配置的 ShutdownDesktopsAfterUse 属性在正常操作期间的作用方式。

RAM 大小注意事项

LocalDB 服务可以使用大约 1.2 GB 的 RAM(每个数据库缓存最多 1 GB,另加 200 MB 用于运行 SQL Server Express LocalDB)。如果中断持续较长时间,且发生了很多登录(例如,12 个小时内 10K 用户),则 High Availability Service 最多可以使用 1 GB 的 RAM。这些内存要求是 Cloud Connector 的正常 RAM 要求之外的要求,因此您可能需要增加 RAM 总容量。

CPU 核心和套接字配置注意事项

Cloud Connector 的 CPU 配置,尤其是可用于 SQL Server Express LocalDB 的核心数,直接影响本地主机缓存性能,甚至比内存分配还要严重。仅在数据库不可访问且 High Availability Service 处于活动状态时,在中断期间观察此 CPU 开销。

虽然 LocalDB 可以使用多个核心(最多 4 个),但只能使用一个套接字。添加更多套接字不会提高性能(例如,每个有 4 个套接字和 1 个核心)。相反,Citrix 建议结合使用多个套接字和多个核心。在 Citrix 测试中,2x3(2 个套接字,3 个核心)配置提供的性能优于 4x1 和 6x1 配置。

存储注意事项

由于在中断期间用户访问资源,LocalDB 会增长。例如,在以每秒 10 次登录运行的登录/注销测试期间,数据库以每 2-3 分钟 1 MB 的速度增长。正常操作继续执行时,如果检测到配置变更,则将重新创建本地数据库。代理必须在安装了 LocalDB 的驱动器上有足够的空间,以允许数据库在中断期间增长。在中断期间,本地主机缓存中还会发生其他 I/O 操作:大约每秒 3 MB 的写入操作,以及数十万次读取操作。

性能注意事项

中断期间,一个代理将处理所有连接。在正常操作过程中在多个 Cloud Connector 之间进行负载平衡的资源位置中,选定的代理需要处理的请求数可能远高于中断期间的正常数。因此,CPU 需求会比较高。资源位置中的每个代理都必须能够处理 LocalDB 和所有受影响的 VDA 造成的额外负载,因为在中断期间选择的代理可能会发生变化。

VDI 限制:

  • 在具有一个资源位置的部署中,中断期间最多可以有效处理 10000 个 VDA。
  • 在具有多个资源位置的 VDI 部署中,中断期间在每个资源位置中最多可以有效处理 10000 个 VDA,在部署中最多可以处理 40000 个 VDA。例如,在中断期间,可以有效处理以下部署之一:
    • 具有四个辅助资源位置的部署,其中每个资源位置中包含 10000 个 VDA。
    • 具有七个辅助区域的部署,其中一个区域包含 10000 个 VDA,另外六个区域每个包含 5000 个 VDA。

在中断期间,负载管理功能可能会受到影响。负载评估器(尤其是会话计数规则)会超额。

在所有 VDA 在代理中注册的这段时间,该代理可能没有与当前会话有关的完整信息。因此,在该时间间隔内的用户连接请求可能会导致启动新会话,即使有可能重新连接到现有会话也是如此。此时间间隔(在此期间,在注册过程中,新代理将从所有 VDA 中获取会话信息)无法避免。中断开始时,已连接的会话在过渡时间间隔内不受影响,但新会话和会话重新连接会受影响。

每当 VDA 必须在不同的代理中注册时,都会出现此时间间隔:

  • 中断开始:从代理主体迁移到辅助代理时。
  • 中断期间代理出现故障:从出现故障的辅助代理迁移到新选定的辅助代理时。
  • 从中断恢复:正常操作继续进行,并且代理主体恢复控制时。

在 Broker 之间同步所需的时间会随对象(例如 VDA、应用程序、组)数增加。例如,同步 5000 个 VDA 可能需要 10 分钟或更长时间来完成。

StoreFront 要求

每个卫星区域(资源位置)都必须安装并配置本地 StoreFront。本地主机缓存仅在包含本地 StoreFront 的资源位置中起作用。

XenApp 6.x 各版本中的差异

尽管此本地主机缓存实施与 XenApp 6.x 及更早 XenApp 版本中的本地主机缓存功能的名称相同,但进行了显著的改进。此实施更强大且不易损坏。维护要求降低到最小,例如,不再需要定期运行 dsmaint 命令。此本地主机缓存在技术上是完全不同的实现。

管理本地主机缓存

在 Citrix Virtual Apps and Desktops 服务部署中,本地主机缓存始终处于启用状态。您不需要执行任何其他操作即可对其进行配置或管理。

如上所述,LocalDB 数据库在您在资源位置中安装 Cloud Connector 时自动安装。请勿尝试将其禁用或删除。(Citrix 将定期更新 Cloud Connector。如果手动禁用或删除 LocalDB 软件,下一次 Cloud Connector 更新会将其替换。)

验证本地主机缓存是否正在运行

要验证本地主机缓存是否已设置并正常运行,请执行以下操作:

  • 验证资源位置是否包含指向该资源位置中的 Cloud Connector 的本地 StoreFront。
  • 确保同步导入成功完成。查看事件日志
  • 确保在每个 Cloud Connector 上创建 SQL Server 本地数据库。这确认了如果需要,高可用性服务可以接管。
    • 在 Cloud Connector 服务器上,浏览到 c:\Windows\ServiceProfiles\NetworkService
    • 验证是否已创建 HaDatabaseName.mdf 和 HaDatabaseName_log.ldf
  • 在资源位置中的所有 Cloud Connector 上强制中断。验证本地主机缓存是否正常运行后,请记住将所有 Cloud Connector 放回普通模式。这可能需要大约 15 分钟才能避免出现 VDA 注册风暴。

另请参阅将本地主机缓存与 Cloud Connector 结合使用的可扩展性注意事项

事件日志

事件日志记录何时发生同步和中断。在事件查看器日志中,中断模式称为高可用性模式

Config Synchronizer Service:

正常操作过程中,CSS 通过使用 High Availability Service(辅助 Broker)复制并导出 Broker 配置,然后将其导入 LocalDB 时,会发生以下事件。

  • 503:Citrix Config Sync Service 收到更新的配置。每次 High Availability Service 从 Citrix Cloud 接收更新的配置时,都会发生此事件。它指示同步过程的开始。504 或 505 事件始终跟随此事件。
  • 504:Citrix Config Sync Service 导入了更新的配置。配置导入已成功完成。
  • 505:Citrix Config Sync Service 导入失败。配置导入未成功完成。如果以前的成功配置可用,发生中断时将使用该配置。但是,它将在当前配置中过期。如果以前的配置都不可用,服务将无法在中断期间参与会话中转。在这种情况下,请参阅故障排除部分,并与 Citrix 支持部门联系。
  • 507:Citrix Config Sync Service 放弃了导入,因为系统处于中断模式,并且正在使用本地主机缓存进行代理。服务收到了新的配置,但导入被放弃,因为发生中断。这是预期的行为。

High Availability Service:

  • 3502:发生了中断,辅助 Broker (High Availability Service) 正在执行中转操作。
  • 3503:已解决中断并已恢复正常操作。
  • 3504:指示选择哪个辅助 Broker,以及参与选择的其他 Broker。

强制中断

您可能希望有意强制中断。

  • 如果您的网络反复开启和关闭。在网络问题解决之前强制中断网络可以防止持续在正常模式与中断模式之间转换(并且会导致 VDA 频繁注册)。
  • 要测试灾难恢复计划。
  • 帮助确保本地主机缓存正常运行。

要强制中断,请编辑每个 Cloud Connector 服务器的注册表。在 HKLM\Software\Citrix\DesktopServer\LHC 中,将 OutageModeForcedREG_DWORD 一样设置为 1。这指示 Broker 进入中断模式,而无论与 Citrix Cloud 的连接状态为何。将该值设置为 0 将使 Broker 退出中断模式。完成此过程可能需要不到一分钟的时间。

要验证事件,请监视 C:\ProgramData\Citrix\WorkspaceCloud\Logs\Plugins\HighAvailabilityService 中的 Current_HighAvailabilityService 日志文件。

故障排除

向 LocalDB 的同步导入失败并且发布了 505 事件时,可以使用多个故障排除工具。

CDF 跟踪:包含用于 ConfigSyncServer 模块和 BrokerLHC 模块的选项。这些选项与其他代理模块一起可以确定问题。

报告:如果同步导入失败,可以生成报告。此报告在导致出错的对象所在的位置停止。此报告功能影响同步速度,因此,Citrix 建议在不使用时禁用它。

要启用并生成 CSS 跟踪报告,请输入以下命令:

New-ItemProperty -Path HKLM:\SOFTWARE\Citrix\DesktopServer\LHC -Name EnableCssTraceMode -PropertyType DWORD -Value 1

HTML 报告发布在 C:\Windows\ServiceProfiles\NetworkService\ AppData\Local\Temp\CitrixBrokerConfigSyncReport.html

生成报告后,输入以下命令以禁用报告功能:

Set-ItemProperty -Path HKLM:\SOFTWARE\Citrix\DesktopServer\LHC -Name EnableCssTraceMode -Value 0