SQL Server 和 CVAD 数据库

Microsoft SQL Server 是任何 Citrix Virtual Apps and Desktops (CVAD) 部署的重要组件。规划和了解 Citrix SQL 交互对于您和您的组织维护健康且性能良好的 Citrix 环境非常有益。缺乏 SQL Server 高可用性和充足的计算资源将对 Citrix 基础架构的用户体验和正常运行时间产生负面影响。

数据库摘要

在 Citrix Virtual Apps and Desktops 部署期间需要/创建了 3 个数据库:

站点: (也称为站点配置)存储正在运行的站点配置以及与代理相关的动态数据,例如当前会话状态、连接、加载和 Virtualy Delivery Agent (VDA) 状态信息。

配置日志记录: (也称为日志记录)存储有关站点配置更改和管理活动的信息。启用配置日志记录功能(默认情况下启用)时将使用此数据库。

监视: 存储 Director 使用的数据,如会话和连接信息。

安装 Citrix Virtual Apps and Desktops 后,管理员会在初始站点配置(通过 Studio 或通过在 SQL Server 上运行脚本)创建数据库,并将它们分成三个单独的数据库。

对于具有大型监控数据库的环境,理想的配置是将监控数据库托管在与站点配置和配置日志数据库不同的服务器上。它记录更多的数据,更频繁地发生更改,并且数据被认为不像其他数据库那么重要。有关详细信息,请参阅文章如何更改监视和配置日志数据库的数据库位置

运行长期服务版本 (LTSR) 版本时,请确保您有定期将环境升级到最新的累积更新 (CU) 的流程。CU 通常包含与 SQL 相关的补丁。此外,确保适当的 SQL 服务器和数据库监控到位,以发现故障事件和问题,例如高资源利用率、可用磁盘空间等。

Citrix 与 SQL 的互动

Citrix Virtual Apps and Desktops 代理(交付控制器)使用数据库作为代理通信、存储配置、监控和审计数据的消息总线。数据库经常被使用,可能会消耗 SQL 服务器上的大量计算资源。

例如,资源枚举(识别并呈现给用户的资源)、资源启动和会话启动阶段需要 Citrix Delivery Controller 与 SQL 服务器进行交互。

枚举: 通过 NetScaler 和 StoreFront 成功进行身份验证后,Delivery Controller 会根据 AD 凭据联系 Citrix 站点数据库,检查用户可以使用哪些应用程序。确定资源后,将从数据库中提取其他信息(例如应用程序名称、桌面、图标等)。

启动: 当用户选择要启动的应用程序或桌面时,StoreFront 会向Delivery Controller 发出启动请求。然后,Delivery Controller 联系 SQL 服务器上的站点数据库,选择要将用户发送到的相应 VDA。

会话初始化: 会话启动后,VDA 与Delivery Controller 联系以将会话信息写入站点数据库。

数据库推荐

为确保 SQL 服务器中断对 Citrix Virtual Apps and Desktops 基础架构的影响最小,客户可以从 Citrix 支持的以下 高可用性数据库选项 中进行选择:

  • SQL Server AlwaysOn 故障转移群集实例
  • SQL Server AlwaysOn 可用性组(包括 Basic 可用性组)
  • SQL Server 数据库镜像

Citrix(以及医疗保健环境的 Epic)建议对所有三个数据库使用相同的高可用性方法,尽管建立最终用户会话不需要配置记录和监控数据库可用性。例如,如果您计划使用 SQL AlwaysOn 可用性组作为 HA 策略,请将其用于所有三个数据库对象。

我们还建议您每天对 Citrix 数据库本身进行完整备份,尤其是站点数据库。保留期因组织要求而异,但通常要保持 7 天的完整备份和至少一个月的每周备份。事务日志备份计划应基于贵组织的标准以及相对于必须分配的可用存储量的事务日志增长率的组合。确保监视 SQL 服务器上的可用存储。

使 Citrix 数据库的恢复模式与您正在采用的高可用性方法的要求保持一致。

根据 Microsoft 的建议,客户应将维护计划设置为每晚和每周运行,以维护数据库索引。维护计划可能只是在本周的夜间重组指数,并在周末重建指数。

此建议可避免在日常操作期间重建任何大型索引对性能产生任何影响,对于大型监控数据库尤其如此。Microsoft 建议,如果索引碎片大于 30%,则重建索引;如果碎片化率低于 30%,则重新组织索引。

本地主机缓存

为了应对数据库不可用的情况,Citrix 为 Citrix Citrix Virtual Apps and Desktops 提供了本地主机缓存 (LHC) 功能。启用此选项允许已发布应用程序和桌面的用户在交付控制器与 Citrix 站点配置数据库之间的通信中断时进行连接。如果在高可用架构(例如 AlwaysOn 或镜像)中配置 SQL,则此功能在 SQL 完全中断或网络连接中断时提供额外的容错能力。

不应将其视为 SQL 高可用性的替代方案,因为站点管理功能在 SQL 中断期间不可用,故障转移过程也不是即时的。如果 SQL 中断,代理功能将丢失,直到它过渡到 LHC 并且 VDA 重新注册。在 SQL 连接性/可用性恢复后,转换回正常操作模式时,也会遇到这种情况。

本地主机缓存将静态站点数据的副本保留在每个Delivery Controller 本地 SQL Express LocalDB 数据库中,并在数据库中断期间依靠这些数据来持续支持 VDA 注册和会话代理请求。

对于具有多个区域的 CVAD 站点,每个区域将存在单独的 LHC。区域内的交付控制器在本地 SQL Express 数据库中保留特定于其区域的动态数据。

本地主机缓存设计注意事项

由于企业部署之间存在许多变量,因此建议您与 Citrix 密切合作,以确定使用 LHC 所需的额外资源。

  • 可扩展性注意事项
    • 截至CVAD 2203 LTSR,记录在案的 LHC 最大限制为单区域中的 10000 个 VDA,在多区域部署中为 40000 个 VDA。在 CVAD 环境中,LHC 和区域可扩展性取决于登录率和用户数量。因此,在您的环境中观察到的实际可伸缩性可能低于发布的最大值。对于这种架构,如果您的预期会话数超过 10000 和/或您的登录速率大于每秒 10 个用户,我们建议考虑增加区域。
  • Delivery Controller 规模:当 LHC 处于活动状态时,每个区域选定的主Delivery Controller (DC) 将处理所有 VDA 注册、枚举、启动和更新。
    • RAM:LHC 服务可以消耗 2GB 以上的内存,具体取决于中断持续时间和中断期间用户启动的次数。
    • CPU:由于选定的 DC 上额外的 CPU 负载,应考虑使用额外的内核进行补偿。

    控制器的 CPU 配置,特别是 SQL Server Express LocalDB 可用的内核数量,直接影响本地主机缓存的性能,甚至比内存分配更大。仅在数据库不可访问且 High Availability Service 处于活动状态时,在中断期间观察此 CPU 开销。

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

  • 存储:在 LHC 模式下,假设平均每秒 10 次登录,存储使用量每 2-3 分钟增加大约 1MB。存储消耗量相对于登录速率而增加。

有关详细信息,请参阅 本地主机缓存 一文。

数据库中断的影响

如果数据库完全中断,几乎所有关键的 Delivery Controller 功能都会受到影响,这凸显了设计和实施推荐的 SQL HA 策略之一的重要性。下表列出了这些影响:

组件 数据库中断的影响
站点配置数据库 用户无法连接或重新连接到虚拟应用程序或桌面(没有 LHC)。
监视数据库 Director 不显示任何历史数据,也无法启动 Studio。传入的用户请求和现有用户会话的代理不受影响。
配置日志记录数据库 如果在 Citrix Virtual Apps and Desktops 日志记录首选项中启用了允许在数据库断开连接时进行更改,则配置日志记录数据库的中断不会产生任何影响(不记录配置更改除外)。否则,管理员将无法对 CVAD 环境进行任何更改。

注意: 有关此主题的更多详细信息,请参阅停机期间不可用的内容和其他差异

SQL 大小调整建议

必须正确调整 SQL 服务器的大小,以确保环境的性能和稳定性。由于每个 Citrix 产品使用 SQL 服务器的方式不同,并且每个客户都有不同的使用模式,因此无法提供通用的包罗万象的规模建议。取而代之的是,下面提供了每个产品的 SQL 服务器大小调整建议,在部署期间应仔细监控性能,以验证规模假设。

对于仅托管 Citrix 相关数据库的 SQL 环境,应为 SQL 服务器配置至少 4 个 vCPU 和 8GB 内存,最多可容纳 10,000 个用户。对于大型部署或登录率高的部署,我们建议至少 8 个 vCPU 和 16GB RAM。有关 Citrix Virtual Apps and Desktops 部署的 SQL 数据库大小概念的更多信息,请参阅 Citrix XenDesktop 7.x 数据库大小调整。本文还包括有关工作负载特性的信息,例如估计的事务日志增长率。

请记住,监控数据库的大小因数据保留设置而异。此外,较新的产品版本有更多的选项和消耗更多空间的数据点(例如 LTSR 2203 与 LTSR 1912)。有关配置这些设置的详细信息,请参阅 监视策略设置 并将其纳入数据库大小计算中。

CU 更新和修复

Citrix 每年多次发布 Citrix Virtual Apps and Desktops LTSR 的累积更新 (CU)。这些 CU 仅包含安全更新和错误修复,没有引入任何新功能。Citrix 建议运行最新的 CU,因为它们可以修复产品中已发现的问题。其中一些修复与 SQL 相关。它们解决了 Citrix 或我们的客户在内部发现的问题(示例可能包括锁定、死锁或存储过程)。我们意识到,对 CVAD 环境应用全面更新需要时间和适当的规划(尤其是对于任务关键型 24x7 情况),但是 Citrix 强烈建议在 CU 上尽可能保持最新状态,以实现最佳的整体运行状况和性能。

最新文档

本文档指出了 SQL 在 CVAD 环境中的重要性,包括 HA 策略和各种注意事项。它并不是关于 Citrix 和 SQL 建议的包罗万象的文献。 有关其他详细信息和最新信息,请参阅以下文档:

CVAD 数据库

Citrix 本地主机缓存

Citrix XenDesktop 7.x 数据库

SQL Server 和 CVAD 数据库