Citrix虚拟应用和桌面

本地主机缓存

为了确保思杰虚拟应用和桌面站点数据库始终可用,Citrix建议用容错SQL Server部署开始,按照微软的高可用性最佳实践。(有关支持SQL Server的高可用性功能,请参阅数据库)但是,网络问题和中断可能会导致用户无法连接到其应用程序或桌面。

本地主机缓存特性允许在发生中断时继续站点中的连接代理操作。在本地Citrix环境中,当交付控制器与站点数据库之间的连接失败时,就会发生中断。

从XenApp和XenDesktop 7.16开始,连接租赁特性(早期版本中的前身高可用性特性)从产品中删除,不再可用。

数据内容

本地主机缓存包括以下信息,这是主数据库信息的子集:

  • 为从站点发布的资源分配权限的用户和组的标识。
  • 当前使用或最近使用站点发布资源的用户的身份。
  • 站点中配置的VDA机器(包括Remote PC Access机器)的身份。
  • 活跃地用于连接到已发布资源的客户端Citrix Receiver机器的身份(名称和IP地址)。

它还包含在主数据库不可用时建立的当前活动连接的信息:

  • Citrix Receiver执行的任何客户机机器端点分析的结果。
  • 与站点相关的基础设施机器(如NetScaler Gateway和StoreFront服务器)的标识。
  • 用户最近活动的日期、时间和类型。

它是如何工作的

下图说明了在正常操作期间的本地主机缓存组件和通信路径。

正常操作期间本地主机缓存通信路径图

在正常操作期间

  • 主要代理(的Citrix代理服务)上的控制器接受来自店面的连接请求。与网站数据库代理进行通信,用户与该控制器注册VDAS连接。
  • Citrix配置同步器服务(CSS)大约每分钟与代理进行一次检查,以查看是否进行了任何更改。这些更改可以是管理员发起的(如更改交付组属性)或系统操作(如机器分配)。
  • 如果自上次检查时出现的配置变化,CSS的同步(复印件)信息到控制器二级代理。(次级代理也被称为高可用性的服务。)

    复制所有配置数据,而不仅仅是自上次检查以来更改的项。CSS将配置数据导入到Controller上的Microsoft SQL Server Express LocalDB数据库中。这个数据库称为本地主机缓存数据库。CSS确保“Local Host Cache”数据库中的信息与站点数据库中的信息匹配。每次同步发生时,都会重新创建本地主机缓存数据库。

    安装控制器时,会自动安装Microsoft SQL Server Express LocalDB(由本地主机缓存数据库使用)。(从命令行安装控制器时,您可以禁止安装该数据库。)无法在控制器之间共享本地主机缓存数据库。您不需要备份本地主机缓存数据库。每次检测到配置更改时都会重新创建它。

  • 如果自上次检查以来没有发生任何更改,则不会复制数据。

下图说明如果主代理失去与站点数据库接触(一个停歇开始)在通信路径的变化。

停机期间本地主机缓存通信路径图

在停机

当中断开始时:

  • 辅助代理开始侦听和处理连接请求。
  • 当中断开始时,辅助代理没有当前的VDA注册数据,但是当VDA与它通信时,会触发一个注册过程。在此过程中,辅助代理还获取关于VDA的当前会话信息。
  • 当辅助代理处理连接时,代理主体继续监视连接。当连接恢复时,broker Principal指示次级代理停止监听连接信息,然后broker Principal恢复代理操作。下一次VDA与代理主体通信时,将触发一个注册过程。辅助代理从上次中断中删除所有剩余的VDA注册。当CSS在部署过程中发现配置发生变化时,会恢复同步信息。

如果在同步过程中出现不太可能发生的中断,则丢弃当前导入并使用最后一个已知配置。

事件日志提供有关同步和中断的信息。

在停机模式下运行没有时间限制。

正常模式和中断模式之间的转换不会影响现有的会话。它只影响新会议的启动。

您还可以故意触发停机。看到强迫停机有关为什么以及如何执行此操作的详细信息。

多个控制器网站

在其他任务中,CSS通常向辅助代理提供关于区域中所有controller的信息。(如果您的部署不包含多个区域,此操作将影响站点中的所有控制器。)有了这些信息,每个辅助代理就知道在该区域的其他controller上运行的所有对等辅助代理。

二级代理通过单独的通道彼此通信。这些代理使用它们正在运行的机器的FQDN名称的字母列表,以确定(选择)在发生中断时,哪个辅助代理将成为区域中的代理操作。在中断期间,所有VDAs都向选定的辅助代理注册。区域中的非民选二级代理主动拒绝传入的连接和VDA注册请求。

如果选定的辅助代理在中断期间出现故障,则会选择另一个辅助代理来接管,VDAs会向新选出的辅助代理注册。

在停机期间,如果控制器重启:

  • 如果该Controller不是当选的代理,则重启没有影响。
  • 如果该Controller是选举的代理,则会选举另一个Controller,从而导致VDAs注册。重新启动的Controller上电后,自动接管代理,导致VDAs重新注册。在这种情况下,注册过程中可能会影响性能。

如果在正常操作期间关闭控制器电源,然后在停机期间打开控制器电源,则如果该控制器被选为代理,则无法在该控制器上使用本地主机缓存。

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

在停机期间什么是不可用的,以及其他差异

在停机模式下运行没有时间限制。不过,Citrix建议尽快恢复连接。

在大修期间:

  • 不能使用Studio。
  • 您对PowerShell SDK的访问权限有限。

    • 你必须先:
      • 添加注册表项EnableCssTestMode值为1时:New-ItemProperty -Path HKLM:\SOFTWARE\Citrix\DesktopServer\LHC -Name EnableCssTestMode -PropertyType DWORD -Value 1
      • 使用89端口:Get BrokerMachine-AdminAddress localhost:89 |选择MachineName、ConcollerdNSName、DesktopGroupName、RegistrationState
    • 运行这些命令后,您可以访问:
      • 所有Get-Broker *cmdlets。
      • 电源管理cmdletNew-BrokerHostingPowerAction设置BrokerHostingPowerAction,移除BrokerHostingPowerAction
  • 虚拟机管理程序的凭据不能从主机服务获得。所有机器都在未知的电源状态,并没有权力操作可以被发出。但是,虚拟机的动力,在主机上可用于连接请求。
  • 一个分配机可用于只有在正常操作期间发生的分配。新的分配不能停机期间进行。
  • 远程PC访问机器的自动注册和配置是不可能的。然而,入组和正常操作期间配置了机是可用的。
  • 如果资源位于不同的区域,服务器托管的应用程序和桌面用户使用的会话可能超过其配置的会话限制。
  • 用户只能从包含当前活动/选举的辅助代理的区域中注册的vda启动应用程序和桌面。在中断期间,不支持跨区域启动(从一个区域中的辅助代理到另一个区域中的VDA)。
  • 如果在某个交付组内的vda定时重启之前发生站点数据库故障,则在重启结束时重新启动。这可能会产生意想不到的结果。有关更多信息,请参见由于数据库停用,计划重启延迟
  • 区域偏好不能配置。如果配置了,首选项不会考虑会话启动。
  • 标签限制不考虑会话启动。

应用程序和桌面支持

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

本地主机缓存支持池传递组中的桌面VDA,如下所示:

  • 默认情况下,池传送组(由MCS或Citrix配置创建)中的电源管理桌面VDA具有ShutdownDesktopsAfterUse属性启用时将置于维护模式。您可以更改此默认值,以允许在停机期间使用这些桌面。

    但是,在断电期间,您不能依赖电源管理。(正常操作恢复后,电源管理恢复。)此外,这些桌面可能包含来自前一个用户的数据,因为它们还没有重新启动。

  • 若要覆盖默认行为,则必须在站点范围内为每个受影响的交付组启用该行为。运行以下PowerShell cmdlets。

    站点范围内:

    Set-BrokerSite -ReuseMachinesWithoutShutdownInOutageAllowed真正的美元

    对于每个受影响的传递组,运行以下PowerShell命令:

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

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

RAM的大小考虑

该服务的LocalDB可以使用约1.2 GB的RAM(高达1 GB的数据库缓存,外加200 MB运行的SQL Server Express的LocalDB)。二次代理可以使用的RAM高达1 GB如果断电持续与许多登录存在的(例如,12小时10K用户)的延长时间间隔。这些内存的要求除了为控制器的正常RAM的要求,所以你可能需要增加的RAM容量总量。

如果站点数据库使用SQL Server Express安装,则服务器将有两个sqlserver.exe进程。

CPU核心和插座配置注意事项

控制器的CPU配置,提供给SQL Server Express的核心的LocalDB特别的数量,直接影响到本地主机缓存的性能,甚至超过了内存分配。该CPU开销当数据库不可达和次级代理是活动的时中断期仅观察到。

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

储存注意事项

当用户在停机期间访问资源时,LocalDB就会增长。例如,在以每秒10次登录运行的登录/注销测试期间,数据库每2-3分钟增长1 MB。当正常操作恢复时,重新创建本地数据库并返回空间。但是,安装LocalDB的驱动器上必须有足够的空间,以便在停机期间允许数据库增长。本地主机缓存在停机期间也会招致更多的I/O:大约每秒3 MB的写操作,以及几十万的读操作。

性能考虑

在中断期间,一个辅助代理处理所有连接,因此在正常操作期间在多个控制器之间进行负载平衡的站点(或区域)中,在中断期间,选定的辅助代理可能需要处理比正常情况更多的请求。因此,对CPU的需求会更高。站点(区域)中的每个辅助代理必须能够处理由本地主机缓存数据库和所有受影响的VDAs施加的额外负载,因为在中断期间选出的辅助代理可以更改。

VDI限制:

  • 在单区域VDI部署中,在停机期间最多可以有效处理10000个VDA。
  • 在多区域VDI部署,在每个区域多达10000个VDAS可以有效地在停电时的处理,以最大的站点40000个VDAS。例如,以下每个站点可以有效地在停电时处理:
    • 一个有四个区域的站点,每个区域包含10,000个vda。
    • 一个站点有七个区,一个包含10,000个VDAS,六个含5000个每VDAS。

期间停运,站点内的负载管理会受到影响。负载评估(特别是,会话计数规则)可以被超出。

在所有VDAs向辅助代理注册的时间内,该服务可能没有关于当前会话的完整信息。因此,在该间隔期间的用户连接请求可能导致启动新的会话,即使可以重新连接到现有会话。这个间隔(当“新的”辅助代理在重新注册期间从所有VDAs获取会话信息时)是不可避免的。在中断开始时连接的会话不会在转换间隔期间受到影响,但是新的会话和会话重新连接可能会受到影响。

这个间隔发生在VDAs必须注册的时候:

  • 当从主代理迁移到辅助代理时,就会开始中断。
  • 在停电时二级代理发生故障:当从失败到一个新当选的二级代理的二级代理迁移。
  • 中断恢复:当正常操作恢复时,主代理恢复控制。

您可以通过降低Citrix代理协议来减少间隔HeartbeatPeriodMs注册表值(默认值=600000毫秒,即10分钟)。此心跳值是VDA用于ping的时间间隔的两倍,因此默认值会导致每5分钟ping一次。

例如,以下命令将心跳更改为5分钟(300000毫秒),这将导致每2.5分钟ping一次:

新-ItemProperty -Path HKLM:\ SOFTWARE \思杰\ DesktopServer杂牌HeartbeatPeriodMs -PropertyType DWORD - 值30万

使用改变心跳值的注意事项。在正常和失效模式增加在控制器更大的负载的频率的结果。

无论VDAs寄存器有多快,间隔都不能完全消除。

随着对象(如vda、应用程序、组)的数量增加,二级代理之间进行同步所需的时间也会增加。例如,同步5000个vda可能需要10分钟或更长时间。

从XenApp的6.x的版本差异

尽管这个本地主机缓存实现共享XenApp 6中的本地主机缓存特性的名称。x和更早的XenApp版本都有显著的改进。这种实现更加健壮,并且不受破坏的影响。最小化维护要求,例如消除对周期性的需要dsmaint命令。这个本地主机缓存在技术上是一个完全不同的实现。

管理本地主机缓存

为了使本地主机缓存正常工作,每个Controller上的PowerShell执行策略必须设置为remotessigned、Unrestricted或Bypass。

SQL Server Express LocalDB

本地主机缓存使用的Microsoft SQL Server Express LocalDB软件,在安装控制器或从7.9之前的控制器升级时自动安装。只有辅助代理与此数据库通信。您不能使用PowerShell cmdlets来更改这个数据库的任何内容。LocalDB不能跨控制器共享。

无论是否开启本地主机缓存,都会安装SQL Server Express LocalDB数据库软件。

为防止控制器被安装,请使用控制器自带的软件安装或升级控制器XenDesktopServerSetup.exe命令,并包括/排除“本地主机缓存存储(LocalDB)”选择。但是,请记住,本地主机缓存特性在没有数据库的情况下无法工作,并且不能使用辅助代理的不同数据库。

安装这个LocalDB数据库对是否安装SQL Server Express作为站点数据库没有影响。

有关用较新版本替换较早的SQL Server Express版本的LocalDB的信息,请参阅替换SQL Server Express LocalDB

产品安装和升级后的默认设置

在新安装Citrix虚拟应用程序和桌面(最低版本7.16)时,本地主机缓存是启用的。

升级(到7.16或更高版本)后,如果有少于10,000 VDAS在整个部署本地主机缓存已启用。

启用/禁用本地主机缓存

  • 要启用本地主机缓存,请输入:

    Set-BrokerSite -LocalHostCacheEnabled真正的美元

    要确定是否启用了本地主机缓存,请输入Get-BrokerSite.检查LocalHostCacheEnabled属性是真正的

  • 要禁用本地主机缓存,请输入:

    Set-BrokerSite -LocalHostCacheEnabled假美元

记住:从XenApp和XenDesktop 7.16开始,连接租赁(从7.6版开始的本地主机缓存之前的特性)已经从产品中删除,不再可用。

验证本地主机缓存正在工作

要验证本地主机缓存设置并正常工作:

  • 确保同步导入成功完成。检查事件日志
  • 确保在每个交付控制器上都创建了SQL Server Express LocalDB数据库。这确认了二级代理可以在需要时接管。
    • 在交付控制器服务器上,浏览到C:\Windows\ServiceProfiles\NetworkService
    • 验证HaDatabaseName.mdfHaDatabaseName_log.ldf都是创造出来的。
  • 强迫停机在下发控制器上。在验证了本地主机缓存工作之后,记得将所有控制器放回正常模式。这大约需要15分钟。

事件日志

事件日志指示何时发生同步和中断。在事件查看器日志中,中断模式称为HA模式.*

配置同步器服务:

在正常操作过程中,CSS使用Local Host Cache代理将配置数据导入Local Host Cache数据库时,可能会发生以下事件。

  • 503:Citrix配置同步服务收到更新的配置。此事件表示同步过程的开始。
  • 504:Citrix配置同步服务导入了更新的配置。配置导入已成功完成。
  • Citrix配置同步服务导入失败。配置导入没有成功完成。如果以前的成功配置可用,则在发生故障时使用它。但是,它将从当前配置中过时。如果没有可用的先前配置,则服务在中断期间不能参与会话代理。在这种情况下,请参见进行故障排除章节,请联系Citrix技术支持。
  • 507: Citrix配置同步服务放弃导入,因为系统处于停机模式,本地主机缓存代理正在用于代理。服务收到了一个新的配置,但是由于发生了中断,导入被放弃了。这是预期的行为。
  • 没有从主配置服务接收到配置服务配置数据。
  • 与主代理通信有问题。
  • 518:配置同步脚本中止,因为二级代理(高可用性服务)未运行。

高可用性服务:

此服务也称为本地主机缓存代理。

  • 3502:发生中断,本地主机缓存代理正在执行代理操作。
  • 3503:大修已解决,并已恢复正常运行。
  • 3504:表示本地主机缓存经纪人当选,再加上参与选举的其他本地主机缓存经纪人。

强迫停机

您可能想要故意强制停机。

  • 如果你的网络反复地上下波动。强制中断直到网络问题解决,可以防止正常模式和中断模式之间的持续过渡(以及由此产生的频繁VDA注册风暴)。
  • 测试容灾计划。
  • 帮助确保本地主机缓存正常工作。
  • 替换或服务站点数据库服务器时。

要强制停机,请编辑包含传递控制器的每个服务器的注册表。在里面HKLM \ SOFTWARE \思杰\ DesktopServer \ LHC,创建和设置OutageModeForced作为REG_DWORD1. 此设置指示本地主机缓存代理进入中断模式,而不管数据库的状态如何。将值设置为0使本地主机缓存代理退出停机模式。

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

进行故障排除

当同步导入到本地主机缓存数据库失败且发布505事件时,可以使用多种故障排除工具。

提供跟踪:包含ConfigSyncServerBrokerLHC”模块。这些选项以及其他代理模块可能会识别出问题。

报告:如果同步导入失败,您可以生成报告。此报告在导致错误的对象处停止。这个报告特性会影响同步速度,所以Citrix建议在不使用时禁用它。

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

新建- itemproperty -Path HKLM:\SOFTWARE\Citrix\DesktopServer\LHC -Name EnableCssTraceMode -PropertyType DWORD -Value 1

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

报表生成完成后,输入如下命令关闭报表特性:

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

导出代理配置:为调试目的提供准确的配置。

出口BrokerConfiguration |出文件<文件路径名>

例如,Export-BrokerConfiguration | Out-File C:\\BrokerConfig.xml