Citrix Virtual Apps and Desktops

数据库

注意:

从版本 2511 开始,Citrix Web Studio(基于 Web)是 Citrix Virtual Apps and Desktops™ 唯一的管理控制台。Citrix Studio(基于 MMC)已从安装程序中移除。本文仅适用于 Web Studio。有关 Citrix Studio 的信息,请参阅 Citrix Virtual Apps and Desktops 7 2212 或更早版本中的相应文章。

Citrix Virtual Apps 或 Citrix Virtual Desktops™ 站点使用三个 SQL Server 数据库:

  • 站点:(也称为站点配置)存储正在运行的站点配置,以及当前会话状态和连接信息。
  • 日志记录:(也称为配置日志记录)存储有关站点配置更改和管理活动的信息。当启用配置日志记录功能时(默认 = 启用),将使用此数据库。
  • 监视:存储 Director 使用的数据,例如会话和连接信息。

每个 Delivery Controller 都与站点数据库通信。Controller 与数据库之间需要 Windows 身份验证。Controller 可以拔下或关闭,而不会影响站点中的其他 Controller。但是,这意味着站点数据库构成单点故障。如果数据库服务器发生故障,现有连接将继续运行,直到用户注销或断开连接。有关站点数据库不可用时的连接行为的信息,请参阅本地主机缓存

Citrix 建议对数据库执行以下操作:

  • 定期备份。定期备份数据库,以便在数据库服务器发生故障时可以从备份中恢复。每个数据库的备份策略可能不同。有关详细信息,请参阅 CTX135207;但请注意,它指的是 CitrixXenDesktopDB,该数据库不再受支持或向客户提供。

  • 定期备份和还原站点、监视和日志记录 SQL Server 数据库。有关 SQL Server 数据库的特定信息,请参阅创建 SQL Server 数据库的完整备份和差异备份

如果您的站点包含多个区域,请确保主区域始终包含站点数据库。每个区域中的 Controller 都与该数据库通信。

高可用性

有多种高可用性解决方案可供考虑,以确保自动故障转移:

  • AlwaysOn 可用性组(包括基本可用性组):此企业级高可用性与灾难恢复解决方案于 SQL Server 2012 中引入,可帮助您最大限度地提高一个或多个数据库的可用性。AlwaysOn 可用性组要求 SQL Server 实例驻留在 Windows Server 故障转移群集 (WSFC) 节点上。有关详细信息,请参阅 Windows Server Failover Clustering with SQL Server
  • SQL Server 数据库镜像:镜像数据库可确保在活动数据库服务器丢失时,自动故障转移过程会在几秒钟内发生,从而使用户通常不会受到影响。此方法比其他解决方案更昂贵,因为每个数据库服务器都需要完整的 SQL Server 许可证。在镜像环境中不能使用 SQL Server Express 版本。
  • SQL 群集:Microsoft SQL 群集技术可用于自动允许一台服务器接管另一台发生故障的服务器的任务和职责。但是,设置此解决方案更为复杂,并且自动故障转移过程通常比 SQL 镜像等替代方案慢。
  • 使用虚拟机管理程序的 HA 功能:使用此方法,您可以将数据库部署为虚拟机,并使用虚拟机管理程序的高可用性功能。此解决方案比镜像便宜,因为它使用您现有的虚拟机管理程序软件,并且您还可以使用 SQL Server Express 版本。但是,自动故障转移过程较慢,因为数据库启动新计算机可能需要时间,这可能会中断对用户的服务。

本地主机缓存功能补充了 SQL Server 高可用性最佳实践。即使站点数据库不可用,本地主机缓存也允许用户连接和重新连接到应用程序和桌面。有关详细信息,请参阅本地主机缓存

如果站点中的所有 Controller 都发生故障,您可以将 VDA 配置为在高可用性模式下运行,这允许用户继续访问其桌面和应用程序。在高可用性模式下,VDA 接受来自用户的直接 ICA 连接,而不是由 Controller 代理的连接。仅在与所有 Controller 的通信失败的极少数情况下使用此功能。此功能不能替代其他高可用性解决方案。有关详细信息,请参阅 CTX 127564

不支持在 SQL 群集或 SQL 镜像安装中的节点上安装 Controller。

安装数据库软件

注意:

从版本 2411 开始,您可以将 Azure SQL 托管实例用于数据库。

默认情况下,如果您在安装第一个 Delivery Controller™ 时未在该服务器上检测到其他 SQL Server 实例,则会安装 SQL Server Express 版本。该默认操作通常足以满足概念验证或试点部署的需求。但是,SQL Server Express 不支持 Microsoft 高可用性功能。

默认安装使用默认的 Windows 服务帐户和权限。有关这些默认值的详细信息,包括将 Windows 服务帐户添加到 sysadmin 角色,请参阅 Microsoft 文档。在此配置中,Controller 使用 Network Service 帐户。Controller 不需要任何额外的 SQL Server 角色或权限。

如有必要,您可以为数据库实例选择 Hide instance(隐藏实例)。在 Web Studio 中配置数据库地址时,请输入实例的静态端口号,而不是其名称。有关隐藏 SQL Server 数据库引擎实例的详细信息,请参阅 Microsoft 文档。

对于大多数生产部署以及任何使用 Microsoft 高可用性功能的部署,我们建议仅使用受支持的非 Express 版本的 SQL Server。将 SQL Server 安装在除安装第一个 Controller 的服务器之外的其他计算机上。系统要求列出了受支持的 SQL Server 版本。数据库可以驻留在一台或多台计算机上。

在创建站点之前,请确保已安装 SQL Server 软件。您不必创建数据库,但如果创建,则必须为空。还建议配置 Microsoft 高可用性技术。

使用 Windows Update 保持 SQL Server 最新。

通过站点创建向导设置数据库

在站点创建向导的数据库页面上指定数据库名称和地址(位置)。(请参阅数据库地址格式。) 为避免 Director 查询 Monitor Service 时可能出现的错误,请勿在监视数据库的名称中使用空格。

数据库页面提供了两种设置数据库的选项:自动设置和使用脚本设置。通常,如果您(Web Studio 用户和 Citrix 管理员)具有所需的数据库权限,则可以使用自动设置选项。(请参阅设置数据库所需的权限。)

创建站点后,您可以稍后更改配置日志记录和监视数据库的位置。请参阅更改数据库位置

要将站点配置为使用镜像数据库,请完成以下操作,然后继续执行自动或脚本设置过程。

  1. 在两台服务器 A 和 B 上安装 SQL Server 软件。
  2. 在服务器 A 上,创建打算用作主数据库的数据库。备份服务器 A 上的数据库,然后将其复制到服务器 B。
  3. 在服务器 B 上,还原备份文件。
  4. 在服务器 A 上启动镜像。

要在创建站点后验证镜像,请运行 PowerShell cmdlet get-configdbconnection 以确保连接字符串中的故障转移伙伴已设置为镜像。

如果以后在镜像数据库环境中添加、移动或删除 Delivery Controller,请参阅Delivery Controller

自动设置

如果您具有所需的数据库权限,请通过完成以下步骤来设置数据库:

  1. 在站点创建向导的数据库页面上,选择从 Studio 创建和设置数据库

  2. 提供主数据库的名称和地址。

  3. 配置以下 SQL Server 连接选项,以提高数据库连接设置的安全性和灵活性:

    • 加密:指定连接的加密级别。

    • 信任服务器证书:选择以绕过服务器证书验证。

    • 证书中的主机名:输入服务器证书必须匹配的主机名。此设置可确保更严格的证书验证。

有关详细信息,请参阅此Microsoft 文章

如果您指定的地址处存在数据库,则该数据库必须为空。如果指定地址处不存在数据库,系统会通知您找不到数据库,然后询问您是否要为您创建数据库。当您确认该操作时,Web Studio 会自动创建数据库,然后为主数据库和副本数据库应用初始化脚本。

脚本设置

如果您没有所需的数据库权限,请向具有该权限的人员(例如数据库管理员)寻求帮助。顺序如下:

  1. 在站点创建向导的数据库页面上,选择生成脚本以手动设置。此操作会为以下主数据库和副本数据库(站点数据库、监视数据库和日志记录数据库)中的每种数据库生成以下三种类型的脚本。
  • 名称中包含“SysAdmin”的脚本。此脚本用于创建数据库和 Delivery Controller 登录。这些任务需要 securityadmin 权限。
  • 名称中包含“DbOwner”的脚本。此脚本用于在数据库中创建用户角色、添加登录,然后创建数据库架构。这些任务需要 db_owner 权限。
  • 名称中包含“Mixed”的脚本。一个脚本中包含所有任务,无论所需的权限如何。

您可以指明脚本的存储位置。

注意:

在企业环境中,数据库设置包括可能由具有不同角色(权限)的不同团队处理的脚本:securityadmindb_owner。如果适用,您可以首先让具有 securityadmin 角色的管理员运行“SysAdmin”脚本,然后让具有 db_owner 权限的管理员运行“DbOwner”脚本。要生成这些脚本,您还可以使用 PowerShell。有关详细信息,请参阅首选数据库权限脚本

  1. 将这些脚本提供给您的数据库管理员。站点创建向导将在此处自动停止。当您稍后返回以继续站点创建时,系统会提示您。

数据库管理员随后创建数据库。每个数据库必须具有以下特征:

  • 使用以 _CI_AS_KS 结尾的排序规则。我们建议使用以 _100_CI_AS_KS 结尾的排序规则。
  • 为了获得最佳性能,请启用 SQL Server Read-Committed Snapshot。有关详细信息,请参阅 CTX 137161
  • 如果适用,配置高可用性功能。
  • 要配置镜像,请首先将数据库设置为使用完整恢复模式(简单模式是默认设置)。将主体数据库备份到文件并将其复制到镜像服务器。然后,在镜像服务器上还原备份文件。最后,在主体服务器上启动镜像。

数据库管理员使用 SQLCMD 命令行实用程序或 SQL Server Management Studio(在 SQLCMD 模式下)执行以下操作:

  • 在所有高可用性 SQL Server 数据库实例上运行每个 xxx_Replica.sql 脚本(如果配置了高可用性)
  • 在所有主体 SQL Server 数据库实例上运行每个 xxx\_Principal.sql 脚本。

有关 SQLCMD 详细信息,请参阅 Microsoft 文档。

当所有脚本成功完成后,数据库管理员会将三个主体数据库地址提供给 Citrix 管理员。

Web Studio 会提示您继续站点创建。您将返回到数据库页面,完成以下步骤:

  1. 输入地址。

  2. 配置以下 SQL Server 连接选项,以提高数据库连接设置的安全性和灵活性:

    • 加密:指定连接的加密级别。

    • 信任服务器证书:选择此项可绕过服务器证书验证。

    • 证书中的主机名:输入服务器证书必须匹配的主机名。此设置可确保更严格的证书验证。

    有关详细信息,请参阅此 Microsoft 文章

如果无法联系托管数据库的任何服务器,则会显示错误消息。

设置数据库所需的权限

您必须是本地管理员和域用户才能创建和初始化数据库(或更改数据库位置)。您还必须具有某些 SQL Server 权限。以下权限可以通过显式配置或通过 Active Directory 组成员身份获取。如果您的 Web Studio 用户凭据不包含这些权限,系统将提示您输入 SQL Server 用户凭据。

| 操作 | 目的 | 服务器角色 | 数据库角色 | | — | — | – | – | | 创建数据库 | 创建合适的空数据库 | dbcreator | | | 创建架构 | 创建所有特定于服务的架构并将第一个 Controller 添加到站点 | securityadmin* | db_owner | | 添加 Controller | 将 Controller(第一个 Controller 除外)添加到站点 | securityadmin* | db_owner | | 添加 Controller(镜像服务器) | 将 Controller 登录添加到当前在镜像数据库中扮演镜像角色的数据库服务器 | securityadmin* | | | 删除 Controller | 从站点中删除 Controller | ** | db_owner | | 更新架构 | 应用架构更新或修补程序 | | db_owner |

* 尽管在技术上更具限制性,但在实践中,您可以将 securityadmin 服务器角色视为等同于 sysadmin 服务器角色。

** 从站点中移除 Controller 时,不会移除 Controller 对数据库服务器的登录名。这是为了避免可能移除同一台计算机上除此 Citrix 产品之外的其他服务正在使用的登录名。如果不再需要,必须手动移除该登录名。此操作需要 securityadmin 服务器角色成员身份。

当使用 Web Studio 执行这些操作时,Web Studio 用户必须拥有明确属于相应服务器角色的数据库服务器帐户,或者能够提供属于此类帐户的凭据。

首选数据库权限脚本

在企业环境中,数据库设置包括必须由具有不同角色(权限)的不同团队处理的脚本:securityadmindb_owner

使用 PowerShell,您可以指定首选数据库权限。指定非默认值会导致创建单独的脚本。一个脚本包含需要 securityadmin 角色的任务。另一个脚本仅需要 db_owner 权限,并且可以由 Citrix 管理员运行,而无需联系数据库管理员。

get-*DBSchema cmdlet 中,-DatabaseRights 选项具有以下有效值:

  • SA:生成一个脚本,用于创建数据库和 Delivery Controller 登录名。这些任务需要 securityadmin 权限。
  • DBO:生成一个脚本,用于在数据库中创建用户角色、添加登录名,然后创建数据库架构。这些任务需要 db_owner 权限。
  • Mixed:(默认)所有任务都在一个脚本中,无论所需的权限如何。

有关详细信息,请参阅 cmdlet 帮助。

数据库地址格式

您可以通过以下任一形式指定数据库地址:

  • ServerName
  • ServerName\InstanceName
  • ServerName,PortNumber

对于 AlwaysOn 可用性组,请在位置字段中指定该组的侦听器。

更改数据库位置

创建站点后,您可以更改配置日志记录监视数据库的位置。但是,您无法更改站点数据库的位置。更改数据库位置时,请记住以下注意事项:

  • 以前数据库中的数据不会导入到新数据库中。
  • 检索日志时,无法从两个数据库聚合日志。
  • 新数据库中的第一个日志条目指示发生了数据库更改,但它不标识以前的数据库。
  • 启用强制日志记录时,无法更改配置日志记录数据库的位置。
  • 不支持在 SQL Server 和 Azure SQL 之间更改数据库位置。

要更改数据库的位置:

  1. 如果您使用 Microsoft SQL Server,请确保在要驻留数据库的服务器上安装了受支持的版本。根据需要设置高可用性功能。
  2. 登录 Web Studio,然后在左侧窗格中选择设置
  3. 找到数据库磁贴,然后选择编辑
  4. 管理数据库页面上,选择要为其指定新位置的数据库,然后在操作栏中选择更改数据库
  5. 指定新位置和数据库名称。如果数据库托管在 Azure SQL 上,请键入具有管理数据库权限的服务主体的凭据。
  6. 如果您希望 Web Studio 创建数据库并且您具有相应的权限,请单击完成。出现提示时,单击完成,然后 Web Studio 会自动创建数据库。Web Studio 会尝试使用您的凭据访问数据库。如果失败,系统会提示您输入数据库用户的凭据。然后,Web Studio 会将数据库架构上传到数据库。凭据仅在数据库创建期间保留。
  7. 如果您不希望 Web Studio 创建数据库,或者您没有足够的权限,请单击生成数据库脚本。生成的脚本包含手动创建数据库和(如果需要)镜像数据库的说明。在上传架构之前,请确保数据库为空,并且至少有一个用户具有访问和更改数据库的权限。

更多信息

数据库