创建 AWS 目录

(/zh-cn/citrix-virtual-apps-desktops/2407/install-configure/machine-catalogs-create.html) 介绍了创建计算机目录的向导。以下信息涵盖了 AWS 虚拟化环境特有的详细信息。

注意:

在创建 AWS 目录之前,您需要完成与 AWS 的连接创建。请参阅 (/zh-cn/citrix-virtual-apps-desktops/2407/install-configure/connections/connection-aws.html)。

局限性

从 Citrix Virtual Apps and Desktops™ 2203 LTSR 及更高版本开始,MCS AWS 插件会进行 DescribeInstanceTypes AWS API 调用,如果调用成功,则 MCS 会使用从 API 响应创建的清单名称。

因此,当您从 CVAD 1912 升级到 2203 或更高版本时,请禁用 AWS 上的 DefineInstanceType 权限,然后使用 Set-ProvScheme 命令更新现有目录以匹配 AWS 命名方案。然后,在目录更新完成且服务产品与 AWS 命名方案匹配后,重新添加 DescribeInstanceType 权限。

映像准备期间的网络设置

在映像准备期间,会基于原始 VM 创建一个准备虚拟机 (VM)。此准备 VM 与网络断开连接。为了将网络与准备 VM 断开连接,会创建一个网络安全组以拒绝所有入站和出站流量。此网络安全组会持久存在并被重用。该网络安全组的名称为 Citrix.XenDesktop.IsolationGroup-GUID,其中 GUID 是随机生成的。

配置 AWS 租用

AWS 提供以下租用选项:

  • 共享租用(默认类型):来自不同客户的多个 Amazon EC2 实例可能驻留在同一物理硬件上。
  • 专用租用:您的 EC2 实例仅在您部署了其他实例的硬件上运行。其他客户不使用同一物理硬件。

您可以使用 MCS 通过 PowerShell 预配 AWS 专用主机。

使用 PowerShell 配置 AWS 专用主机租用

您可以通过 PowerShell 创建具有主机租用定义的计算机目录。

Amazon [EC2] 专用主机是具有 [EC2] 实例容量的物理服务器,它完全专用,允许您使用现有的按插槽或按 VM 软件许可证。

专用主机具有基于实例类型的预设利用率。例如,单个分配的 C4 大型实例类型的专用主机仅限于运行 16 个实例。有关详细信息,请参阅 AWS 站点

预配到 AWS 主机的要求包括:

  • 导入的 BYOL(自带许可证)映像 (AMI)。使用专用主机时,请使用和管理您现有的许可证。
  • 具有足够的利用率,用于满足预配请求的专用主机分配。
  • 启用 自动放置

To provision to a dedicated host in AWS using PowerShell, use the New-ProvScheme cmdlet with the parameter TenancyType set to Host.

有关详细信息,请参阅 Citrix 开发者文档

从 AMI 捕获计算机属性

在 AWS 中使用 Machine Creation Services (MCS) 创建目录以预配计算机时,您需要选择一个 AMI 来表示该目录的主映像/黄金映像。MCS 会从该 AMI 使用磁盘快照。在以前的版本中,如果您希望在计算机上使用角色或标签,则需要使用 AWS 控制台单独设置它们。此功能默认启用。

提示:

要使用 AWS 实例属性捕获功能,您必须有一个与 AMI 关联的 VM。

为了改进此过程,MCS 会读取从中获取 AMI 的实例的属性,并将计算机的 Identity Access Management (IAM) 角色和标签应用于为给定目录预配的计算机。使用此可选功能时,目录创建过程会查找选定的 AMI 源实例,读取一组有限的属性。然后,这些属性存储在 AWS 启动模板中,该模板用于为该目录预配计算机。目录中的任何计算机都将继承捕获的实例属性。

捕获的属性包括:

  • IAM 角色 – 应用于预配实例。
  • 标签 - 应用于预配实例、其磁盘和网卡。这些标签应用于瞬态 Citrix® 资源,包括:S3 存储桶和对象,以及 AMI、快照和启动模板。

提示:

瞬态 Citrix 资源的标记是可选的,并且可以使用自定义属性 AwsOperationalResourcesTagging 进行配置。

捕获 AWS 实例属性

您可以通过指定自定义属性 AwsCaptureInstanceProperties,在使用 AWS 托管连接创建预配方案时使用此功能:

New-ProvScheme -CustomProperties "AwsCaptureInstanceProperties,true" …<standard provscheme parameters

有关更多信息,请参阅 Citrix 开发者文档

注意:

AwsCaptureInstanceProperties 已弃用。我们建议改用计算机配置文件来指定虚拟机的计算机属性。

从计算机配置文件捕获计算机属性

使用 MCS 创建目录以预配 AWS 计算机时,您可以使用计算机配置文件预设某些计算机属性设置。

为此,请执行以下步骤:

  1. 将计算机配置文件存储在与您创建此目录的资源相同的可用区中。
  2. 在目录创建向导的“计算机模板”页面上,选择“使用计算机配置文件”。将显示与您选择的资源位于同一可用区中的计算机配置文件。
  3. 根据需要选择计算机配置文件。

注意:

您可以使用计算机配置文件或 AMI 来捕获计算机属性。在 Web Studio 中,当您选择使用计算机配置文件时,将计算机模板属性应用于虚拟机选项会自动隐藏。

标记 AWS 操作资源

在使用 MCS 在 AWS 中预配计算机时创建目录时,您可以控制是否将 IAM 角色和标记属性应用于这些计算机。您还可以控制是否将计算机标记应用于操作资源。

Amazon Machine Image (AMI) 表示一种虚拟设备,用于在 Amazon 云环境(通常称为 EC2)中创建虚拟机。您可以使用 AMI 部署使用 EC2 环境的服务。当您创建目录以使用 MCS 预配 AWS 计算机时,您选择 AMI 作为该目录的黄金映像。

重要:

通过捕获实例属性和启动模板来创建目录是使用操作资源标记所必需的。

要创建 AWS 目录,您必须首先为您希望作为黄金映像的实例创建 AMI。MCS 会读取该实例的标记,并将其整合到启动模板中。然后,启动模板标记将应用于您 AWS 环境中创建的所有 Citrix 资源,包括:

  • 虚拟机器
  • VM 磁盘
  • VM 网络接口
  • S3 存储桶
  • S3 对象
  • 启动模板
  • AMI

为操作资源添加标签

要使用 PowerShell 标记资源:

  1. Open a PowerShell window from the DDC host.
  2. 运行命令 asnp citrix 以加载 Citrix 特定的 PowerShell 模块。

要为预配的 VM 标记资源,请使用新的自定义属性 AwsOperationalResourcesTagging。此属性的语法为:

New-ProvScheme -CustomProperties "AwsCaptureInstanceProperties,true; AwsOperationalResourcesTagging,true" …<standard provscheme parameters>

复制 VM 上的标签

您可以将计算机配置文件中指定的 NIC 和磁盘(身份磁盘、回写缓存磁盘和操作系统磁盘)上的标签复制到 MCS 计算机目录中新建的 VM。您可以在任何计算机配置文件源(AWS VM 实例或 AWS 启动模板版本)中指定这些标签。此功能适用于持久和非持久性计算机目录和 VM。

注意:

  • 在 AWS EC2 控制台中,您无法在 启动模板版本资源标签 下看到 标记网络接口 值。但是,您可以运行 PowerShell 命令 aws ec2 describe-launch-template-versions --launch-template-id lt-0bb652503d45dcbcd --versions 12 来查看标签规范。
  • 如果计算机配置文件源(VM 或启动模板版本)有两个网络接口(eni-1 和 eni-2),并且 eni-1 具有标签 t1,eni-2 具有标签 t2,则 VM 将获取这两个网络接口的标签。

使用计算机配置文件创建目录

您可以使用计算机配置文件从 EC2 实例 (VM) 或启动模板版本捕获硬件属性,并将其应用于预配的计算机。捕获的属性可以包括(例如)EBS 卷属性、实例类型、EBS 优化、CPU 选项、租用类型、休眠功能以及其他受支持的 AWS 配置。

您可以使用 AWS EC2 实例 (VM) 或 AWS 启动模板版本作为计算机配置文件输入。

注意:

  • EBS 卷属性仅从计算机配置文件派生。
  • MCS 为 VM 预配 GP3 卷类型的身份磁盘。由于 GP3 卷类型是 AWS 提供的最便宜的选项,此功能可最大限度地降低成本。此实现仅适用于添加到新目录的 VM 以及添加到现有目录的新 VM。在此功能之前创建的现有 VM 将继续使用 GP2 卷类型的 ID 磁盘,除非重置 ID 磁盘。

重要注意事项

创建 MCS 计算机目录时的重要注意事项:

  • 如果您在 New-ProvSchemeSet-ProvScheme 命令中添加计算机硬件属性参数,则参数中提供的值将覆盖计算机配置文件中的值。
  • 如果将 AwsCaptureInstanceProperties 设置为 true 并且不设置 MachineProfile 属性,则仅捕获 IAM 角色和标签。
  • 不能同时设置 AwsCaptureInstancePropertiesMachineProfile

    注意:

    AwsCaptureInstanceProperties 已弃用。

  • 如果未提供计算机配置文件,则必须显式提供以下属性的值:

    • 安全群组
    • ENI 或虚拟网络
  • 仅当启用 AwsCaptureInstanceProperties 或指定计算机配置文件时,才能启用 AwsOperationalResourcesTagging

创建 MCS 计算机目录后的重要注意事项:

  • 您无法将目录从基于计算机配置文件更改为非基于计算机配置文件的目录。

使用计算机配置文件创建计算机目录

要使用计算机配置文件创建计算机目录,请执行以下操作:

  1. 打开一个 PowerShell 命令行窗口。
  2. 运行 asnp citrix* 命令,以加载 Citrix 专用的 PowerShell 模块。
  3. 如果尚未创建身份池,请创建一个。例如,

    New-AcctIdentityPool -IdentityPoolName idPool -NamingScheme ms## -Domain abcdf -NamingSchemeType Numeric
    <!--NeedCopy-->
    
  4. 运行 New-ProvScheme 命令。例如,您可以执行以下操作:

    New-ProvScheme -ProvisioningSchemeName demet-test-1
    -HostingUnitUid aa633238-9xxd-4cf6-80e8-232a758a1xx1
    -IdentityPoolUid 34d5b088-e312-416f-907d-16573xxxxxc4
    -CleanOnBoot
    -MasterImageVM 'XDHyp:\HostingUnits\cvad-test-scalestress\citrix-demet-ami.0 (ami-0ca813xxxxxx061ef).template'
    -MachineProfile 'XdHyp:\HostingUnits\cvad-test-scalestress\us-east-1a.availabilityzone\machine-profile-instance i (i-0xxxxxxxx).vm'
    <!--NeedCopy-->
    
  5. 完成目录创建。有关详细信息,请参阅 Citrix PowerShell SDK

更新计算机配置文件

要更新最初使用计算机配置文件预配的目录上的计算机配置文件,请执行以下操作。您还可以在编辑 MCS 计算机目录时更改计算机配置文件源的租用类型和休眠功能。

  1. 运行 Set-ProvScheme 命令。例如,

    Set-ProvScheme `
    -ProvisioningSchemeUid "<ID" `
    -MachineProfile "XDHyp:\HostingUnits\abc\us-east-1a.availabilityzone\citrix-cvad-machineprofile-instance (i-0xxxxxxxx).vm"
    <!--NeedCopy-->
    

使用启动模板版本创建目录

您可以创建以启动模板版本作为计算机配置文件输入的 MCS 计算机目录。您还可以将计算机配置文件目录的输入从 VM 更新为启动模板版本,以及从启动模板版本更新为 VM。

在 AWS EC2 控制台中,您可以提供启动模板的实例配置信息以及版本号。当您在创建或更新计算机目录时将启动模板版本指定为计算机配置文件输入时,该启动模板版本的属性将复制到预配的 VDA VM。

以下属性可以使用计算机配置文件输入提供,也可以作为 New-ProvSchemeSet-ProvScheme 命令中的参数显式提供。如果它们在 New-ProvSchemeSet-ProvScheme 命令中提供,则它们优先于这些属性的计算机配置文件值。

  • 服务产品
  • 网络
  • 安全组配置
  • 租用类型

注意:

如果在计算机配置文件启动模板中未提供服务产品,或者未在 New-ProvScheme 命令中将其作为参数提供,则会收到相应的错误。

要使用启动模板版本作为计算机配置文件输入来创建目录:

  1. 请打开一个 PowerShell 窗口。
  2. 请运行 asnp citrix*,以便加载 Citrix 专用的 PowerShell 模块。
  3. 获取启动模板的启动模板版本列表。例如:

    XDHyp:\HostingUnits\test\test-mp-sard (lt-01xxxxx).launchtemplate> ls | Select FullPath
    <!--NeedCopy-->
    
  4. 如果尚未创建身份池,请创建一个。例如:

    New-AcctIdentityPool `
    -IdentityPoolName "abc11" `
    -NamingScheme "abc1-##" `
    -NamingSchemeType Numeric `
    -Domain "citrix-xxxxxx.local" `
    -ZoneUid "xxxxxxxx" `
    <!--NeedCopy-->
    
  5. 使用启动模板版本作为计算机配置文件输入创建预配方案。例如:

    New-ProvScheme `
    -ProvisioningSchemeName "MPLT1" `
    -HostingUnitUid "c7f71f6a-3f45-4xxx-xxxx-xxxxxxxxxx" `
    -IdentityPoolUid "bf3a6ba2-1f80-4xxx-xxxx-xxxxxxxxx" `
    -MasterImageVM "XDHyp:\HostingUnits\xxxd-ue1a\apollo-non-persistent-vda-win2022 (ami-0axxxxxxxxxxx).template" `
    -CleanOnBoot `
    -MachineProfile "XDHyp:\HostingUnits\xxxx-ue1a\machineprofiletest (lt-01xxxxx).launchtemplate\lt-01xxxxx (1).launchtemplateversion"
    <!--NeedCopy-->
    
  6. 将预配方案注册为代理目录。例如:

    New-BrokerCatalog -Name "MPLT1" `
    -AllocationType Random `
    -Description "Machine profile catalog" `
    -ProvisioningSchemeId fe7df345-244e-4xxxx-xxxxxxxxx `
    -ProvisioningType Mcs `
    -SessionSupport MultiSession `
    -PersistUserChanges Discard
    <!--NeedCopy-->
    
  7. 完成目录创建。有关详细信息,请参阅 Citrix PowerShell SDK

您还可以将计算机配置文件目录的输入从 VM 更新为启动模板版本,以及从启动模板版本更新为 VM。例如:

  • 将计算机配置文件目录的输入从 VM 更新为启动模板版本:

     Set-ProvScheme -ProvisioningSchemeName "CloudServiceOfferingTest" `
     -MachineProfile "XDHyp:\HostingUnits\xxxx-ue1a\machineprofiletest (lt-0bxxxxxxxxxxxx).launchtemplate\lt-0bxxxxxxxxxxxx (1).launchtemplateversion"
     <!--NeedCopy-->
    
  • 将计算机配置文件目录的输入从启动模板版本更新为 VM:

     Set-ProvScheme -ProvisioningSchemeName "CloudServiceOfferingTest" `
     -MachineProfile "XDHyp:\HostingUnits\sard-ue1a\us-east-1a.availabilityzone\apollo-non-persistent-vda-win2022-2 (i-08xxxxxxxxx).vm"
     <!--NeedCopy-->
    

加密操作系统和身份磁盘

您可以使用 AWS KMS 密钥(客户管理密钥和 AWS 管理密钥)创建持久和非持久的 VM 目录,这些密钥可用于加密操作系统磁盘和身份磁盘。

  • AWS 管理密钥每年自动轮换。
  • 客户管理密钥的自动轮换是可选的,可以手动管理。

有关 KMS 密钥的更多信息,请参阅以下 AWS 文档:

对于操作系统和身份磁盘的加密,请配置以下其中一项:

  • 使用已加密的主映像(例如,从包含使用 KMS 密钥加密的 EBS 根卷的实例或快照创建的 AMI)
  • 使用包含加密的 EBS 根卷的计算机配置文件源(VM 或启动模板)。

限制事项

请考虑以下列出的限制:

  • MCS 目前仅支持主映像 AMI 上的一个磁盘。
  • 您无法直接加密现有未加密的 EBS 卷或快照,也无法修改现有加密卷的 KMS 密钥。要执行此操作,您必须:

    1. 为该卷创建一个新快照。
    2. 从该快照创建一个新卷。
    3. 对新卷进行加密。

请参阅以下 AWS 文档:

创建带磁盘加密的目录

您可以使用以下方式创建带磁盘加密的 MCS 计算机目录:

  • 主映像
  • 计算机配置文件

使用计算机配置文件输入进行磁盘加密时的注意事项:

  • 计算机配置文件输入的 KMS 密钥优先于主映像的 KMS 密钥。
  • 如果未提供计算机配置文件输入,则使用主映像 AMI 的 KMS 密钥来加密目录 VM 的磁盘。
  • 如果计算机配置文件中存在块设备映射,则主映像模板 (AMI) 和计算机配置文件中存在的块设备必须匹配。例如,如果 AMI 在 /dev/sda1 上定义了一个设备,则计算机配置文件也必须在 /dev/sda1 上定义一个设备。
  • 如果机器配置文件源中没有密钥且主映像未加密,则目录 VM 的磁盘不会加密。
  • 当主映像加密时,机器配置文件源 VM 或启动模板必须具有加密的根卷才能被视为有效输入。

对现有目录进行修改

您可以使用 Set-ProvScheme 修改现有目录,使其具有:

  • 包含新 KMS 密钥的卷的机器配置文件输入。
  • 使用新 KMS 密钥加密的主映像模板 AMI。

重要注意事项

  • 添加到目录的新 VM 的卷使用新的 KMS 密钥加密。
  • 当存在现有机器配置文件时,要更新加密设置,请使用新的机器配置文件运行 Set-ProvScheme
  • 您无法将现有目录从加密卷修改为未加密卷。 您无法将映像从加密主 AMI 更新为未加密主 AMI。

筛选 VM 实例

您用作机器配置文件 VM 的 AWS EC2 实例必须兼容,以便机器目录能够正确创建和运行。要列出可用作机器配置文件输入 VM 的 AWS EC2 实例,您可以使用 Get-HypInventoryItem 命令。该命令可以对托管单元上可用的 VM 清单进行分页和筛选。

分页:

Get-HypInventoryItem 支持两种分页模式,以适应不同的数据检索需求:

  • 分页模式使用 -MaxRecords-Skip 参数返回项目集:
    • -MaxRecords: 默认值为 1。这控制返回多少项。
    • -Skip: 默认值为 0。这控制从管理程序列表中绝对开头(或绝对结尾)跳过多少项。
  • 滚动模式使用 -MaxRecords-ForwardDirection-ContinuationToken 参数以允许记录滚动:
    • -ForwardDirection: 默认值为 True。这与 -MaxRecords 一起使用,以返回下一组匹配记录或上一组匹配记录。
    • -ContinuationToken: 返回紧随其后的项(如果 ForwardDirectionfalse,则返回之前的项),但不包括 ContinuationToken 中给定的项。

以下是分页的示例:

  • 返回名称最低的计算机模板的单个记录。AdditionalData 字段具有 TotalItemsCountTotalFilteredItemsCount

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx-test" -ResourceType template
     <!--NeedCopy-->
    
  • 返回名称最低的计算机模板的 10 条记录:

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx-test" -ResourceType template -MaxRecords 10 | select Name
     <!--NeedCopy-->
    
  • 返回以最高名称结尾的记录数组:

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx-test" -ResourceType template -ForwardDirection $False -MaxRecords 10 | select Name
     <!--NeedCopy-->
    
  • 返回从与给定 ContinuationToken 关联的计算机模板开始的记录数组:

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx-test" -ResourceType template -ContinuationToken "ami-07xxxxxxxxxx" -MaxRecords 10
     <!--NeedCopy-->
    

筛选:

支持以下用于筛选的其他可选参数。您可以将这些参数与分页选项结合使用。

  • -ContainsName "my_name": 如果给定字符串与 AMI 名称的一部分匹配,则该 AMI 将包含在 Get 结果中。例如:

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx-test" -ResourceType template -MaxRecords 100 -ContainName ‘apollo’ | select Name
     <!--NeedCopy-->
    
  • -Tags '{ "Key0": "Value0", "Key1": "Value1", "Key2": "Value2" }': 如果 AMI 具有这些标签中的至少一个,它将包含在 Get 结果中。例如:

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx-test" -ResourceType template -MaxRecords 100 -Tags '{"opex owner": "Not tagged"}' | select Name
     <!--NeedCopy-->
    

    注意:

    支持两种标签值。“未标记”标签值匹配其标签列表中没有给定标签的项目。“所有值”标签值匹配具有该标签的项目,无论标签的值是什么。否则,仅当项目具有该标签且值与筛选器中给定的值相等时,才会发生匹配。

  • -Id "ami-0a2d913927e0352f3":如果 AMI 与给定 ID 匹配,则会将其包含在 Get 结果中。例如:

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx-test" -ResourceType template -Id ami-xxxxxxxxxxxxx
     <!--NeedCopy-->
    

根据 AdditionalData 参数进行数据筛选:

AdditionalData 筛选器参数根据模板或 VM 的功能、服务产品或 AdditionalData 中的任何属性列出它们。例如:

(Get-HypInventoryItem -ResourceType "launchtemplateversion" -LiteralPath "XDHyp:\HostingUnits\aws" -MaxRecords 200).AdditionalData
<!--NeedCopy-->

您还可以添加 -Warn 参数以指示不兼容的 VM。VM 将包含一个名为“Warning”的 AdditionalData 字段。例如:

(Get-HypInventoryItem -ResourceType "launchtemplateversion" -LiteralPath "XDHyp:\HostingUnits\aws" -MaxRecords 200 -Template "ami-015xxxxxxxxx" -Warn $true).AdditionalData
<!--NeedCopy-->

后续步骤

更多信息