Citrix Virtual Apps and Desktops

Microsoft Azure Resource Manager 云环境

使用 Microsoft Azure Resource Manager 在您的 Citrix Virtual Apps and Desktops 部署中预配虚拟机时,请按照本文中的指导原则进行操作。

我们假设您熟悉以下内容:

Azure 按需预配

在采用 Azure 按需预配的情况下,仅在完成预配后,当 Citrix Virtual Apps and Desktops 启动打开电源操作时才创建 VM。

使用 MCS 在 Azure Resource Manager 中创建计算机目录时,Azure 按需预配功能:

  • 降低存储成本
  • 加快目录创建过程

创建 MCS 目录时,Azure 门户将显示资源组中的网络安全组、网络接口、基础映像和身份磁盘。

在 Citrix Virtual Apps and Desktops 为 VM 启动打开电源操作之前,Azure 门户不会显示 VM。有两种类型的计算机,它们有以下区别:

  • 对于池计算机,仅当存在 VM 时才会有操作系统磁盘和写回缓存。在控制台中关闭池计算机时,该 VM 在 Azure 门户中不可见。如果您经常关闭计算机(例如,在工作时间以外),则可以显著节省存储成本。
  • 对于专用计算机,在首次打开 VM 时创建操作系统磁盘。Azure 门户中的 VM 将保留在存储中,直到计算机标识被删除。在控制台中关闭专用计算机时,该 VM 仍在 Azure 门户中可见。

与 Azure Resource Manager 的连接

连接和资源描述了创建连接的向导。以下信息涵盖与 Azure Resource Manager 连接有关的详细信息。

注意事项:

  • Citrix 建议使用具有贡献者角色的服务主体。但是,请参阅最低权限部分以获取最低权限列表。
  • 在创建第一个连接时,Azure 会提示您为其授予必要的权限。对于将来的连接,您仍然必须进行身份验证,但是 Azure 会记住您以前同意的情况,并且不会再显示提示。
  • 用于身份验证的帐户必须具有使用 Azure RBAC 在订阅中分配角色的权限。例如,订阅的所有者、基于角色的访问控制管理员或用户访问管理员。
  • 用于身份验证的帐户必须是订阅的目录的成员。需要注意两种类型的帐户:“工作或学校”和“个人 Microsoft 帐户”。有关详细信息,请参阅 CTX219211
  • 虽然可以通过将现有 Microsoft 帐户添加为订阅目录的成员来使用该帐户,但如果以前已为用户授予对其中一个目录的资源的来宾访问权限,则可能会出现复杂情况。在这种情况下,他们可能在目录中有一个不会授予其必要权限的占位符条目,并会返回错误。

    通过从目录中删除资源并明确重新添加来改正此问题。但是,请谨慎使用此方法,因为它会对帐户可以访问的其他资源产生意外影响。

  • 有一个已知问题,即某些帐户实际上是成员时,会被检测为目录来宾。此类配置通常发生在已建立的较旧的目录帐户中。解决方法:向目录中添加一个帐户,该帐户采用适当的成员身份值。
  • 资源组只是资源的容器,它们可以包含来自自己所在区域以外的区域的资源。如果您希望资源组的区域中显示的资源可用,这可能会引起混淆。
  • 请确保您的网络和子网足够大,可以容纳您需要的计算机数量。这需要一些先见之明,但 Microsoft 会帮助您指定合适的值,并提供有关地址空间容量的指导。

可以通过两种方式建立与 Azure 的主机连接:

  • 通过向 Azure 进行身份验证以创建服务主体。
  • 使用之前创建的服务主体的详细信息连接到 Azure。

创建服务主体

重要:

此功能尚不适用于 Azure 中国和 Azure 德国订阅。

在开始之前,请向 Azure 进行身份验证。确保:

  • 在订阅的 Azure Active Directory 租户中具有一个用户帐户。
  • 用于身份验证的帐户必须具有使用 Azure RBAC 在订阅中分配角色的权限。例如,订阅的所有者、基于角色的访问控制管理员或用户访问管理员。
  • 您拥有全局管理员、应用程序管理员或应用程序开发者权限以进行身份验证。创建主机连接后,可以撤消这些权限。有关角色的详细信息,请参阅 Azure AD 内置角色

向 Azure 进行身份验证以创建服务主体时,应用程序将在 Azure 中注册。密钥(客户端密码)是为已注册的应用程序创建的。注册的应用程序使用客户端密钥向 Azure AD 进行身份验证。请务必在客户端密码到期之前进行更改。在密钥到期之前,您会在控制台上收到警报。

要向 Azure 进行身份验证以创建服务主体,请在添加连接和资源向导中完成以下步骤:

  1. 连接页面上,选择创建新连接Microsoft Azure 连接类型和您的 Azure 环境。

  2. 选择可以使用哪些工具来创建虚拟机,然后选择下一步

  3. 连接详细信息页面上,输入 Azure 订阅 ID 和连接的名称。输入订阅 ID 后,将启用新建按钮。

    注意:

    连接名称可以包含 1-64 个字符,不能仅包含空格或字符 \/;:#.*?=<>|[]{}"'()'

  4. 选择新建,然后输入 Azure Active Directory 帐户用户名和密码。
  5. 选择登录
  6. 选择接受以将列出的权限授予 Citrix Virtual Apps and Desktops。Citrix Virtual Apps and Desktops 会创建一个允许它代表指定的用户管理 Azure 资源的服务主体。
  7. 选择接受后,您将返回到向导中的连接页面。

    注意:

    成功对 Azure 进行身份验证后,新建使用现有按钮将消失。此时将显示连接成功文本,并带有一个绿色复选标记,指示已成功连接到您的 Azure 订阅。

  8. 连接详细信息页面上,选择下一步

    注意:

    在成功对 Azure 进行身份验证并同意授予所需的权限之后,才能进入下一页。

  9. 为连接配置资源。资源由区域和网络组成。

    • 区域页面上,选择一个区域。
    • 网络页面上,执行以下操作:
      • 键入 1–64 字符的资源名称以帮助确定区域和网络组合。资源名称不能仅包含空格,也不能包含字符 \/;:#.*?=<>|[]{}"'()'
      • 选择一个虚拟网络/资源组对。(如果您有多个具有相同名称的虚拟网络,将网络名称与资源组配对可提供唯一的组合。)如果您在上一个页面上选择的区域不具有任何虚拟网络,请返回到该页面并选择一个具有虚拟网络的区域。
  10. 摘要页面上,查看设置的摘要,然后选择完成以完成您的设置。

使用之前创建的服务主体的详细信息连接到 Azure

要手动创建服务主体,请连接到 Azure Resource Manager 订阅并使用以下部分中提供的 PowerShell cmdlet。

必备条件:

  • SubscriptionId: 您希望预配 VDA 的订阅的 Azure Resource Manager SubscriptionID
  • ActiveDirectoryID:您在 Azure AD 中注册的应用程序的租户 ID。
  • ApplicationName: 要在 Azure AD 中创建的应用程序的名称。

要创建服务主体,请执行以下操作:

  1. 连接到您的 Azure Resource Manager 订阅。

    Connect-AzAccount

  2. 选择您要创建服务主体的 Azure Resource Manager 订阅。

    Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription

  3. 在您的 AD 租户中创建应用程序。

    $AzureADApplication = New-AzADApplication -DisplayName $ApplicationName

  4. 创建服务主体。

    New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId

  5. 向服务主体分配角色。

    New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $AzureADApplication.AppId –scope /subscriptions/$SubscriptionId

  6. 在 PowerShell 控制台的输出窗口中,记下 ApplicationId。请在创建主机连接时提供该 ID。

添加连接和资源向导中,执行以下操作:

  1. 连接页面上,选择创建新连接Microsoft Azure 连接类型和您的 Azure 环境。

  2. 选择可以使用哪些工具来创建虚拟机,然后选择下一步

  3. 连接详细信息页面上,输入 Azure 订阅 ID 和连接的名称。

    注意:

    连接名称可以包含 1-64 个字符,不能仅包含空格或字符 \/;:#.*?=<>|[]{}"'()'

  4. 选择使用现有。在现有服务主体详细信息窗口中,输入现有服务主体的以下设置。输入详细信息后,将会启用保存按钮。选择保存。除非提供有效的详细信息,否则无法跳过此页面。

    • 订阅 ID。输入您的 Azure 订阅 ID。要获取您的订阅 ID,请登录 Azure 门户并导航到订阅 > 概述
    • Active Directory ID(租户 ID)。输入您在 Azure AD 中注册的应用程序的目录(租户)ID。
    • 应用程序 ID。输入您在 Azure AD 中注册的应用程序的应用程序(客户端)ID。
    • 应用程序机密。创建密码(客户端密码)。注册的应用程序使用密钥向 Azure AD 进行身份验证。出于安全考虑,我们建议您定期更改密钥。请务必保存密钥,因为以后将无法检索密钥。
    • 机密过期日期。输入应用程序机密的过期日期。在密钥到期之前,您会在控制台上收到警报。但是,如果密钥过期,您会收到错误。

      注意:

      出于安全考虑,有效期从现在起不得超过两年。

    • 身份验证 URL。此字段将自动填充且不可编辑。
    • 管理 URL。此字段将自动填充且不可编辑。
    • 存储后缀。此字段将自动填充且不可编辑。

      在 Azure 中创建 MCS 目录需要访问以下端点。访问这些端点可优化您的网络与 Azure 门户及其服务之间的连接。

  5. 选择保存后,您将返回到连接详细信息页面。选择下一步进入下一页。

  6. 为连接配置资源。资源由区域和网络组成。

    • 区域页面上,选择一个区域。
    • 网络页面上,执行以下操作:
      • 键入 1–64 字符的资源名称以帮助确定区域和网络组合。资源名称不能仅包含空格,也不能包含字符 \/;:#.*?=<>|[]{}"'()'
      • 选择一个虚拟网络/资源组对。(如果您有多个具有相同名称的虚拟网络,将网络名称与资源组配对可提供唯一的组合。)如果您在上一个页面上选择的区域不具有任何虚拟网络,请返回到该页面并选择一个具有虚拟网络的区域。
  7. 摘要页面上,查看设置的摘要,然后选择完成以完成您的设置。

使用 Azure Resource Manager 映像创建计算机目录

映像可以是磁盘、快照或 Azure Compute Gallery 中用于在计算机目录中创建 VM 的映像定义的映像版本。有关映像的常规信息,请参阅创建计算机目录

Azure 限制

Azure Resource Manager 限制订阅和租户的请求,从而根据定义的限制路由流量,根据提供商的特定需求量身定制。请参阅 Microsoft 站点上的限制 Resource Manager 请求,了解详细信息。订阅和租户存在限制,在这些情况下,管理许多计算机可能会成问题。例如,包含许多计算机的订阅可能会遇到与电源操作有关的性能问题。

提示:

有关详细信息,请参阅使用 Machine Creation Services 提高 Azure 性能

为了帮助缓解这些问题,您可以删除 MCS 内部限制,以使用 Azure 中的更多可用请求配额。

我们建议在大型订阅(例如,包含 1,000 个 VM 的订阅)中打开或关闭 VM 的电源时采用以下最佳设置:

  • 绝对同时操作:500
  • 每分钟最大新操作数:2000
  • 操作的最大并发数:500

默认情况下,MCS 最多支持 500 个并发操作。或者,您可以使用 Remote PowerShell SDK 设置最大并发操作数。

使用 PowerShell 属性 MaximumConcurrentProvisioningOperations 可指定并发 Azure 预配操作的最大数量。使用此属性时,请注意:

  • MaximumConcurrentProvisioningOperations 的默认值为 500。
  • 使用 PowerShell 命令 Set-item 配置 MaximumConcurrentProvisioningOperations 参数。

Azure 资源组

Azure 预配资源组提供了一种预配向用户提供应用程序和桌面的 VM 的方法。您可以创建 MCS 计算机目录时添加现有的空 Azure 资源组,也可以创建新资源组。有关 Azure 资源组的信息,请参阅 Microsoft 文档

Azure 资源组使用情况

每个 Azure 资源组的虚拟机、托管磁盘、快照和映像数量都没有限制。(删除了每个 Azure 资源组每 800 个托管磁盘包含 240 个 VM 的限制。)

  • 使用完整作用域服务主体创建计算机目录时,MCS 仅创建一个 Azure 资源组,并为目录使用该资源组。
  • 使用窄作用域服务主体创建计算机目录时,必须为目录提供一个空的、预先创建的 Azure 资源组。

Azure 临时磁盘

Azure 临时磁盘允许您重新调整缓存磁盘或临时磁盘的用途,以便为启用了 Azure 的虚拟机存储操作系统磁盘。此功能对于需要的 SSD 磁盘的性能高于标准 HDD 磁盘的 Azure 环境非常有用。要使用临时磁盘,必须在运行 New-ProvScheme 时将自定义属性 UseEphemeralOsDisk 设置为 true

注意:

如果自定义属性 UseEphemeralOsDisk 设置为 false 或未指定值,则所有预配的 VDA 将继续使用预配的操作系统磁盘。

下面是要在预配方案中使用的自定义属性的示例集:

"CustomProperties": [
            {
                "Name": "UseManagedDisks",
                "Value": "true"
            },
            {
                "Name": "StorageType",
                "Value": "Standard_LRS"
            },
            {
                "Name": "UseSharedImageGallery",
                "Value": "true"
            },
            {
                "Name": "SharedImageGalleryReplicaRatio",
                "Value": "40"
            },
            {
                "Name": "SharedImageGalleryReplicaMaximum",
                "Value": "10"
            },
            {
                "Name": "LicenseType",
                "Value": "Windows_Server"
            },
            {
                "Name": "UseEphemeralOsDisk",
                "Value": "true"
            }
        ],
<!--NeedCopy-->

如何使用临时操作系统磁盘创建计算机

临时操作系统磁盘根据 CustomProperties 参数中的 UseEphemeralOsDisk 属性进行控制。

临时磁盘的重要注意事项

要使用 New-ProvScheme 预配临时操作系统磁盘,请注意以下限制:

  • 用于目录的 VM 大小必须支持临时操作系统磁盘。
  • 与 VM 大小关联的缓存磁盘或临时磁盘的大小必须大于或等于操作系统磁盘的大小。
  • 临时磁盘大小必须大于缓存磁盘大小。

还要注意以下情况下的问题:

  • 创建预配方案。
  • 修改预配方案。
  • 更新映像。

Azure 临时磁盘和 Machine Creation Services (MCS) 存储优化 (MCS I/O)

无法同时启用 Azure 临时操作系统磁盘和 MCS I/O。

重要注意事项如下:

  • 您无法创建同时启用了临时操作系统磁盘和 MCS I/O 的计算机目录。

  • PowerShell 参数 (UseWriteBackCacheUseEphemeralOsDisk)在中 New-ProvSchemeSet-ProvScheme 中设置为 true 失败,并显示正确的错误消息。
  • 对于在启用了这两种功能的情况下创建的现有计算机目录,您仍然可以:
    • 更新计算机目录。
    • 添加或删除 VM。
    • 删除计算机目录。

Azure 服务器端加密

Citrix Virtual Apps and Desktops 和 Citrix DaaS 通过 Azure 密钥保管库支持 Azure 托管磁盘的客户托管加密密钥。通过此支持,您可以使用自己的加密密钥对计算机目录的托管磁盘进行加密,从而管理组织和合规性要求。有关详细信息,请参阅 Azure 磁盘存储的服务器端加密

对托管磁盘使用此功能时:

  • 要更改磁盘加密时使用的密钥,请更改 DiskEncryptionSet 中的当前密钥。与该 DiskEncryptionSet 关联的所有资源都将更改为使用新密钥加密。

  • 禁用或删除密钥时,任何具有使用该密钥的磁盘的 VM 都会自动关闭。关闭后,除非再次启用该密钥或分配新密钥,否则 VM 将无法使用。使用该密钥的任何目录都无法打开,也无法向其中添加 VM。

使用客户管理的加密密钥时的重要注意事项

使用此功能时请注意以下事项:

  • 与客户管理的密钥(Azure 密钥保管库、磁盘加密集、VM、磁盘和快照)相关的所有资源都必须位于同一订阅和区域中。

  • 启用客户管理的加密密钥后,以后无法将其禁用。如果要禁用或删除客户管理的加密密钥,请将所有数据复制到不使用客户管理的加密密钥的其他托管磁盘。

  • 使用服务器端加密和客户托管的密钥从加密的自定义映像创建的磁盘必须使用相同的客户管理的密钥进行加密。这些磁盘必须位于同一个订阅中。

  • 使用服务器端加密和客户管理的密钥加密的磁盘创建的快照必须使用相同的客户管理的密钥进行加密。

  • 使用客户管理的密钥加密的磁盘、快照和映像无法移动到其他资源组和订阅。

  • 当前或之前使用 Azure 磁盘加密进行加密的托管磁盘不能使用客户管理的密钥进行加密。

  • 有关每个区域的磁盘加密集的限制,请参阅 Microsoft 站点

注意:

有关配置 Azure 服务器端加密的信息,请参阅快速入门:使用 Azure 门户创建密钥保管库

Azure 客户管理的加密密钥

创建计算机目录时,可以选择是否加密在目录中预配的计算机上的数据。通过使用客户管理的加密密钥的服务器端加密,您可以在托管磁盘级别管理加密,并保护目录中的计算机上的数据。磁盘加密集 (Disk Encryption Set, DES) 表示客户管理的密钥。要使用此功能,必须首先在 Azure 中创建 DES。DES 采用以下格式:

  • /subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/Sample-RG/providers/Microsoft.Compute/diskEncryptionSets/SampleEncryptionSet

从列表中选择 DES。所选择的 DES 必须与您的资源位于相同的订阅和区域。如果使用 DES 加密了映像,请在创建计算机目录时使用相同的 DES。创建目录后无法更改 DES。

如果使用加密密钥创建目录,然后在 Azure 中禁用相应的 DES,则无法再打开目录中的计算机的电源或者向其中添加计算机。

Azure 专用主机

可以使用 MCS 在 Azure 专用主机上预配 VM。在 Azure 专用主机上预配 VM 之前:

  • 创建主机组。
  • 在该主机组中创建主机。
  • 确保有足够的主机容量用于创建目录和虚拟机。

可以创建具有通过以下 PowerShell 脚本定义的主机租赁的计算机目录:

New-ProvScheme <otherParameters> -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <Property xsi:type="StringProperty" Name="HostGroupId" Value="myResourceGroup/myHostGroup" />
 ...other Custom Properties...
 </CustomProperties>
<!--NeedCopy-->

使用 MCS 在 Azure 专用主机上预配虚拟机时,请注意:

  • 专用主机是目录属性,一旦创建了目录,则无法进行更改。Azure 当前不支持专用租赁。
  • 使用 HostGroupId 参数时,需要在托管单元所在区域中预配置的 Azure 主机组。
  • Azure 自动放置是必需的。此功能请求加载与主机组关联的订阅。有关详细信息,请参阅在 Azure 专用主机上设置 VM 规模 - 公共预览版。如果未启用自动放置,MCS 在目录创建过程中会引发错误。

Azure 共享映像库

将 Azure 共享映像库用作 Azure 中 MCS 预配的计算机的已发布映像存储库。可以在该库中存储已发布的映像,以加快操作系统磁盘的创建和水化速度,从而缩短非永久性 VM 的启动和应用程序启动时间。共享映像库包含以下三个元素:

  • :映像存储在此位置。MCS 为每个计算机目录创建一个库。
  • 库映像定义:此定义包括有关已发布的映像的信息(操作系统类型和状态、Azure 区域)。MCS 为目录创建的每个映像创建一个映像定义。
  • 库映像版本: 共享映像库中的每个映像可以有多个版本,每个版本可以在不同的区域中有多个副本。每个副本都是已发布的映像的完整副本。

注意:

共享映像库功能仅适用于托管磁盘。它不适用于旧版计算机目录。

有关详细信息,请参阅 Azure 共享映像库概述

配置共享映像库

使用 New-ProvScheme 命令可在支持共享映像库的情况下创建预配方案。使用 Set-ProvScheme 命令为预配方案启用或禁用此功能,并更改副本比率和副本最大值。

在预配方案中添加了三个自定义属性以支持共享映像库功能:

UseSharedImageGallery

  • 定义是否使用共享映像库存储已发布的映像。如果设置为 True,则映像将存储为共享映像库映像,否则映像将存储为快照。
  • 有效值为 TrueFalse
  • 如果未定义属性,则默认值为 False

SharedImageGalleryReplicaRatio

  • 定义计算机与库映像版本副本的比率。
  • 有效值为大于 0 的整数。
  • 如果未定义该属性,则将使用默认值。永久性操作系统磁盘的默认值为 1000,非永久性操作系统磁盘的默认值为 40。

SharedImageGalleryReplicaMaximum

  • 定义每个库映像版本的最大副本数。
  • 有效值为大于 0 的整数。
  • 如果未定义该属性,则默认值为 10。
  • Azure 当前支持多达 10 个库映像单个版本的副本。如果将属性设置为大于 Azure 支持的值,MCS 将尝试使用指定值。Azure 将生成一个错误,MCS 日志之后将当前副本计数保持不变。

提示:

使用共享映像库为 MCS 预配的目录存储已发布的映像时,MCS 会根据目录中的计算机数、副本比率和副本最大值来设置库映像版本副本计数。副本计数的计算方法如下:将目录中的计算机数除以副本比率(四舍五入到最接近的整数值),然后将该值最高限定到最大副本计数。例如,副本比率为 20,最大值为 5,0—20 台计算机将 创建 1 个副本,21—40 台将创建 2 个副本,41-60 台将创建 3 个副本,61—80 台将创建 4 个副本,81 台以上将创建 5 个副本。

用例:更新共享映像库副本比率和副本最大值

现有计算机目录使用共享映像库。使用 Set-ProvScheme 命令更新目录中的所有现有计算机以及将来任何计算机的自定义属性:

Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageType" Value="Standard_LRS"/> <Property xsi:type="StringProperty" Name="UseManagedDisks" Value="True"/> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="True"/> <Property xsi:type="IntProperty" Name="SharedImageGalleryReplicaRatio" Value="30"/> <Property xsi:type="IntProperty" Name="SharedImageGalleryReplicaMaximum" Value="20"/></CustomProperties>'
<!--NeedCopy-->

用例:将快照目录转换为共享映像库目录

对于此用例:

  1. UseSharedImageGallery 标志设置为 True 的情况下运行 Set-ProvScheme。(可选)包括 SharedImageGalleryReplicaRatioSharedImageGalleryReplicaMaximum 属性。
  2. 更新目录。
  3. 关闭并打开计算机电源以强制更新。

例如:

Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageType" Value="Standard_LRS"/> <Property xsi:type="StringProperty" Name="UseManagedDisks" Value="True"/> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="True"/> <Property xsi:type="IntProperty" Name="SharedImageGalleryReplicaRatio" Value="30"/> <Property xsi:type="IntProperty" Name="SharedImageGalleryReplicaMaximum" Value="20"/></CustomProperties>'
<!--NeedCopy-->

提示:

参数 SharedImageGalleryReplicaRatioSharedImageGalleryReplicaMaximum 不是必需的。Set-ProvScheme 命令完成后,尚未创建共享映像库映像。将目录配置为使用库后,下一个目录更新操作会将已发布的映像存储在库中。目录更新命令创建库、库映像和映像版本。关闭并打开计算机会对其进行更新,此时副本计数将在适当的情况下更新。自此以后,所有现有的非永久性计算机都将使用共享映像库映像重置,并使用该映像创建所有新预配的计算机。旧快照会在几个小时内自动清理。

用例:将共享映像库目录转换为快照目录

对于此用例:

  1. UseSharedImageGallery 标志设置为 False 或未定义的情况下运行 Set-ProvScheme
  2. 更新目录。
  3. 关闭并打开计算机电源以强制更新。

例如:

Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageType" Value="Standard_LRS"/> <Property xsi:type="StringProperty" Name="UseManagedDisks" Value="True"/> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="False"/></CustomProperties>'
<!--NeedCopy-->

提示:

与从快照更新到共享映像库目录不同,每台计算机的自定义数据都尚未更新以反映新的自定义属性。运行以下命令以查看原始的共享映像库自定义属性:Get-ProvVm -ProvisioningSchemeName catalog-nameSet-ProvScheme 命令完成后,尚未创建映像快照。将目录配置为不使用库后,下一个目录更新操作将已发布的映像存储为快照。自此以后,所有现有的非永久性计算机都将使用快照重置,并且所有新预配的计算机都是基于该快照创建的。关闭并打开计算机会对其进行更新,此时自定义计算机数据将更新以反映 UseSharedImageGallery 设置为 False。旧的共享映像库资产(库、映像和版本)将在几个小时内自动清理。

将计算机预配到指定的可用性区域中

可以将计算机预配到 Azure 环境中的特定可用性区域中。可以使用 PowerShell 来实现。

注意:

如果未指定任何区域,MCS 将允许 Azure 将计算机放置在区域内。如果指定了多个区域,MCS 会在这些区域之间随机分配计算机。

通过 PowerShell 配置可用性区域

使用 PowerShell,您可以使用 Get-Item 查看产品清单项目。例如,要查看美国东部地区 Standard_B1ls服务产品,请执行以下操作:

$serviceOffering = Get-Item -path "XDHyp:\Connections\my-connection-name\East US.region\serviceoffering.folder\Standard_B1ls.serviceoffering"
<!--NeedCopy-->

要查看区域,请使用该项目的 AdditionalData 参数:

$serviceOffering.AdditionalData

如果未指定可用性区域,计算机的预配方式没有任何变化。

要通过 PowerShell 配置可用性区域,请使用随 New-ProvScheme 操作提供的区域自定义属性。区域属性定义了要在其中预配计算机的可用性区域列表。这些区域可以包括一个或多个可用性区域。例如,<Property xsi:type="StringProperty" Name="Zones" Value="1, 3"/> 对于区域 1 和 3。

使用 Set-ProvScheme 命令可更新预配方案的区域。

如果提供的区域无效,则不会更新预配方案,并且会显示一条错误消息,提供有关如何修复无效命令的说明。

提示:

如果指定了无效的自定义属性,则不会更新预配方案,并显示相关的错误消息。

Azure 临时磁盘

Azure 临时磁盘允许您重新调整缓存磁盘或临时磁盘的用途,以便为启用了 Azure 的虚拟机存储操作系统磁盘。此功能对于需要的 SSD 磁盘的性能高于标准 HDD 磁盘的 Azure 环境非常有用。

注意:

永久目录不支持临时操作系统磁盘。

临时操作系统磁盘要求您的预配方案使用托管磁盘和共享映像库。有关详细信息,请参阅 Azure 共享映像库

使用 PowerShell 配置临时磁盘

要为目录配置 Azure 临时操作系统磁盘,请使用 Set-ProvScheme 中的 UseEphemeralOsDisk 参数。将 UseEphemeralOsDisk 参数的值设置为 true

注意:

要使用此功能,还必须启用参数 UseManagedDisksUseSharedImageGallery

例如:

Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="UseManagedDisks" Value="true" />
<Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" />
<Property xsi:type="StringProperty" Name="UseEphemeralOsDisk" Value="true" />
</CustomProperties>'
<!--NeedCopy-->

存储临时操作系统临时磁盘

您可以选择将临时操作系统磁盘存储在 VM 临时磁盘或资源磁盘上。通过此功能,您可以将临时操作系统磁盘用于没有缓存或缓存不足的 VM。此类 VM 具有用于存储临时操作系统磁盘的临时磁盘或资源磁盘,例如 Ddv4

请注意以下事项:

  • 临时磁盘存储在 VM 缓存磁盘或 VM 的临时(资源)磁盘中。除非缓存磁盘的大小不足以容纳操作系统磁盘的内容,否则缓存磁盘优先于临时磁盘。
  • 对于更新,如果新映像大于缓存磁盘但小于临时磁盘,则会导致将临时操作系统磁盘替换为 VM 的临时磁盘。

重启电源时保留已置备的虚拟机

选择在重启电源时是否保留预配的虚拟机。使用 PowerShell 参数 New-ProvScheme CustomProperties。此参数支持额外的属性 PersistVm,用于确定重启电源后预配的虚拟机是否仍然存在。将 PersistVm 属性设置为 true 以在关闭电源时保留虚拟机,或者将属性设置为 false 以确保在关闭电源时不保留虚拟机。

注意:

PersistVm 属性仅适用于启用了属性 CleanOnBootUseWriteBackCache 的预配方案。如果未为非持久性虚拟机指定了 PersistVm 属性,则在关闭电源时将从 Azure 环境中删除这些虚拟机。

在以下示例中,New-ProvScheme CustomProperties 参数将 PersistVm 属性设置为 true

<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="UseManagedDisks" Value="true" />
<Property xsi:type="StringProperty" Name="StorageType" Value="Standard_LRS" />
<Property xsi:type="StringProperty" Name="PersistWBC" Value="false" />
<Property xsi:type="StringProperty" Name="PersistOsDisk" Value="true" />
<Property xsi:type="StringProperty" Name="PersistVm" Value="true" />
<Property xsi:type="StringProperty" Name="ResourceGroups" Value="demo-resourcegroup" />
<Property xsi:type="StringProperty" Name="LicenseType" Value="Windows_Client" />
</CustomProperties>
<!--NeedCopy-->

在以下示例中,New-ProvScheme CustomProperties 参数通过将 PersistVM 设置为 true 来保留回写式缓存:

 New-ProvScheme
 -AzureAdJoinType "None"
 -CleanOnBoot
 -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"UseManagedDisks`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"StorageType`" Value=`"Standard_LRS`" /><Property xsi:type=`"StringProperty`" Name=`"PersistWBC`" Value=`"false`" /><Property xsi:type=`"StringProperty`" Name=`"PersistOsDisk`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"PersistVm`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"ResourceGroups`" Value=`"demo-resourcegroup`" /><Property xsi:type=`"StringProperty`" Name=`"LicenseType`" Value=`"Windows_Client`" /></CustomProperties>"
 -HostingUnitName "demo"
 -IdentityPoolName "NonPersistent-MCSIO-PersistVM"
 -MasterImageVM "XDHyp:\HostingUnits\demo\image.folder\scale-test.resourcegroup\demo-snapshot.snapshot"
 -NetworkMapping @ {"0"="XDHyp:\HostingUnits\demo\virtualprivatecloud.folder\East US.region\virtualprivatecloud.folder\ji-test.resourcegroup\jitest-vnet.virtualprivatecloud\default.network"}
-ProvisioningSchemeName "NonPersistent-MCSIO-PersistVM"
 -ServiceOffering "XDHyp:\HostingUnits\demo\serviceoffering.folder\Standard_B2ms.serviceoffering" -UseWriteBackCache
 -WriteBackCacheDiskSize 127
 -WriteBackCacheMemorySize 256
 <!--NeedCopy-->

提示:

PersistVm 属性决定是否保留预配的虚拟机。PersistOsdisk 属性决定是否保留操作系统磁盘。要保留预配的虚拟机,请先保留操作系统磁盘。如果不先删除虚拟机,则无法删除操作系统磁盘。可以在不使用指定 PersistVm 参数的情况下使用 PersistOsdisk 属性。

存储类型

为 Azure 环境中使用 MCS 的虚拟机选择不同的存储类型。对于目标 VM,MCS 支持:

  • 操作系统磁盘:高级 SSD、SSD 或 HDD
  • 回写式缓存磁盘:高级 SSD、SSD 或 HDD

使用这些存储类型时,请注意以下事项:

  • 确保您的 VM 支持选定的存储类型。
  • 如果您的配置使用 Azure 临时磁盘,则无法获得回写式缓存磁盘设置的选项。

提示:

StorageType 已针对操作系统类型和存储帐户进行了配置。WBCDiskStorageType 已针对写回式缓存存储类型进行了配置。对于常见目录,StorageType 是必需的。如果未配置 WBCDiskStorageType,则会将 StorageType 用作 WBCDiskStorageType 的默认值。

如果未配置 WBCDiskStorageType,则会将 StorageType 用作 WBCDiskStorageType 的默认值

配置存储类型

要配置 VM 的存储类型,请使用 New-ProvScheme 中的 StorageType 参数。将 StorageType 参数的值设置为受支持的存储类型之一。

下面是预配方案中的一组示例 CustomProperties 参数:

Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="UseManagedDisks" Value="true" />
<Property xsi:type="StringProperty" Name="StorageType" Value="Premium_LRS" />
<Property xsi:type="StringProperty" Name="LicenseType" Value="Windows_Client" />
</CustomProperties>'
<!--NeedCopy-->

检索 Azure VM、快照、操作系统磁盘和库映像定义的信息

可以显示 Azure VM 的信息,包括操作系统磁盘和类型、快照和库映像定义。分配计算机目录时,将为主映像上的资源显示此信息。使用此功能可以查看和选择 Linux 或 Windows 映像。PowerShell 属性 TemplateIsWindowsTemplate 已添加到 AdditionDatafield 参数中。此字段包含 Azure 特定的信息:VM 类型、操作系统磁盘、库映像信息和操作系统类型信息。将 TemplateIsWindowsTemplate 设置为 True 表示操作系统类型为 Windows;将 TemplateIsWindowsTemplate 设置为 False 表示操作系统类型为 Linux。

提示:

TemplateIsWindowsTemplate PowerShell 属性显示的信息来自 Azure API。在某些情况下,此字段可能为空。例如,数据磁盘中的快照不包含 TemplateIsWindowsTemplate 字段,因为无法从快照中检索操作系统类型。

例如,使用 PowerShell 将 Windows 操作系统类型的 Azure VM AdditionData 参数设置为 True

PS C:\Users\username> (get-item XDHyp:\HostingUnits\mynetwork\image.folder\username-dev-testing-rg.resourcegroup\username-dev-tsvda.vm).AdditionalData
Key Value
ServiceOfferingDescription Standard_B2ms
HardDiskSizeGB 127
ResourceGroupName FENGHUAJ-DEV-TESTING-RG
ServiceOfferingMemory 8192
ServiceOfferingCores 2
TemplateIsWindowsTemplate True
ServiceOfferingWithTemporaryDiskSizeInMb 16384
SupportedMachineGenerations Gen1,Gen2
<!--NeedCopy-->

Azure 应用商店

Citrix Virtual Apps and Desktops 和 Citrix DaaS 支持在 Azure 上使用包含计划信息的主映像来创建计算机目录。有关详细信息,请参阅 Microsoft Azure 应用商店

提示:

在 Azure 应用商店中找到的某些映像(例如标准 Windows Server 映像)不会附加计划信息。Citrix DaaS 功能适用于付费映像。

请确保在共享映像库中创建的映像包含 Azure 计划信息

请使用本部分中的过程在 Citrix Studio 中查看共享映像库映像。这些映像可以选择用于主映像。要将映像放入共享映像库,请在库中创建映像定义。

Azure 应用商店共享映像库

发布选项页面中,验证购买计划信息。

购买计划信息字段最初为空。请使用用于映像的购买计划信息填充这些字段。未能填充购买计划信息会导致计算机目录进程失败。

Azure 应用商店验证 VDA 发布选项

确认购买计划信息后,在定义中创建一个映像版本。这用作主映像。单击添加版本

Azure 应用商店添加 VDA 版本

版本详细信息部分中,选择映像快照或托管磁盘作为源:

Azure 应用商店选择 VDA 选项

关于 Azure 权限

本部分包含 Azure 所需的最低权限和一般权限。

最低权限

最低权限可提供更好的安全控制。但是,由于仅使用最低权限,因此,需要额外的权限的新功能将失败。

创建主机连接

使用从 Azure 获取的信息添加新的主机连接。

"Microsoft.Network/virtualNetworks/read",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/disks/read",
<!--NeedCopy-->

VM 的电源管理

打开或关闭计算机实例的电源。

"Microsoft.Compute/virtualMachines/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
<!--NeedCopy-->

创建、更新或删除 VM

创建计算机目录,然后添加、删除、更新计算机和删除计算机目录。

下面是主映像为托管磁盘或快照与托管连接位于同一区域时所需的最低权限列表。

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
<!--NeedCopy-->

您需要根据以下功能的最低权限获得下列额外的权限:

  • 如果主映像是与托管连接位于同一区域的存储帐户中的 VHD:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     <!--NeedCopy-->
    
  • 如果主映像是共享映像库中的映像版本:

     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     <!--NeedCopy-->
    
  • 如果主映像是托管磁盘。快照或 VHD 与托管连接位于不同的区域中:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     "Microsoft.Storage/storageAccounts/write",
     "Microsoft.Storage/storageAccounts/delete",
     <!--NeedCopy-->
    
  • 如果您使用 Citrix 管理的资源组:

     "Microsoft.Resources/subscriptions/resourceGroups/write",
     "Microsoft.Resources/subscriptions/resourceGroups/delete",
     <!--NeedCopy-->
    
  • 如果将主映像放置在共享映像库中:

     "Microsoft.Compute/galleries/write",
     "Microsoft.Compute/galleries/images/write",
     "Microsoft.Compute/galleries/images/versions/write",
     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     "Microsoft.Compute/galleries/delete",
     "Microsoft.Compute/galleries/images/delete",
     "Microsoft.Compute/galleries/images/versions/delete",
     <!--NeedCopy-->
    
  • 如果您使用 Azure 专用主机支持:

     "Microsoft.Compute/hostGroups/read",
     "Microsoft.Compute/hostGroups/write",
     "Microsoft.Compute/hostGroups/hosts/read",
     <!--NeedCopy-->
    
  • 如果您将服务器端加密 (SSE) 与客户管理的密钥 (CMK) 结合使用:

     "Microsoft.Compute/diskEncryptionSets/read",
     <!--NeedCopy-->
    
  • 如果您使用 ARM 模板(计算机配置文件)部署 VM:

     "Microsoft.Resources/deployments/write",
     "Microsoft.Resources/deployments/operationstatuses/read",
     "Microsoft.Resources/deployments/read",
     "Microsoft.Resources/deployments/delete",
     <!--NeedCopy-->
    
  • 如果使用 Azure 模板规范作为计算机配置文件:

     "Microsoft.Resources/templateSpecs/read",
     "Microsoft.Resources/templateSpecs/versions/read",
     <!--NeedCopy-->
    

创建、更新和删除包含非托管磁盘的计算机

下面是主映像为 VHD 并使用管理员提供的资源组时所需的最低权限列表:

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action"
<!--NeedCopy-->

一般权限

贡献者角色拥有管理所有资源的完全访问权限。这组权限不会阻止您获取新功能。

以下权限集提供了将来的最佳兼容性,尽管它包含的权限超过了当前功能集所需的权限亦如此:

"Microsoft.Compute/diskEncryptionSets/read",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/galleries/delete",
"Microsoft.Compute/galleries/images/delete",
"Microsoft.Compute/galleries/images/read",
"Microsoft.Compute/galleries/images/versions/delete",
"Microsoft.Compute/galleries/images/versions/read",
"Microsoft.Compute/galleries/images/versions/write",
"Microsoft.Compute/galleries/images/write",
"Microsoft.Compute/galleries/read",
"Microsoft.Compute/galleries/write",
"Microsoft.Compute/hostGroups/hosts/read",
"Microsoft.Compute/hostGroups/read",
"Microsoft.Compute/hostGroups/write",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Resources/deployments/operationstatuses/read",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/deployments/write",
"Microsoft.Resources/deployments/delete",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Resources/templateSpecs/read",
"Microsoft.Resources/templateSpecs/versions/read",
<!--NeedCopy-->

更多信息