使用 Amazon WorkSpaces Core 托管实例中的准备好的映像创建目录
-
创建准备好的映像,并使用这些准备好的映像通过以下方式创建 MCS 计算机目录:
- Studio
- PowerShell
关键步骤
- 创建映像定义和初始映像版本。
- 从初始映像版本创建映像版本。
- 使用映像版本作为准备好的映像来创建目录。
使用 Studio 创建映像定义和初始映像版本
要创建映像定义和初始映像版本,请执行以下操作:
- 在 Studio 中,转到映像节点,然后单击创建映像定义。在简介页面上单击下一步。
- 在映像定义页面上,为映像定义指定操作系统类型和会话类型。
-
在映像页面上,选择资源(仅列出适用于所设置连接的资源)、用作创建映像版本模板的主映像以及用于捕获硬件属性的计算机配置文件。选择一个计算机配置文件以从 VM 实例或启动模板版本捕获硬件属性。
注意:
- 在选择映像之前,请验证主映像是否已安装 VDA 2311 或更高版本,并且 VDA 上是否已安装 MCSIO 驱动程序。
- 仅支持实例元数据服务 (IMDS) V2,不支持 IMDS V1。有关信息,请参阅实例元数据服务版本 2 的工作原理。
- 在计算机规范页面上,选择计算机大小。默认情况下,将选择计算机配置文件(在映像页面上选择)的计算机大小。
- 在 NIC 页面上,为准备映像选择或添加 NIC。对于每个 NIC,选择一个关联的 VPC 子网。
- 在版本描述页面上,输入所创建的初始映像版本的描述。
- 在摘要页面上,验证映像定义和所创建的初始映像版本的详细信息。输入映像定义的名称和描述。单击完成。
使用 Studio 创建映像版本
映像版本允许管理特定映像的不同迭代或更新。此功能使您能够出于不同目的维护映像的多个版本。
要从初始映像版本创建映像版本,请执行以下操作:
注意:
所有映像版本的托管单元必须相同。
- 转到映像节点,选择一个映像版本或映像定义,然后单击创建映像版本。
- 在映像定义页面上,您可以更改托管单元,并重新选择该映像版本的主映像和计算机配置文件。
- 如果您希望映像版本的配置与初始配置的映像版本不同,请在创建映像版本对话框的计算机规范和 NIC 页面上配置设置。
- 添加映像版本的描述。单击完成。
注意:
如果映像版本创建因任何原因失败,底部的故障排除选项卡将提供重试选项。
使用 PowerShell 创建准备好的映像版本规范
创建准备好的映像版本规范的详细 PowerShell 命令如下:
-
使用
Test-ProvImageDefinitionNameAvailable命令检查可用的映像定义名称。例如:Test-ProvImageDefinitionNameAvailable -ImageDefinitionName <string[]> <!--NeedCopy--> -
使用
New-ProvImageDefinition命令创建映像定义。例如:New-ProvImageDefinition -ImageDefinitionName image1 -OsType Windows -VdaSessionSupport MultiSession <!--NeedCopy--> -
使用
Add-ProvImageDefinitionConnection命令在指定的托管连接中为映像定义创建新配置。Add-ProvImageDefinitionConnection -ImageDefinitionName image1 -HypervisorConnectionName test-conn <!--NeedCopy--> -
使用
New-ProvImageVersion命令创建映像版本。例如:New-ProvImageVersion -ImageDefinitionName image1 -Description "version 1" <!--NeedCopy--> -
使用
Add-ProvImageVersionSpec命令将主映像版本规范添加到映像版本。例如:Add-ProvImageVersionSpec -ImageDefinitionName image1 -ImageVersionNumber 1 -HostingUnitName wsc -MasterImagePath "XDHyp:\HostingUnits\wsc\win10-2411-ami (ami-00123456789abcdef).template”" <!--NeedCopy-->注意:
对于一个托管单元,您只能向一个映像版本添加一个主映像版本规范。
-
- 使用
New-ProvImageVersionSpec命令从主映像版本规范创建准备好的映像版本规范。SourceImageVersionSpecUid参数派生自Add-ProvImageDefinitionConnection命令。例如:
New-ProvImageVersionSpec -SourceImageVersionSpecUid 00000000-0000-0000-0000-00000000000 -MachineProfile 'XDHyp:\HostingUnits\wsc\w2022-2411 (lt-00123456789abcdef).launchtemplate\lt-00123456789abcdef (1).launchtemplateversion' -RunAsynchronously <!--NeedCopy--> - 使用
创建映像定义、映像版本和准备好的映像版本规范的完整 PowerShell 命令集示例:
- New-ProvImageDefinition -ImageDefinitionName image1 -OsType Windows -VdaSessionSupport MultiSession
Add-ProvImageDefinitionConnection -ImageDefinitionName image1 -HypervisorConnectionName wsc -CustomProperties $CustomProperties
$imageVersion = New-ProvImageVersion -ImageDefinitionName image1 -Description "version 1"
$SourceImageVersionSpec = Add-ProvImageVersionSpec -ImageVersionUid $imageVersion.ImageVersionUid `
-HostingUnitUid $hostingunit.HostingUnitUid `
-MasterImagePath "XDHyp:\HostingUnits\wsc\win10-2411-ami (ami-00123456789abcdef).template”
New-ProvImageVersionSpec -MachineProfile 'XDHyp:\HostingUnits\wsc\w2022-2411 (lt-00123456789abcdef).launchtemplate\lt-00123456789abcdef (1).launchtemplateversion' -SourceImageVersionSpecUid $SourceImageVersionSpec.ImageVersionSpecUid
Add-ProvImageVersionSpecHostingUnit -ImageVersionSpecUid 00000000-0000-0000-0000-00000000000-HostingUnitName wsc
$PreparedImageVersionSpec = Get-ProvImageVersionSpec -ImageVersionUid $imageVersion.ImageVersionUid | Where SourceImageVersionSpecUid-eq $SourceImageVersionSpec.ImageVersionSpecUid
<!--NeedCopy-->
注意:
- 映像定义中的所有映像版本规范必须属于同一个托管单元。
- 一个映像版本只能有一个主映像版本规范和一个准备好的映像版本规范。
- 所有映像版本规范都必须具有计算机配置文件。
在可用区和区域之间共享准备好的映像
现在,您可以在同一 AWS 区域或不同区域中,跨不同可用区(与不同托管单元关联)为 Amazon WorkSpaces Core 托管实例共享单个准备好的映像。这使您可以使用一个准备好的映像在各种可用区和区域中创建和更新 MCS 计算机目录。在不同区域的不同可用区之间共享时,准备好的映像版本将从原始区域复制到目标区域。
您可以维护一个准备好的映像,并使用它在与不同托管单元关联的多个可用区和区域中创建和更新计算机目录。这显著减少了您的映像管理开销,确保了部署之间的一致性,并简化了预配过程。您还可以使用来自不同可用区或区域的准备好的映像无缝更新现有计算机目录。
用例
-
集中式映像管理: 您在一个可用区(例如,
us-east-1a)中创建了一个准备好的映像。然后,您可以将此映像共享到同一us-east-1AWS 区域中的其他可用区(如us-east-1b)或不同us-west-1区域中的us-west-1a。这允许单个映像服务于多个托管单元并简化您的维护。 -
高效的目录创建和更新: 您可以使用在
AZ 1(例如,us-east-1a)中创建的准备好的映像在AZ 1中创建新目录。将此映像共享到AZ 2(例如,us-east-1b)后,您可以使用AZ 2中的共享映像在AZ 2中创建和更新目录。 - 跨托管单元和托管连接部署: 如果您的环境在相同或不同的 AWS 区域下有多个托管单元,您可以高效地在这些托管单元之间共享准备好的映像。
限制
- 在同一 AWS 账户内共享: 在当前实施中,您无法跨不同的 AWS 账户共享。
重要注意事项
- 删除顺序: 要删除原始准备好的映像版本规范,您必须首先删除其所有共享映像版本规范。或者,您必须同时删除原始规范和共享规范。
- 映像版本依赖性: 当您删除映像版本时,您必须首先删除依赖于该特定映像版本的任何共享配置。您从原始(未共享)映像创建的目录可以保持不变。
- 目录向后兼容性: 您可以更新在此功能引入之前部署的现有计算机目录。使用您在与最初部署目录的可用区或区域不同的可用区或区域中创建的准备好的映像。
- 完全删除: 当您删除准备好的映像时,您将无法再在您共享或最初创建它的任何可用区中使用它。此外,在删除与准备好的映像版本关联的所有目录之前,无法删除准备好的映像版本。
先决条件
在配置或使用此功能之前,请确保满足以下条件:
- 您的环境必须是 Amazon WorkSpaces Core 托管实例环境。
- 您必须在同一 AWS 账户下配置多个托管单元(每个托管单元可以与不同的可用区关联)和主机连接(每个主机连接可以与不同的区域关联)。
使用 Studio UI 进行配置
您可以使用 Studio UI 在与不同托管单元关联的可用区之间共享准备好的映像。
共享准备好的映像
- 导航到 Studio 的 “映像” 节点,然后选择您要与其他可用区共享的准备好的映像版本。
- 选择顶部导航栏中的 “管理映像共享” 以管理所选映像版本的映像共享。
-
- 在 “管理映像共享” 页面上,选择一个或多个要共享映像版本的资源。这些资源可以位于与原始映像版本不同的可用区中。
- 单击 “保存” 以在其他可用区中的资源之间共享映像版本。映像版本将更新,以便在您选择的不同资源之间共享。完成后,使用该映像版本在共享该映像版本的可用区中创建目录。
移除准备好的映像的共享
-
- 在 Studio 的 “映像” 节点上,选择您要移除共享的准备好的映像版本。
-
- 选择顶部导航栏中的 “管理映像共享” 以管理所选映像版本的映像共享。
-
- 清除一个或多个要停止共享映像版本的资源(可用区)的复选框。
注意:
这些资源不得再有任何与共享映像版本关联并从中创建的目录。必须首先删除从要移除的共享映像版本创建的任何目录。
- 单击 “保存” 以移除跨已清除可用区的资源共享。映像版本将更新,以便不再在这些可用区中共享。
使用 PowerShell 进行配置
或者,您可以使用 PowerShell 命令在与不同托管单元关联的可用区之间共享准备好的映像。
- 确保您拥有要共享的准备好的映像的
ImageVersionSpecUid。您可以使用Get-ProvImageVersionSpec或 PowerShell 中的类似Get-命令检索此信息。 - 确定要使准备好的映像可用的可用区(可以是相同或不同区域)的
HostingUnitName。这是您为该特定可用区配置的托管单元的名称。 -
运行
Add-ProvImageVersionSpecHostingUnit命令: 使用以下 PowerShell 命令。将<ImageVersionSpecUid>替换为您的映像的 Uid,将<targetHostingUnitName>替换为要将映像版本规范共享到的目标可用区中的托管单元的名称:Add-ProvImageVersionSpecHostingUnit -ImageVersionSpecUid <ImageVersionSpecUid> -HostingUnitName <targetHostingUnitName> <!--NeedCopy--> - 成功执行后,您可以在 Studio UI 中看到映像的状态,指示已与指定的托管单元共享。
移除准备好的映像的共享
- 确保您拥有要从中移除共享的准备好的映像的
ImageVersionSpecUid。 - 确定要从中移除共享映像的可用区的
HostingUnitName。 -
运行
Remove-ProvImageVersionSpecHostingUnit命令: 使用以下 PowerShell 命令。将<ImageVersionSpecUid>替换为您的映像的 Uid,将<targetHostingUnitName>替换为要从中移除映像版本规范共享的目标可用区中的托管单元的名称:Remove-ProvImageVersionSpecHostingUnit -ImageVersionSpecUid <ImageVersionSpecUid> -HostingUnitName <targetHostingUnitName> <!--NeedCopy-->
映像准备期间的网络设置
在映像准备期间,将根据原始 VM 创建一个准备虚拟机 (VM)。此准备 VM 与网络断开连接。为了断开准备 VM 与网络的连接,将创建一个网络安全组以拒绝所有入站和出站流量。此网络安全组将持久存在并被重用。网络安全组的名称为 Citrix.XenDesktop.IsolationGroup-GUID,其中 GUID 是随机生成的。
基于计算机配置文件的计算机目录
您可以使用计算机配置文件捕获 EC2 实例 (VM) 或启动模板版本中的硬件属性,并将其应用于预配的计算机。捕获的属性可以包括(例如)租用类型、实例类型、安全组、网络映射、EBS 卷属性、EBS 优化、CPU 选项、休眠功能以及其他受支持的 AWS 配置。
您可以将 AWS EC2 实例 (VM) 或 AWS 启动模板版本用作计算机配置文件输入。
注意:
- EBS 卷属性仅从计算机配置文件派生。
- 仅支持实例元数据服务 (IMDS) V2,不支持 IMDS V1。有关详细信息,请参阅实例元数据服务版本 2 的工作原理。
-
AWS 租用模式
AWS 提供以下租用模式选项:共享租用模式(默认类型)和专用租用模式。共享租用模式意味着来自不同客户的多个 Amazon WorkSpaces Core 实例可能驻留在同一物理硬件上。专用租用模式意味着您的 Amazon WorkSpaces Core 实例仅在您部署的其他实例所在的硬件上运行。
注意:
仅支持专用实例(目前不支持专用主机)。其他客户不使用同一硬件。
租用模式类型从计算机配置文件中捕获
当您使用 MCS 在 AWS 中创建目录以预配计算机时,租用模式类型将从计算机配置文件中捕获。
- 共享硬件:此设置适用于大多数部署。多个客户共享硬件,即使他们之间不进行交互。使用共享硬件是运行 Amazon EC2 实例最经济实惠的选项。
- 专用实例:此设置更适用于具有特定安全或合规性要求的部署。使用专用实例,您仍然可以享受拥有独立于其他 AWS 客户的主机的好处,但无需支付整个主机的费用。您无需担心主机的容量,但实例的收费费率更高。此外,专用实例对自带许可证 (BYOL) 提供有限支持。
灵活计费
Amazon WorkSpaces Core 托管实例支持两种计费模式:
| 计费模式 | 描述 |
|---|---|
| 按月 | 固定的每月统一费率计费。适用于持久性桌面和可预测的工作负载。 |
| 按小时 | 按使用量付费计费。如果未明确指定计费模式,这是 AWS 的默认配置。 |
这些选项根据工作负载的持久性和使用模式,为管理计算成本提供了灵活性。
此功能需要使用 Amazon WorkSpaces 计费服务。默认情况下,MCS 使用此服务预配和管理实例,让您能够从更具竞争力的持久性工作负载统一费率定价中受益。
先决条件和注意事项
-
AWS 账户配置:您的 AWS 账户必须配置为使用 WorkSpaces 计费服务。虽然 AWS 账户默认已切换,但有些客户可能会要求 AWS 仍使用旧版 EC2 计费服务来使用 Amazon WorkSpaces Core 托管实例。
注意:
如果您的账户使用的是旧版 EC2 计费服务,则按月计费选项不可用。
- 主机连接:灵活计费仅适用于 Amazon WorkSpaces Core 主机连接。标准 AWS EC2 主机连接不支持此功能。
- Spot 实例:WorkSpaces 计费服务不支持 Spot 实例。
- 混合计费:AWS 账户必须对核心托管实例使用 WorkSpaces 计费或 EC2 计费。单个账户中不支持混合使用这两种计费方式。
- 兼容性:只有特定的实例类型、平台类型(操作系统)和租用模式类型与某些计费模式兼容。MCS 执行预检,以确保您的选择(服务产品、计算机配置文件和准备好的映像)与所选计费模式匹配。
请参阅使用特定计费模式创建计算机目录。
创建目录
创建 Amazon WorkSpaces Core 托管实例目录需要准备好的映像和计算机配置文件。您可以使用 AWS VM 实例或 AWS 启动模板版本作为计算机配置文件输入。
注意:
目前,支持创建持久性和非持久性 VM 的目录(
CleanOnBoot属性为True或False)。
- 在创建 Amazon WorkSpaces Core 托管实例目录之前,您需要完成以下创建:
- 连接到 Amazon WorkSpaces Core 托管实例。请参阅连接到 Amazon WorkSpaces Core 托管实例
- 准备好的映像。
-
您可以使用以下方式创建目录:
- Studio
- PowerShell
使用 Studio 创建目录
从“映像”节点创建计算机目录
使用映像节点中的创建目录选项,使用映像版本创建目录。
或者,您可以在计算机目录节点中创建目录时选择版本,将其链接到目录创建工作流中的准备好的映像选项。请参阅从“计算机目录”节点创建计算机目录。
要从映像节点创建 MCS 计算机目录,请执行以下操作:
- 选择映像版本,然后单击创建目录。在简介页面上单击下一步。
-
- 在计算机管理和映像页面上,设置会根据所选映像版本预先选择。在“映像”页面上,为所选的准备好的映像输入备注。
- 完成后续页面上的设置。
- 在摘要页面上,检查计算机目录的详细信息。输入计算机目录的名称和描述。单击完成。
- 转到计算机目录节点以查看创建的计算机目录。
从“计算机目录”节点创建计算机目录
- 要从“计算机目录”节点创建 MCS 计算机目录,请执行以下操作:
- 在左侧导航窗格中单击计算机目录。
- 单击创建计算机目录。此时将显示计算机目录设置页面。
- 在计算机类型页面上,为目录选择计算机类型,例如多会话操作系统。
- 在计算机管理页面上,选择以下设置:
-
- 选择已进行电源管理的计算机(例如,虚拟机或刀片式 PC)。
- 选择 Citrix 预配技术。然后,选择 Citrix Machine Creation Services™。
- 在资源字段中,选择您在创建主机连接时配置的资源(可用区或本地区域),然后单击下一步。
- 在桌面体验页面上,选择用户登录时所需的随机桌面或静态桌面。如果选择了静态桌面,请进一步指定是否要保存用户对本地磁盘所做的更改(持久性或非持久性)。
-
在映像页面上,单击选择映像以为计算机目录选择准备好的映像。选择您创建的准备好的版本。单击映像版本名称。要查看有关所选映像版本的更多详细信息,请单击带下划线的版本号。单击完成。
与准备好的映像关联的计算机配置文件将显示,其硬件属性(例如,实例类型、租用类型、网络映射、安全组、卷属性)将用于在目录中创建计算机。要将计算机配置文件源更改为另一个 VM 或启动模板版本,请单击编辑按钮。
-
在虚拟机页面上:
- 输入目录的 VM 数量。
- 将显示默认计算机规范,该规范基于计算机配置文件。要更改它,请选择编辑图标并选择计算机规范。
- 在NIC页面上,选择用于 VM 的 NIC(或 ENI)。
-
在计算机身份页面上,配置目录中计算机的计算机身份类型:
- 要配置已加入域的计算机(本地 Active Directory 或 Microsoft Entra 混合加入),请选择域并为将在此计算机目录中创建的 VM 创建新的 AD 帐户。预配的 VM 将加入所选域。要预配未加入域的计算机,请选择未加入域选项。
- 指定将为 VM 创建的新帐户的帐户命名方案。
- 在域凭据页面上,单击输入凭据以提供所选域的凭据。出现提示时输入管理员级别的用户名和密码。如果您之前已保存域凭据,也可以按照我们的产品文档使用服务帐户。
- 单击其余页面,直到摘要页面。输入计算机目录的名称,然后选择完成以创建计算机目录。
在 AWS 本地区域中创建计算机目录的限制
- 某些本地区域仅支持某些硬件配置(例如,珀斯本地区域不支持 GP3 卷,仅支持 GP2)。
- 由于所有本地区域普遍仅支持 gp2,并非所有都支持 gp3,因此 ID 磁盘创建默认使用 gp2 卷类型。
- 您必须选择具有在所需本地区域中受支持的硬件规范的计算机配置文件。
- 准备好的映像 AMI 快照和 ID 磁盘快照默认放置在区域中,而不是本地区域中(由于 AWS 对本地区域中 EBS 快照支持可见性的限制)。
- 仅支持完整 EC2 和 EBS 服务的本地区域是受支持的区域。
使用 PowerShell 创建目录
使用准备好的映像版本规范和计算机配置文件创建目录
-
使用
New-ProvScheme命令从准备好的映像版本规范创建 MCS 非持久性计算机目录。例如,New-ProvScheme -ProvisioningSchemeName <string> -ImageVersionSpecUid <Guid> -HostingUnitUid <Guid> -IdentityPoolUid <Guid> [-CleanOnBoot $true] [-MachineProfile <string>] [-ProvisioningSchemeType “MCS”] <!--NeedCopy-->- 使用
New-ProvScheme命令从准备好的映像版本规范创建 MCS 持久性计算机目录。例如,
New-ProvScheme -ProvisioningSchemeName <string> -ImageVersionSpecUid <Guid> -HostingUnitUid <Guid> -IdentityPoolUid <Guid> [-CleanOnBoot $false] [-MachineProfile <string>] [-ProvisioningSchemeType “MCS”] <!--NeedCopy--> - 使用
用于创建目录的 PowerShell 命令的完整示例:
$Catalog = New-BrokerCatalog -AllocationType "Random" -IsRemotePC $False -MinimumFunctionalLevel "L7_20" -Name "wsccatalog" -PersistUserChanges "Discard" -ProvisioningType "MCS" -Scope @() -SessionSupport "MultiSession"
$IdentityPool = New-AcctIdentityPool -AllowUnicode -Domain "domainname" -IdentityPoolName "wsccatalog" -IdentityType "ActiveDirectory" -NamingScheme "aws##" -NamingSchemeType "Numeric" -Scope @()
$PreparedImageVersionSpec = Get-ProvImageVersionSpec -ImageDefinitionName image1 -ImageVersionNumber 1 -Filter "PreparationType -eq 'Mcs'"
$Task = New-ProvScheme -ProvisioningSchemeName wsccatalog -ImageVersionSpecUid $PreparedImageVersionSpec.ImageVersionSpecUid -HostingUnitName wsc -IdentityPoolName wsccatalog -CleanOnBoot -Scope @() -SecurityGroup @() -MachineProfile 'XdHyp:\HostingUnits\cvad-test-scalestress\us-east-1a.availabilityzone\machine-profile-instance i (i-0xxxxxxxx).vm' -RunAsynchronously
Get-ProvTask -TaskId $Task.TaskId
$ProvScheme = Get-ProvScheme -ProvisioningSchemeName wsccatalog
Set-BrokerCatalog -Name $Catalog.Name -ProvisioningSchemeId $ProvScheme.ProvisioningSchemeUid
<!--NeedCopy-->
更新计算机配置文件
- 要更新最初使用计算机配置文件预配的目录中的计算机配置文件,请执行以下操作。您还可以在编辑 MCS 计算机目录时更改计算机配置文件源的租用类型和休眠功能。
-
运行
Set-ProvScheme命令。例如,Set-ProvScheme ` - -ProvisioningSchemeUid "<ID" ` - -MachineProfile "XDHyp:\HostingUnits\abc\us-east-1a.availabilityzone\citrix-cvad-machineprofile-instance (i-0xxxxxxxx).vm" <!--NeedCopy-->
创建具有特定计费模式的计算机目录
- 当前,您只能在使用 PowerShell 创建计算机目录时指定计费模式。
要通过 PowerShell 指定计费模式,请在 New-ProvScheme 命令中使用 CustomProperties 参数。
$custprop = "BillingMode,Monthly"
New-ProvScheme -ProvisioningSchemeName "MyCatalog" `
-ImageVersionSpecUid $ImageVersionSpecUid `
-HostingUnitName "wsc-unit" `
-IdentityPoolName "MyIdentityPool" `
-MachineProfile "XdHyp:\HostingUnits\wsc-unit\machine-profile lt-123.launchtemplate\lt-123 (1).launchtemplateversion" `
-CustomProperties $custprop `
-CleanOnBoot
<!--NeedCopy-->
> **注意:** > > 如果省略 `BillingMode` 属性,目录将默认设置为 `Hourly`。
更改现有目录的计费模式
您可以将现有目录从 Monthly 转换为 Hourly,反之亦然。此更改可应用于目录中的新 VM 和现有 VM。
更新的重要注意事项
- 服务窗口:现有 VM 必须经过服务窗口或电源循环才能应用计费更改。
-
验证:MCS 会在应用更改之前验证现有实例类型和平台是否与新的计费模式兼容。
-
使用 PowerShell 更新
-
要仅更新添加到目录中的新 VM 的计费模式,请更新预配方案的计费模式自定义属性:
```
-
$custprop = “BillingMode,Hourly”
Set-ProvScheme -ProvisioningSchemeName “MyCatalog” -CustomProperties $custprop
```
-
要更新目录中新 VM 和现有 VM 的计费模式,请创建具有更新的自定义属性的新预配方案版本,并将新版本应用于所有 VM:
$custprop = "BillingMode,Hourly" New-ProvSchemeVersion -ProvisioningSchemeName "MyCatalog" -CustomProperties $custprop New-ProvSchemeHardwareUpdate -ProvisioningSchemeVersion 2 ` -StartsNow -AllVMs ` -MaxDurationInMinutes 100 ` -ProvisioningSchemeName "MyCatalog" <!--NeedCopy--> -
监视计费信息
- 您可以验证目录和单个虚拟机的计费模式。
运行以下 PowerShell 命令以检查您帐户的计费资格:
-
将
BillingMode作为 CustomProperties 的一部分返回```
-
Get-ProvScheme –ProvisioningSchemeName “”MyCatalog” “ Select ProvisioningSchemeName, CustomProperties ```
-
将
BillingMode作为 VMInfo 的一部分返回Get-ProvVMDetails –ProvisioningSchemeName “"MyCatalog" " | Select-Object -ExpandProperty VMInfo <!--NeedCopy-->
故障排除和验证
MCS 包含预检检查,以防止出现不兼容的配置。在目录创建或编辑期间,您可能会遇到以下错误:
-
NoInstanceConfigFoundForBillingMode:如果所选的服务产品(实例类型)、租期和平台类型不支持所选的计费模式,则会发生此错误。
- Spot Instance Not Supported(不支持 Spot 实例):如果您尝试将 Spot 实例与 WorkSpaces 主机连接结合使用,则验证将失败。
- EC2 billing restriction(EC2 计费限制):如果您的 AWS 帐户采用旧版 EC2 计费模型,则尝试设置“每月”计费模式会导致验证错误。
使用 PowerShell 创建具有启动模板版本的目录
您可以创建以启动模板版本作为计算机配置文件输入的 MCS 计算机目录。您还可以将计算机配置文件目录的输入从 VM 更新为启动模板版本,以及从启动模板版本更新为 VM。
在 AWS EC2 控制台上,您可以提供启动模板的实例配置信息以及版本号。当您在创建或更新计算机目录时将启动模板版本指定为计算机配置文件输入时,该启动模板版本中的属性将复制到预配的 VDA VM。
以下属性可以使用计算机配置文件输入提供,也可以作为 New-ProvScheme 或 Set-ProvScheme 命令中的参数显式提供。如果它们在 New-ProvScheme 或 Set-ProvScheme 命令中提供,则它们优先于这些属性的计算机配置文件值。
- 服务产品
- 网络
注意:
如果未在计算机配置文件启动模板中或作为
New-ProvScheme命令中的参数提供服务产品,则会收到相应的错误。
要使用启动模板版本作为计算机配置文件输入来创建目录:
- 打开 PowerShell 窗口。
-
- 运行
asnp citrix*以加载 Citrix 特定的 PowerShell 模块。
- 运行
-
获取启动模板的启动模板版本列表。例如:
XDHyp:\HostingUnits\test\test-mp-sard (lt-01xxxxx).launchtemplate> ls | Select FullPath <!--NeedCopy--> -
如果尚未创建身份池,请创建一个。例如:
New-AcctIdentityPool ` -IdentityPoolName "abc11" ` -NamingScheme "abc1-##" ` -NamingSchemeType Numeric ` -Domain "citrix-xxxxxx.local" ` -ZoneUid "xxxxxxxx" ` <!--NeedCopy--> -
创建以启动模板版本作为计算机配置文件输入的预配方案。例如:
```
New-ProvScheme ` -ProvisioningSchemeName “MPLT1” `
-
-HostingUnitUid “c7f71f6a-3f45-4xxx-xxxx-xxxxxxxxxx” `
- -IdentityPoolUid “bf3a6ba2-1f80-4xxx-xxxx-xxxxxxxxx” `
- -ImageVersionSpecUid ‘24dfb047-e867-527g-896c-25664xxxxx1t’ `
- -CleanOnBoot `
- -MachineProfile “XDHyp:\HostingUnits\xxxx-ue1a\machineprofiletest (lt-01xxxxx).launchtemplate\lt-01xxxxx (1).launchtemplateversion”
```
-
- 将预配方案注册为代理目录。例如:
New-BrokerCatalog -Name "MPLT1" ` -AllocationType Random ` -Description "Machine profile catalog" ` -ProvisioningSchemeId fe7df345-244e-4xxxx-xxxxxxxxx ` -ProvisioningType Mcs ` -SessionSupport MultiSession ` -PersistUserChanges Discard <!--NeedCopy-->-
- 完成目录创建。
更新计算机配置文件源
您还可以将计算机配置文件目录的输入从 VM 更新为启动模板版本,以及从启动模板版本更新为 VM。例如:
- 要将计算机配置文件目录的输入从 VM 更新为启动模板版本:
```
Set-ProvScheme -ProvisioningSchemeName "CloudServiceOfferingTest" `
-
-MachineProfile “XDHyp:\HostingUnits\xxxx-ue1a\machineprofiletest (lt-0bxxxxxxxxxxxx).launchtemplate\lt-0bxxxxxxxxxxxx (1).launchtemplateversion”
- 要将计算机配置文件目录的输入从启动模板版本更新为 VM:Set-ProvScheme -ProvisioningSchemeName “CloudServiceOfferingTest” `
- -MachineProfile “XDHyp:\HostingUnits\sard-ue1a\us-east-1a.availabilityzone\apollo-non-persistent-vda-win2022-2 (i-08xxxxxxxxx).vm”
```
启用 MCSIO 的目录
MCS 存储优化 (MCSIO) 通过将磁盘操作缓存在内存中或小型高速磁盘上,从而提高 VM 的性能。您可以使用 PowerShell 命令创建启用 MCSIO 的非持久性目录。要创建此类目录,您必须在准备 AMI 实例期间安装或升级 VDA 时安装 MCSIO 驱动程序。默认情况下,该驱动程序未安装。
准备好 MCSIO AMI 后(安装 VDA 时,选择在安装中包含 MCSIO 驱动程序的选项),您可以创建启用 MCSIO 的非持久性目录。
注意:
通过 Studio 仅使用磁盘缓存(不使用内存缓存)配置 MCSIO 的选项已在所有虚拟机管理程序和云服务环境中移除。
创建已启用 MCSIO 的目录
添加到 New-ProvScheme PowerShell 命令的四个参数是:
-
UseWriteBackCache: 启用给定预配方案的缓存(回写缓存) -
WriteBackCacheDiskSize: 指定用于缓存的临时磁盘大小(以 GB 为单位) -
WriteBackCacheMemorySize: 指定用于缓存的内存量(以 MB 为单位)。这是一个可选参数。
注意:
WriteBackCacheDiskSize的值必须大于零,因为至少需要 1 GB 的缓存磁盘存储。缓存磁盘大小不得大于操作系统磁盘大小。WriteBackCacheMemorySize的值必须为非零且小于计算机目录内存大小。
影响 MCSIO 的自定义属性包括:
-
WBCDiskStorageType: 定义卷类型,该类型用于 Amazon WorkSpaces Core 托管实例中的临时磁盘。此参数采用volume-type[:iops][:throughput]格式的字符串参数。以下是卷类型:- gp2: 请勿将 iops 和 throughput 参数用于此卷类型
- gp3: 将 iops 和 throughput 参数用于此卷类型
- io1: 仅将 iops 参数用于此卷类型
- io2: 仅将 iops 参数用于此卷类型
默认卷类型为 gp2。
-
PersistWBC: 控制在 Amazon WorkSpaces Core 托管实例关闭时是保留还是丢弃缓存磁盘。如果设置为true,则保留缓存磁盘。如果设置为false(默认值),则仅在 AMI 实例开机时创建并保留缓存磁盘。 -
PersistOSDisk: 控制在 Amazon WorkSpaces Core 托管实例关闭时是保留还是丢弃操作系统磁盘。如果设置为true,则保留操作系统磁盘。如果设置为false(默认值),则仅在 AMI 实例开机时创建并保留操作系统磁盘。
在 PowerShell 窗口中执行以下步骤以创建已启用 MCSIO 的非持久性目录:
- 打开 PowerShell 窗口。
- 运行
asnp citrix*以加载 Citrix 特定的 PowerShell 模块。 - 创建代理目录和身份池。
-
创建预配方案。例如:
$HostingUnitUid = '0xxxx1d9-bbfc-xxxf-bxxb-exxxxxe008b2' $MasterImageVM = 'XDHyp:\HostingUnits\ctx-test\aws-apollo-non-persistent-multi-mcsio-vda-win2022 (ami-0bf1810488acbxxxb).template' $NetworkMap = @{ 'NetworkPath' = 'XDHyp:\HostingUnits\ctx-test\us-east-1a.availabilityzone\10.0.128.0`/17 (vpc-0fa6e41d72507fxxx).network' } $SecurityGroup = $( 'XDHyp:\HostingUnits\ctx-test\us-east-1a.availabilityzone\private.securitygroup' ) $ServiceOffering = 'XDHyp:\HostingUnits\ctx-test\T3 Medium Instance.serviceoffering' $CustomProperties = 'WBCDiskStorageType,gp3:6000:250;PersistWBC,false' $provScheme = New-ProvScheme -ProvisioningSchemeName $CatalogName -HostingUnitUid $HostingUnitUid ` -IdentityPoolUid $acctPool.IdentityPoolUid -CleanOnBoot ` - MasterImageVM $MasterImageVM ` -NetworkMap $NetworkMap ` -ServiceOffering $ServiceOffering ` -SecurityGroup $SecurityGroup ` -CustomProperties $CustomProperties ` -UseWriteBackCache -WriteBackCacheDiskSize 16 -WriteBackCacheMemorySize 256 <!--NeedCopy--> - 将 VM 添加到目录。
使用 MCSIO 提高启动性能
如果启用 MCSIO 并将 PersistWBC 和 PersistOSDisk 自定义属性设置为 true,则可以提高 VM 的启动性能。通过此设置,VM 可以更快地启动,因为它们无需初始化新的缓存磁盘或从其模板重新创建根磁盘。
加密操作系统和身份磁盘
您可以使用 AWS KMS 密钥(客户管理密钥和 AWS 管理密钥)创建 VM 目录,这些密钥可用于加密操作系统磁盘和身份磁盘 (ID)。
- AWS 管理密钥每年自动轮换。
- 客户管理密钥可选择自动轮换,也可以手动管理。
有关 KMS 密钥的更多信息,请参阅以下 AWS 文档:
对于操作系统和身份磁盘的加密,请配置以下选项之一:
- 使用已加密的准备好的映像(例如,从包含使用 KMS 密钥加密的 EBS 根卷的实例或快照创建的 AMI)
- 使用包含加密 EBS 根卷的计算机配置文件源(VM 或启动模板)。
限制
请考虑以下限制:
- MCS 目前仅支持准备好的映像 AMI 上的一个磁盘。
-
您无法直接加密现有的未加密 EBS 卷或快照,也无法修改现有加密卷的 KMS 密钥。为此,您必须:
- 创建该卷的新快照。
- 从该快照创建新卷。
- 加密新卷。
请参阅以下 AWS 文档:
- 加密未加密的资源
- EBS 卷自动或默认加密的限制:自动加密现有和新的 Amazon EBS 卷。
创建具有磁盘加密的目录
您可以使用以下方法创建具有磁盘加密的 MCS 计算机目录:
- 准备好的映像(使用映像管理从具有加密磁盘的主映像创建)
- 计算机配置文件
使用计算机配置文件输入时的注意事项包括:
- 计算机配置文件输入的 KMS 密钥优先于准备好的映像的 KMS 密钥。
- 如果未提供计算机配置文件输入,则使用准备好的映像 AMI 的 KMS 密钥来加密目录 VM 的磁盘。
- 如果计算机配置文件存在块设备映射,则准备好的映像模板 (AMI) 和计算机配置文件中存在的块设备必须匹配。例如,如果 AMI 在
/dev/sda1上定义了一个设备,则计算机配置文件也必须在/dev/sda1上定义一个设备。 - 如果计算机配置文件源中没有密钥且准备好的映像未加密,则目录 VM 的磁盘不会加密。
- 当准备好的映像已加密时,计算机配置文件源 VM 或启动模板必须具有加密的根卷才能被视为有效输入。
修改现有目录
您可以使用 Set-ProvScheme PowerShell 命令以实现以下目的:
- 包含新 KMS 密钥的卷的计算机配置文件输入。
- 使用映像管理从主映像创建的包含加密 AMI 的准备映像。
重要注意事项:
- 添加到目录的新 VM 的卷使用新 KMS 密钥进行加密。
- 要在存在现有计算机配置文件时更新加密设置,请使用新的计算机配置文件运行
Set-ProvScheme。 - 您无法将现有目录从加密卷修改为未加密卷。
您无法从加密的准备映像 AMI 更新到未加密的准备映像 AMI。
为 VM 实例启用 NitroTPM 和 UEFI 安全启动
创建目录时,您现在可以选择启用 NitroTPM 和/或 UEFI 安全启动的准备映像 (AMI)。因此,目录中预配的 VM 也将启用 NitroTPM 和/或 UEFI 安全启动。此实施可确保 VM 的安全性和可信度。有关 NitroTPM 和 UEFI 安全启动的更多信息,请参阅 Amazon 文档。
限制
- 目前,您可以在所有 AWS 区域(包括 AWS GovCloud (US) 区域)中使用 NitroTPM 和安全启动,但中国区域除外。
- 您无法在现有目录上启用 NitroTPM 和 UEFI 安全启动。如果您需要启用 NitroTPM 和 UEFI 安全启动的目录,请创建一个新目录。
关键步骤
- 设置您的 AWS 环境。
- 创建与 AWS 的连接。
- 创建启用 NitroTPM 和/或 UEFI 安全启动的主映像 (AMI)。
- 从主映像创建准备映像。请参阅为 Amazon WorkSpaces Core 托管实例创建准备映像。
- 通过在 Citrix Studio 目录创建菜单中选择启用 NitroTPM 和 UEFI 安全启动的准备映像,或在使用 PowerShell 命令创建预配方案时,创建计算机目录。
添加到所创建目录的 VM 均已启用 NitroTPM 和 UEFI 安全启动。
创建支持 NitroTPM 和 UEFI 安全启动的 AMI
-
您可以从已启用 NitroTPM 和/或 UEFI 安全启动的 VM 创建 AMI。
- 使用 AWS Marketplace 映像创建实例。例如,在
aws-marketplace上搜索TPM-Windows_Server-2022-English-Full-Base。 - 下载单会话或多会话 VDA。
- 从该 VM 创建 AMI。
- 使用 AWS Marketplace 映像创建实例。例如,在
-
使用 register-image 命令:
--boot-mode (string) --tpm-support (string) <!--NeedCopy-->有关更多信息,请参阅 register-image。
请参阅以下 AWS 文档:
您可以从 Delivery Controller™ 主机打开 PowerShell 窗口,以检查特定项是否满足以下条件:
-
服务产品支持 NitroTPM 或 UEFI 安全启动
(Get-Item -Path “XDHyp:\HostingUnits\aws\T3 Medium Instance.serviceoffering”).AdditionalData.BootMode (Get-Item -Path “XDHyp:\HostingUnits\aws\T3 Medium Instance.serviceoffering”).AdditionalData.NitroTpmSupportVersions <!--NeedCopy--> -
模板支持 NitroTPM 或 UEFI 安全启动
(Get-HypInventoryItem -LiteralPath “XDHyp:\HostingUnits\aws” -ResourceType “template -Id “ID”).AdditionalData.BootMode (Get-HypInventoryItem -LiteralPath “XDHyp:\HostingUnits\aws” -ResourceType “template -Id “ID”).AdditionalData.TpmSupport <!--NeedCopy-->
更新现有目录的服务产品
您可以使用 Set-ProvScheme 更改现有目录的服务产品。此更改适用于新添加的 VM。但是,在以下情况下会发生错误:
| AMI 启动模式 | AMI 支持 Nitro TPM? | 服务产品支持 NitroTPM 和 UEFI 安全启动? |
|---|---|---|
| UEFI | 否 | 否 |
| Legacy BIOS | 是 | 否 |
| UEFI | 是 | 否 |
| UEFI Preferred | 是 | 否 |
复制 VM 上的标签
您可以将计算机配置文件中指定的 NIC 和磁盘(身份磁盘、回写缓存磁盘和操作系统磁盘)上的标签复制到 MCS 计算机目录中新创建的 VM。您可以在任何计算机配置文件源(AWS VM 实例或 AWS 启动模板版本)中指定这些标签。此功能适用于持久性和非持久性计算机目录和 VM。
注意:
- 在 AWS EC2 控制台中,您无法在 Launch Template Version Resource Tags 下看到 Tag Network Interfaces 值。但是,您可以运行 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 将获得这两个网络接口的标签。
使用 PowerShell 筛选 VM 实例
您用作计算机配置文件 VM 的 AWS VM 实例必须与计算机目录兼容,才能正确创建和运行。要列出可用作计算机配置文件输入 VM 的 AWS VM 实例,您可以使用 Get-HypInventoryItem 命令。该命令可以对托管单元上可用的 VM 清单进行分页和筛选。
分页:
Get-HypInventoryItem 支持两种分页模式:
- 分页模式使用
-MaxRecords和-Skip参数返回项目集:-
-MaxRecords:默认值为 1。这控制要返回的项目数。 -
-Skip:默认值为 0。这控制从管理程序中列表的绝对开头(或绝对结尾)跳过的项目数。
-
- 滚动模式使用
-MaxRecords、-ForwardDirection和-ContinuationToken参数允许滚动记录:-
-ForwardDirection:默认值为 True。这与-MaxRecords一起使用,以返回下一组匹配记录或上一组匹配记录。 -
-ContinuationToken:返回紧随其后(如果ForwardDirection为 false,则为之前)的项目,但不包括ContinuationToken中给定的项目。
-
分页示例:
-
要返回名称最低的计算机模板的单个记录。
AdditionalData字段包含TotalItemsCount和TotalFilteredItemsCount: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 中的任何属性列出模板或 VM。例如:
(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-->
后续步骤
更多信息
- 映像管理
- 有关 Amazon WorkSpaces Core GitHub PowerShell 示例,请参阅 citrix-mcs-sdk-samples-Amazon WorkSpaces Core