Citrix Virtual Apps and Desktops 7 2203 LTSR

微软 Azure 资源管理器云环境

在使用 Microsoft Azure 资源管理器在您的 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 启动虚拟机的开机操作之前,Azure 门户不会显示该虚拟机。有两种类型的计算机,其区别如下:

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

连接到 Azure 资源管理器

连接和资源 描述了创建连接的向导。以下信息涵盖了 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 虚拟应用和桌面 列出的权限。Citrix 虚拟应用和桌面 会创建一个服务主体,该主体允许它代表指定用户管理 Azure 资源。
  7. 选择接受后,您将返回向导中的连接页面。

    注意:

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

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

    注意:

    在成功向 Azure 进行身份验证并同意授予所需权限之前,您无法继续访问下一页。

  9. 配置连接所需的资源。这些资源主要包括区域和网络。

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

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

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

先决条件:

  • 订阅 ID:用于您要预配 VDA 的订阅的 Azure 资源管理器 SubscriptionID
  • 活动目录 ID:您在 Azure AD 中注册的应用程序的租户 ID。
  • ApplicationName:要在 Azure 活动目录中创建的应用程序的名称。

要创建服务主体:

  1. 连接到您的 Azure 资源管理器订阅。

    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 资源管理器映像创建计算机目录

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

阿祖尔节流

Azure Resource Manager 会限制对订阅和租户的请求,根据定义的限制路由流量,这些限制是根据提供商的特定需求量身定制的。有关详细信息,请参阅 Microsoft 网站上的 限制 Resource Manager 请求。订阅和租户存在限制,管理大量计算机可能会出现问题。例如,包含大量计算机的订阅可能会遇到与电源操作相关的性能问题。

提示:

有关详细信息,请参阅 使用机器创建服务提高 Azure 性能

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

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

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

MCS 默认支持 500 个最大并发操作。或者,您可以使用远程 PowerShell SDK 设置最大并发操作数。

使用 PowerShell 属性 MaximumConcurrentProvisioningOperations 指定最大并发 Azure 预配操作数。使用此属性时,请考虑:

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

微软 Azure 资源组

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

Azure 资源组使用情况

每个 Azure 资源组的虚拟机、托管磁盘、快照和映像的数量没有限制。(每个 Azure 资源组 240 个 VM 对应 800 个托管磁盘的限制已取消。)

  • 当使用完全范围的服务主体创建计算机目录时,MCS 只创建一个 Azure 资源组,并将该组用于目录。
  • 当使用窄范围的服务主体创建计算机目录时,您必须为目录提供一个空的、预先创建的 Azure 资源组。

Azure 临时磁盘

Azure 临时磁盘 允许您重新利用缓存磁盘或临时磁盘来存储支持 Azure 的虚拟机的操作系统磁盘。此功能对于需要比标准 HDD 磁盘更高性能的 SSD 磁盘的 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 大小必须支持临时 OS 磁盘。
  • 与 VM 大小关联的缓存或临时磁盘的大小必须大于或等于 OS 磁盘的大小。
  • 临时磁盘大小必须大于缓存磁盘大小。

此外,在以下情况下也请考虑这些问题:

  • 创建预配方案的过程。
  • 对预配方案进行修改。
  • 更新映像时。

Azure 临时磁盘和机器创建服务 (MCS) 存储优化 (MCS 输入/输出)

Azure 临时 OS 磁盘和 MCS I/O 不能同时启用。

以下是重要的注意事项:

  • 您不能同时启用临时 OS 磁盘和 MCS I/O 来创建计算机目录。

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

Azure 服务器端加密

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

将此功能用于托管磁盘时:

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

  • 当您禁用或删除密钥时,任何使用该密钥的磁盘的 VM 都将自动关闭。关闭后,除非重新启用密钥或分配新密钥,否则 VM 将无法使用。任何使用该密钥的目录都无法开机,并且您无法向其中添加 VM。

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

使用此功能时,请考虑以下事项:

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

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

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

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

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

  • 当前或以前使用 Azure 磁盘加密加密的托管磁盘无法使用客户管理密钥进行加密。

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

注意:

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

Azure 客户管理的加密密钥

创建计算机目录时,您可以选择是否加密目录中预配的计算机上的数据。使用客户管理的加密密钥进行服务器端加密,可让您在托管磁盘级别管理加密并保护目录中计算机上的数据。磁盘加密集 (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 共享映像库作为 MCS 在 Azure 中预配的计算机的发布映像存储库。您可以将发布的映像存储在库中,以加快 OS 磁盘的创建和填充,从而缩短非持久性 VM 的启动和应用程序启动时间。共享映像库包含以下三个元素:

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

注意:

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

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

共享映像库的配置

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

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

UseSharedImageGallery

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

SharedImageGalleryReplicaRatio

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

SharedImageGalleryReplicaMaximum

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

提示:

使用共享映像库存储 MCS 预配目录的已发布映像时,MCS 会根据目录中的计算机数量、副本比率和最大副本数来设置图库映像版本副本计数。副本计数是通过将目录中的计算机数量除以副本比率(向上舍入到最接近的整数值),然后将该值限制为最大副本计数来计算的。例如,如果副本比率为 20,最大副本数为 5,则 0-20 台计算机创建一个副本,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. 运行 Set-ProvScheme,并将 UseSharedImageGallery 标志设置为 True。可选地包括 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. 运行 Set-ProvScheme,并将 UseSharedImageGallery 标志设置为 False 或未定义。
  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-name。在 Set-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 操作提供的 Zones 自定义属性。Zones 属性定义了要将计算机预配到的可用区列表。这些区域可以包含一个或多个可用区。例如,<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 属性确定是否持久保存操作系统磁盘。要保留预配的虚拟机,请首先保留操作系统磁盘。您无法在不先删除虚拟机的情况下删除操作系统磁盘。您可以使用 PersistOsdisk 属性,而无需指定 PersistVm 参数。

存储类型

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

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

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

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

提示:

StorageType 配置用于操作系统类型和存储帐户。WBCDiskStorageType 配置用于回写缓存存储类型。对于普通目录,StorageType 是必需的。如果未配置 WBCDiskStorageType,则 StorageType 将用作 WBCDiskStorageType 的默认值。

If WBCDiskStorageType is not configured, then StorageType is used as the default for 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 将 Azure 虚拟机 AdditionData 参数设置为 True(适用于 Windows 操作系统类型):

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 and Citrix DaaS supports using a master image on Azure that contains plan information to create a machine catalog. For more information, see Microsoft Azure Marketplace.

提示:

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-->
    
  • 如果主映像是共享映像库中的 ImageVersion:

     "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-->
    
  • 如果您使用带客户管理密钥 (CMK) 的服务器端加密 (SSE):

     "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-->

更多信息