Microsoft Azure 资源管理器 云环境

Last published : Nov 13, 2026
在您的 Citrix Virtual Apps and Desktops™ 部署中使用 Microsoft Azure Resource Manager 预配虚拟机时,请遵循本文中的指导。
我们假设您熟悉以下内容:
  • Azure 活动目录:<https://docs.microsoft.com/en-in/azure/active-directory/fundamentals/active-directory-whatis/>
  • 同意框架: <https://docs.microsoft.com/zh-cn/azure/active-directory/manage-apps/plan-an-application-integration>
  • 服务主体: <https://docs.microsoft.com/zh-cn/azure/active-directory/develop/app-objects-and-service-principals/>

Azure 按需预配

借助 Azure 按需预配,仅当 Citrix Virtual Apps and Desktops 在预配完成后启动开机操作时,才会创建 VM。
当您使用 MCS 在 Azure Resource Manager 中创建计算机目录时,Azure 按需预配功能具有以下特点:
  • 降低存储成本
  • 加快目录创建速度
创建 MCS 目录时,Azure 门户会在资源组中显示网络安全组、网络接口、基础映像和身份磁盘。
Azure 门户不会显示 VM,直到 Citrix Virtual Apps and Desktops 为其启动开机操作。有两种类型的计算机,其区别如下:
  • 对于池化计算机,操作系统磁盘和回写缓存仅在 VM 存在时才存在。当您在控制台中关闭池化计算机时,该 VM 在 Azure 门户中不可见。如果您定期关闭计算机(例如,在工作时间之外),可以显著节省存储成本。
  • 对于专用计算机,操作系统磁盘在 VM 首次开机时创建。Azure 门户中的 VM 保持存储状态,直到计算机身份被删除。当您在控制台中关闭专用计算机时,VM 在 Azure 门户中仍然可见。

连接到 Azure 资源管理器

连接和资源 介绍了创建连接的向导。以下信息涵盖了 Azure Resource Manager 连接的特定详细信息。
注意事项:
  • Citrix® 建议使用具有参与者角色的服务主体。但是,请参阅最低权限部分以获取最低权限列表。
  • 首次创建连接时,Azure 会提示您授予其必要的权限。对于将来的连接,您仍然需要进行身份验证,但 Azure 会记住您之前的同意,并且不会再次显示提示。
  • 用于身份验证的帐户必须具有使用 Azure RBAC 在订阅中分配角色的权限。例如,订阅的 Owner、Role Based Access Control Administrator 或 User Access Administrator。
  • 用于身份验证的帐户必须是订阅目录的成员。需要注意两种类型的帐户:“工作或学校”帐户和“个人 Microsoft 帐户”。有关详细信息,请参阅 CTX219211。
  • 尽管您可以通过将现有 Microsoft 帐户添加为订阅目录的成员来使用它,但如果用户之前被授予对目录某个资源的来宾访问权限,则可能会出现并发症。在这种情况下,他们可能在目录中有一个占位符条目,该条目未授予他们必要的权限,并且会返回错误。
    通过从目录中删除资源并将其显式添加回来进行纠正。但是,请谨慎使用此选项,因为它会对该帐户可以访问的其他资源产生意外影响。
  • 存在一个已知问题,即某些帐户在实际上是成员时被检测为目录访客。此类配置通常发生在较旧的已建立的目录帐户中。解决方法:将帐户添加到目录,该帐户将采用正确的成员身份值。
  • 资源组只是资源的容器,它们可以包含来自其自身区域以外区域的资源。如果您期望资源组区域中显示的资源可用,这可能会造成混淆。
  • 确保您的网络和子网足够大,可以容纳您所需的计算机数量。这需要一些远见,但 Microsoft 会帮助您指定正确的值,并提供有关地址空间容量的指导。
您可以通过两种方式建立到 Azure 的主机连接:
  • 向 Azure 进行身份验证以创建服务主体。
  • 使用先前创建的服务主体的详细信息连接到 Azure。

创建服务主体

重要提示:
此功能尚不适用于 Azure 中国和 Azure 德国订阅。
开始之前,请向 Azure 进行身份验证。请确保:
  • 您在订阅的 Azure Active Directory 租户中拥有一个用户帐户。
  • 用于身份验证的帐户必须具有使用 Azure RBAC 在订阅中分配角色的权限。例如,订阅的 Owner、Role Based Access Control Administrator 或 User Access Administrator。
  • 您拥有用于身份验证的全局管理员、应用程序管理员或应用程序开发人员权限。这些权限可以在创建主机连接后撤销。有关角色的更多信息,请参阅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: Azure Resource Manager SubscriptionID 用于要预配 VDA 的订阅。
  • 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 门户及其服务之间的连接。
      • 身份验证 URL: <https://login.microsoftonline.com/>
      • 管理 URL: <https://management.azure.com/>。这是 Azure Resource Manager 提供程序 API 的请求 URL。管理终结点取决于环境。例如,对于 Azure Global,它是 <https://management.azure.com/>;对于 Azure US Government,它是 <https://management.usgovcloudapi.net/>。
      • 存储后缀: <https://*.core.windows.net./>。此 (*) 是存储后缀的通配符。例如,<https://demo.table.core.windows.net/>。
  5. 选择“保存”后,您将返回到“连接详细信息”页面。选择“下一步”以继续到下一页。
  6. 配置连接的资源。资源包括区域和网络。
    • 在区域页面上,选择一个区域。
    • 在网络页面上,执行以下操作:
      • 键入 1–64 个字符的资源名称,以帮助识别区域和网络组合。资源名称不能只包含空格,也不能包含字符 \/;:#.*?=<>|[]{}"'()'。
      • 选择一个虚拟网络/资源组对。(如果存在多个同名虚拟网络,将网络名称与资源组配对可提供唯一组合。)如果您在上一页选择的区域没有任何虚拟网络,请返回该页面并选择一个具有虚拟网络的区域。
  7. 在摘要页面上,查看设置摘要,然后选择完成以完成设置。

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

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

Azure 限制

Azure Resource Manager 会限制订阅和租户的请求,根据定义的限制路由流量,这些限制是根据提供商的特定需求量身定制的。有关详细信息,请参阅 Microsoft 网站上的限制 Resource Manager 请求。订阅和租户存在限制,管理大量计算机可能会出现问题。例如,包含许多计算机的订阅可能会遇到与电源操作相关的性能问题。
提示:
有关详细信息,请参阅使用 Machine Creation Services 提高 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 预配资源组提供了一种预配虚拟机的方式,这些虚拟机为用户提供应用程序和桌面。您可以在创建 MCS 计算机目录时添加现有的空 Azure 资源组,或者让系统为您创建新的资源组。有关 Azure 资源组的信息,请参阅 Microsoft 文档。

Azure 资源组使用情况

每个 Azure 资源组的虚拟机、托管磁盘、快照和映像的数量没有限制。(每个 Azure 资源组 240 个 VM 和 800 个托管磁盘的限制已取消。)
  • 当使用完全范围的服务主体创建计算机目录时,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"
            }
        ],

如何使用临时 OS 磁盘创建计算机

临时 OS 磁盘根据 CustomProperties 参数中的 UseEphemeralOsDisk 属性进行控制。

临时磁盘的重要注意事项

要使用 New-ProvScheme 预配临时操作系统磁盘,请考虑以下限制:
  • 用于目录的 VM 大小必须支持临时操作系统磁盘。
  • 与 VM 大小关联的缓存或临时磁盘的大小必须大于或等于操作系统磁盘的大小。
  • 临时磁盘大小必须大于缓存磁盘大小。
此外,在以下情况下也要考虑这些问题:
  • 创建预配方案时。
  • 修改预配方案时。
  • 更新映像时。

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

Azure 临时 OS 磁盘和 MCS I/O 不能同时启用。
重要注意事项如下:
  • 不能同时启用临时 OS 磁盘和 MCS I/O 来创建计算机目录。
  • 在 New-ProvScheme 或 Set-ProvScheme 中设置为 true 的 PowerShell 参数 (UseWriteBackCache 和 UseEphemeralOsDisk) 将失败并显示相应的错误消息。
  • 对于已启用这两种功能而创建的现有计算机目录,您仍然可以:
    • 更新计算机目录。
    • 添加或删除 VM。
    • 删除计算机目录。

Azure 服务器端加密

Citrix Virtual Apps and Desktops 和 Citrix DaaS 通过 Azure Key Vault 支持 Azure 托管磁盘的客户管理加密密钥。借助此支持,您可以使用自己的加密密钥加密计算机目录的托管磁盘,从而管理您的组织和合规性要求。有关详细信息,请参阅Azure 磁盘存储的服务器端加密。
将此功能用于托管磁盘时:
  • 要更改磁盘加密所用的密钥,请在 DiskEncryptionSet 中更改当前密钥。与该 DiskEncryptionSet 关联的所有资源都将更改为使用新密钥进行加密。
  • 当您禁用或删除密钥时,使用该密钥的任何虚拟机(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>
使用 MCS 在 Azure 专用主机上预配虚拟机时,请考虑:
  • 专用主机是目录属性,目录创建后无法更改。Azure 目前不支持专用租用。
  • 使用 HostGroupId 参数时,需要一个在托管单元区域中预配置的 Azure 主机组。
  • Azure 自动放置是必需的。此功能会发出请求以载入与主机组关联的订阅。有关详细信息,请参阅 Azure 专用主机上的 VM 规模集 - 公共预览版。如果未启用自动放置,MCS 将在目录创建期间引发错误。

Azure 共享映像库

使用 Azure 共享映像库作为 Azure 中 MCS 预配计算机的已发布映像存储库。您可以在库中存储已发布的映像,以加速 OS 磁盘的创建和填充,从而缩短非持久性 VM 的启动和应用程序启动时间。共享映像库包含以下三个元素:
  • 库:映像存储在此处。MCS 为每个计算机目录创建一个库。
  • 库映像定义:此定义包含有关已发布映像的信息(操作系统类型和状态、Azure 区域)。MCS 为为目录创建的每个映像创建一个映像定义。
  • 库映像版本:共享映像库中的每个映像可以有多个版本,每个版本可以在不同区域有多个副本。每个副本都是已发布映像的完整副本。
注意:
共享映像库功能仅适用于托管磁盘。它不适用于旧版计算机目录。
有关详细信息,请参阅Azure 共享映像库概述。

配置共享映像库

使用 New-ProvScheme 命令创建支持共享映像库的预配方案。使用 Set-ProvScheme 命令为预配方案启用或禁用此功能,并更改副本比率和最大副本值。
已向预配方案添加了三个自定义属性,以支持共享映像库功能:
UseSharedImageGallery
  • 定义是否使用共享映像库存储已发布的映像。如果设置为 True,则映像存储为共享映像库映像,否则映像存储为快照。
  • 有效值为 True 和 False。
  • 如果未定义该属性,则默认值为 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>'

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

对于此用例:
  1. 运行 Set-ProvScheme,并将 UseSharedImageGallery 标志设置为 True。可以选择包含 SharedImageGalleryReplicaRatio 和 SharedImageGalleryReplicaMaximum 属性。
  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>'
提示:
参数 SharedImageGalleryReplicaRatio 和 SharedImageGalleryReplicaMaximum 不是必需的。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>'
提示:
与从快照更新到共享映像库目录不同,每台计算机的自定义数据尚未更新以反映新的自定义属性。运行以下命令以查看原始共享映像库自定义属性: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"
要查看区域,请使用该项的 AdditionalData 参数:
$serviceOffering.AdditionalData
如果未指定可用性区域,则计算机的预配方式不会改变。
要通过 PowerShell 配置可用性区域,请使用 New-ProvScheme 操作中可用的 区域 自定义属性。区域 属性定义了用于预配计算机的可用性区域列表。这些区域可以包括一个或多个可用性区域。例如,<Property xsi:type="StringProperty" Name="Zones" Value="1, 3"/> 用于区域 1 和 3。
使用 Set-ProvScheme 命令更新预配方案的区域。
如果提供了无效区域,则预配方案不会更新,并且会显示一条错误消息,提供有关如何修复无效命令的说明。
提示:
如果您指定了无效的自定义属性,则预配方案不会更新,并显示相关错误消息。

Azure 临时磁盘

Azure 临时磁盘 允许您重新利用缓存或临时磁盘来存储已启用 Azure 的虚拟机的 OS 磁盘。此功能对于需要高性能 SSD 磁盘而非标准 HDD 磁盘的 Azure 环境非常有用。
注意:
持久性目录不支持临时操作系统磁盘。
临时 OS 磁盘要求您的预配方案使用托管磁盘和共享映像库。有关详细信息,请参阅Azure 共享映像库。

使用 PowerShell 配置临时磁盘

要为目录配置 Azure 临时操作系统磁盘,请在 Set-ProvScheme 中使用 UseEphemeralOsDisk 参数。将 UseEphemeralOsDisk 参数的值设置为 true。
注意:
要使用此功能,您还必须启用参数 UseManagedDisks 和 UseSharedImageGallery。
例如:
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>'

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

您可以选择将临时操作系统磁盘存储在虚拟机临时磁盘或资源磁盘上。此功能使您能够将临时操作系统磁盘与没有缓存或缓存不足的虚拟机配合使用。此类虚拟机具有临时磁盘或资源磁盘来存储临时操作系统磁盘,例如 Ddv4。
请考虑以下事项:
  • 临时磁盘存储在虚拟机缓存磁盘或虚拟机的临时(资源)磁盘中。缓存磁盘优先于临时磁盘,除非缓存磁盘不足以容纳操作系统磁盘的内容。
  • 对于更新,如果新映像大于缓存磁盘但小于临时磁盘,则会导致用 VM 的临时磁盘替换临时 OS 磁盘。

在电源循环时保留已预配的虚拟机

选择在电源循环时是否保留已预配的虚拟机。使用 PowerShell 参数 New-ProvScheme CustomProperties。此参数支持一个额外属性 PersistVm,用于确定已预配的虚拟机在电源循环时是否持久存在。将 PersistVm 属性设置为 true 以在关机时保留虚拟机,或将该属性设置为 false 以确保在关机时不保留虚拟机。
注意:
PersistVm 属性仅适用于启用了 CleanOnBoot 和 UseWriteBackCache 属性的预配方案。如果未为非持久性虚拟机指定 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>
在以下示例中,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
提示:
PersistVm 属性确定是否保留预配的虚拟机。PersistOsdisk 属性确定是否持久保存操作系统磁盘。要保留预配的虚拟机,请首先保留操作系统磁盘。您无法在不先删除虚拟机的情况下删除操作系统磁盘。您可以使用 PersistOsdisk 属性,而无需指定 PersistVm 参数。

存储类型

为使用 MCS 的 Azure 环境中的虚拟机选择不同的存储类型。对于目标 VM,MCS 支持:
  • 操作系统磁盘:高级 SSD、SSD 或 HDD
  • 回写缓存盘:高级 SSD、SSD 或 HDD
使用这些存储类型时,请考虑以下事项:
  • 确保您的 VM 支持所选的存储类型。
  • 如果您的配置使用 Azure 临时磁盘,则不会获得回写缓存磁盘设置选项。
提示:
StorageType 配置用于 OS 类型和存储帐户。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>'

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

您可以显示 Azure VM 的信息,包括操作系统磁盘和类型、快照和库映像定义。分配计算机目录时,此信息将显示在主映像上的资源中。使用此功能可以查看和选择 Linux 或 Windows 映像。PowerShell 属性 TemplateIsWindowsTemplate 已添加到 AdditionDatafield 参数。此字段包含 Azure 特定信息:VM 类型、操作系统磁盘、库映像信息和操作系统类型信息。将 TemplateIsWindowsTemplate 设置为 True 表示操作系统类型为 Windows;将 TemplateIsWindowsTemplate 设置为 False 表示操作系统类型为 Linux。
提示:
由 TemplateIsWindowsTemplate PowerShell 属性显示的信息来源于 Azure API。在某些情况下,此字段可能为空。例如,数据磁盘的快照不包含 TemplateIsWindowsTemplate 字段,因为无法从快照中检索操作系统类型。
例如,使用 PowerShell 将 Azure VM 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

Azure 应用商店

Citrix Virtual Apps and Desktops 和 Citrix DaaS 支持在 Azure 上使用包含计划信息的主映像来创建计算机目录。有关详细信息,请参阅 Microsoft Azure Marketplace。
提示:
Azure Marketplace 上的一些映像(例如标准 Windows Server 映像)不附加计划信息。Citrix DaaS™ 功能适用于付费映像。

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

使用本节中的过程在 Citrix Studio 中查看共享映像库映像。这些映像可以选择用作主映像。要将映像放入共享映像库,请在库中创建映像定义。
Azure Marketplace 共享镜像库
在发布选项页面中,验证购买计划信息。
购买计划信息字段最初为空。使用用于镜像的购买计划信息填充这些字段。未能填充购买计划信息可能导致计算机目录创建过程失败。
Azure Marketplace 验证 VDA 发布选项
验证购买计划信息后,在定义中创建镜像版本。此版本用作主镜像。单击添加版本:
Azure Marketplace 添加 VDA 版本(/en-us/citrix-virtual-apps-desktops/2203-ltsr/media/azure-marketplace-add-vda-version.png)
在版本详细信息部分中,选择镜像快照或托管磁盘作为源:
Azure Marketplace 选择 VDA 选项(/en-us/citrix-virtual-apps-desktops/2203-ltsr/media/azure-marketplace-add-vda-version-info.png)

关于 Azure 权限

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

最低权限

最低权限可提供更好的安全控制。但是,由于仅使用最低权限,需要额外权限的新功能将无法运行。

创建主机连接

使用从 Azure 获取的信息添加新的主机连接。
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/disks/read",

虚拟机电源管理

启动或关闭计算机实例。
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",

创建、更新或删除虚拟机

创建计算机目录,然后添加、删除、更新计算机,并删除计算机目录。
以下是当主映像是托管磁盘或快照与托管连接位于同一区域时所需的最低权限列表。
"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",
对于以下功能,您需要在最低权限的基础上额外授予以下权限:
  • 如果主映像是位于与托管连接相同区域的存储帐户中的 VHD:
    "Microsoft.Storage/storageAccounts/read",
    "Microsoft.Storage/storageAccounts/listKeys/action",
  • 如果主映像是来自共享映像库的 ImageVersion:
    "Microsoft.Compute/galleries/read",
    "Microsoft.Compute/galleries/images/read",
    "Microsoft.Compute/galleries/images/versions/read",
  • 如果主映像是托管磁盘。快照或 VHD 位于与托管连接区域不同的区域:
    "Microsoft.Storage/storageAccounts/read",
    "Microsoft.Storage/storageAccounts/listKeys/action",
    "Microsoft.Storage/storageAccounts/write",
    "Microsoft.Storage/storageAccounts/delete",
  • 如果您使用 Citrix 管理的资源组:
    "Microsoft.Resources/subscriptions/resourceGroups/write",
    "Microsoft.Resources/subscriptions/resourceGroups/delete",
  • 如果您将主映像放入共享映像库:
    "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",
  • 如果您使用 Azure 专用主机支持:
    "Microsoft.Compute/hostGroups/read",
    "Microsoft.Compute/hostGroups/write",
    "Microsoft.Compute/hostGroups/hosts/read",
  • 如果您使用带客户管理密钥 (CMK) 的服务器端加密 (SSE):
    "Microsoft.Compute/diskEncryptionSets/read",
  • 如果您使用 ARM 模板(计算机配置文件)部署 VM:
    "Microsoft.Resources/deployments/write",
    "Microsoft.Resources/deployments/operationstatuses/read",
    "Microsoft.Resources/deployments/read",
    "Microsoft.Resources/deployments/delete",
  • 如果您使用 Azure 模板规范作为计算机配置文件:
    "Microsoft.Resources/templateSpecs/read",
    "Microsoft.Resources/templateSpecs/versions/read",

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

以下是主映像为 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"

一般权限

参与者角色拥有管理所有资源的完全访问权限。这组权限不会阻止您获取新功能。
以下权限集提供了最佳的未来兼容性,尽管它包含的权限比当前功能集所需的权限更多:
"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",

更多信息