高级概念

SQL Server 和 Citrix 数据库

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

数据库摘要

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

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

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

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

在早期版本的 Citrix Virtual Apps and Desktops 中(例如 XenApp 和 XenDesktop 7.6),在初始站点配置期间(通过 Studio 或在 SQL Server 上运行脚本),Citrix Virtual Apps and Desktops 所需的数据库已创建为一个数据库。安装后,管理员可以将其拆分为不同的数据库,以提高性能或遵守备份/安全准则。

使用较新版本的 Citrix Virtual Apps and Desktops,您可以在初始站点配置期间创建数据库,也可以通过 Studio 或在 SQL Server 上运行脚本。您的数据库会自动拆分为三个独立的数据库。

对于具有大型监视数据库的环境,理想的配置是在站点配置和配置日志记录数据库不同的服务器上托管监视数据库。它记录更多的数据,更频繁地发生更改,并且数据被认为不像其他数据库那么重要。有关更多信息,请参阅 数据库大小调整指南VDI 手册中的第 97 页。

长期服务版本 (LTSR) 的每个累积更新 (CU) 包含 SQL 数据库体系结构的修补程序。例如,请参阅 CTX230536。为了最好地保护您的环境免受意外问题的影响,请确保您有定期将环境升级到最新的 CU 的流程。此外,请确保适当的 SQL Server 和数据库监视到位,以捕获故障事件和具有高资源利用率和可用空间的问题。

Citrix 与 SQL 交互

Citrix Virtual Apps and Desktops 代理将数据库用作消息总线,用于代理通信、存储配置、监视和审核数据。这些数据库不断使用,并可能消耗 SQL Server 上的大量计算资源。

例如,资源枚举(标识并向用户显示的资源)、资源启动和会话启动阶段需要 Citrix Delivery Controller 与 SQL Server 交互。

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

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

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

数据库推荐

要确保 SQL Server 中断对 Citrix Virtual Apps and Desktops 基础结构的影响最小,客户可以从以下 Citrix 支持的高可用性选项中进行选择:

  • AlwaysOn 可用性组
  • AlwaysOn 故障转移群集
  • Basic 可用性组
  • Hypervisor 高可用性*

注意:

虽然 Citrix 支持 Hypervisor 高可用性,但不建议在托管 EHR 应用的环境中使用它,因为正常运行时间至关重要。

Citrix 和 Epic 建议对所有三个数据库使用相同的高可用性方法,即使建立最终用户会话时不需要配置日志记录和监视数据库可用性。例如,如果您计划使用 SQL Always-On 可用性组作为 HA 策略,请将其用于所有三个数据库对象。

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

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

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

此建议可避免在日常操作中重建任何大型索引造成的任何性能影响,尤其是对于大型监视数据库。

Microsoft 建议,如果索引碎片大于 30%,则重建索引;如果碎片化率低于 30%,则重新组织索引。请参阅“数据库维护”部分。

本地主机缓存

要考虑数据库不可用的情况,Citrix 将本地主机缓存 (LHC) 功能添加到 Citrix Virtual Apps and Desktops 7.x 平台(7.12 及更高版本,包括 XenApp 和 XenDesktop 7.15 LTSR)中。启用此选项允许发布应用程序的用户在 Delivery Controller 与 Citrix 站点配置数据库之间的通信中断时进行连接。如果 SQL 是在高可用性体系结构(例如“始终打开”、“镜像”或“群集”)中配置的,则当发生完全 SQL 中断或网络连接中断时,此功能可提供额外的容错能力。

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

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

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

由于 Epic 社区成员部署的大小不同,建议您与 Citrix 密切合作,以确定使用 LHC 所需的其他资源。

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

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

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

  • 存储:在本地主机缓存模式下,假定平均每秒 10 次登录,存储使用率大约每 2 至 3 分钟增加 1 MB。存储消耗量相对于登录速率而增加。有关详细信息,请参阅 本地主机缓存 一文。

数据库中断的影响

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

组件 数据库中断的影响
站点配置数据库 用户无法连接或重新连接到虚拟桌面。注意: 本地主机缓存 (LHC) 允许具有托管共享桌面、托管 Windows 和浏览器应用程序以及个人桌面的用户重新连接到其应用程序和桌面,即使站点数据库不可用也是如此。在 LHC 模式下,不会收集监视数据,并且无法对站点进行配置更改。
监视数据库 Director 不显示任何历史数据,Studio 无法启动。传入的用户请求和现有用户会话的代理不受影响。
配置日志记录数据库 如果在 Citrix Virtual Apps and Desktops 日志记录首选项中启用了数据库断开连接时允许更改,则配置日志记录数据库的中断不会产生任何影响(不包括未记录配置更改)。否则,管理员无法对 Citrix Virtual Apps and Desktops 进行任何更改。

SQL 大小调整建议

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

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

请记住,监视数据库的大小因数据保留设置而异。向产品中添加捕获精细的 VDA 性能数据功能后,XenApp 和 XenDesktop 7.15 LTSR 具有比 7.6 LTSR 更多的选项。有关配置这些设置的详细信息,请参阅 监视策略设置 并将其纳入数据库大小计算中。

CU 更新和修复

Citrix 每年发布几次 CU,用于 Citrix Virtual Apps and Desktops LTSR。这些 CU 仅包含安全更新和错误修复,没有引入任何新功能。Citrix 建议运行最新的 CU,因为它们可以修复产品中已发现的问题。其中一些修复与 SQL 相关。它们解决了 Citrix 或我们的客户发现的问题,例如锁定、死锁、存储程序。例如,XenApp 7.6 CU 中一直到 CU5 都有许多与 SQL 相关的修复程序。建议查看每个 CU 的“固定问题”部分,并在页面中搜索 SQL

修复的问题

注意:

LC8477 是在 7.6 CU5 和 7.17 中发布的

其他参考资料

供稿人:enry Vernov,首席系统工程师。

SQL Server 和 Citrix 数据库