Microsoft Azure Resource Manager 云环境
使用 Microsoft Azure Resource Manager 在您的 Citrix Virtual Apps and Desktops 部署中预配虚拟机时,请按照本文中的指导原则进行操作。
我们假设您熟悉以下内容:
- Azure Active Directory: https://docs.microsoft.com/en-in/azure/active-directory/fundamentals/active-directory-whatis/
- 同意框架: https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/plan-an-application-integration
- 服务主体: https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals/
Azure 按需预配
在采用 Azure 按需预配的情况下,仅在完成预配后,当 Citrix Virtual Apps and Desktops 启动打开电源操作时才创建 VM。
使用 MCS 在 Azure Resource Manager 中创建计算机目录时,Azure 按需预配功能:
- 降低存储成本
- 加快目录创建过程
创建 MCS 目录时,Azure 门户将显示资源组中的网络安全组、网络接口、基础映像和身份磁盘。
在 Citrix Virtual Apps and Desktops 为 VM 启动打开电源操作之前,Azure 门户不会显示 VM。有两种类型的计算机,它们有以下区别:
- 对于池计算机,仅当存在 VM 时才会有操作系统磁盘和写回缓存。在控制台中关闭池计算机时,该 VM 在 Azure 门户中不可见。如果您经常关闭计算机(例如,在工作时间以外),则可以显著节省存储成本。
- 对于专用计算机,在首次打开 VM 时创建操作系统磁盘。Azure 门户中的 VM 将保留在存储中,直到计算机标识被删除。在控制台中关闭专用计算机时,该 VM 仍在 Azure 门户中可见。
与 Azure Resource Manager 的连接
连接和资源一文描述了创建连接的向导。以下信息涵盖与 Azure Resource Manager 连接有关的详细信息。
注意事项:
- Citrix 建议使用具有贡献者角色的服务主体。但是,请参阅最低权限部分以获取最低权限列表。
- 在创建第一个连接时,Azure 会提示您为其授予必要的权限。对于将来的连接,您仍然必须进行身份验证,但是 Azure 会记住您以前同意的情况,并且不会再显示提示。
- 用于身份验证的帐户必须是订阅的协管理员。
- 用于身份验证的帐户必须是订阅的目录的成员。需要注意两种类型的帐户:“工作或学校”和“个人 Microsoft 帐户”。有关详细信息,请参阅 CTX219211。
-
虽然可以通过将现有 Microsoft 帐户添加为订阅目录的成员来使用该帐户,但如果以前已为用户授予对其中一个目录的资源的来宾访问权限,则可能会出现复杂情况。在这种情况下,他们可能在目录中有一个不会授予其必要权限的占位符条目,并会返回错误。
通过从目录中删除资源并明确重新添加来改正此问题。但是,请谨慎使用此方法,因为它会对帐户可以访问的其他资源产生意外影响。
- 有一个已知问题,即某些帐户实际上是成员时,会被检测为目录来宾。此类配置通常发生在已建立的较旧的目录帐户中。解决方法:向目录中添加一个帐户,该帐户采用适当的成员身份值。
- 资源组只是资源的容器,它们可以包含来自自己所在区域以外的区域的资源。如果您希望资源组的区域中显示的资源可用,这可能会引起混淆。
- 请确保您的网络和子网足够大,可以容纳您需要的计算机数量。这需要一些先见之明,但 Microsoft 会帮助您指定合适的值,并提供有关地址空间容量的指导。
可以通过两种方式建立与 Azure 的主机连接:
- 通过向 Azure 进行身份验证以创建服务主体。
- 使用之前创建的服务主体的详细信息连接到 Azure。
创建服务主体
重要:
此功能尚不适用于 Azure 中国和 Azure 德国订阅。
在开始之前,请向 Azure 进行身份验证。确保:
- 在订阅的 Azure Active Directory 租户中具有一个用户帐户。
- Azure AD 用户帐户也是您希望用来预配资源的 Azure 订阅的协管理员。
- 您拥有全局管理员、应用程序管理员或应用程序开发者权限以进行身份验证。创建主机连接后,可以撤消这些权限。有关角色的详细信息,请参阅 Azure AD 内置角色。
向 Azure 进行身份验证以创建服务主体时,应用程序将在 Azure 中注册。密钥(客户端密码)是为已注册的应用程序创建的。注册的应用程序使用客户端密钥向 Azure AD 进行身份验证。请务必在客户端密码到期之前进行更改。在密钥到期之前,您会在控制台上收到警报。
要向 Azure 进行身份验证以创建服务主体,请在添加连接和资源向导中完成以下步骤:
-
在连接页面上,选择创建新连接、Microsoft Azure 连接类型和您的 Azure 环境。
-
选择可以使用哪些工具来创建虚拟机,然后选择下一步。
-
在连接详细信息页面上,输入 Azure 订阅 ID 和连接的名称。输入订阅 ID 后,将启用新建按钮。
注意:
连接名称可以包含 1-64 个字符,不能仅包含空格或字符
\/;:#.*?=<>|[]{}"'()'
。 -
选择新建,然后输入 Azure Active Directory 帐户用户名和密码。
-
选择登录。
-
选择接受以将列出的权限授予 Citrix Virtual Apps and Desktops。Citrix Virtual Apps and Desktops 会创建一个允许它代表指定的用户管理 Azure 资源的服务主体。
-
选择接受后,您将返回到向导中的连接页面。
注意:
成功对 Azure 进行身份验证后,新建和使用现有按钮将消失。此时将显示连接成功文本,并带有一个绿色复选标记,指示已成功连接到您的 Azure 订阅。
-
在连接详细信息页面上,选择下一步。
注意:
在成功对 Azure 进行身份验证并同意授予所需的权限之后,才能进入下一页。
-
为连接配置资源。资源由区域和网络组成。
- 在区域页面上,选择一个区域。
- 在网络页面上,执行以下操作:
- 键入 1–64 字符的资源名称以帮助确定区域和网络组合。资源名称不能仅包含空格,也不能包含字符
\/;:#.*?=<>|[]{}"'()'
。 - 选择一个虚拟网络/资源组对。(如果您有多个具有相同名称的虚拟网络,将网络名称与资源组配对可提供唯一的组合。)如果您在上一个页面上选择的区域不具有任何虚拟网络,请返回到该页面并选择一个具有虚拟网络的区域。
- 键入 1–64 字符的资源名称以帮助确定区域和网络组合。资源名称不能仅包含空格,也不能包含字符
-
在摘要页面上,查看设置的摘要,然后选择完成以完成您的设置。
使用之前创建的服务主体的详细信息连接到 Azure
要手动创建服务主体,请连接到 Azure Resource Manager 订阅并使用以下部分中提供的 PowerShell cmdlet。
必备条件:
-
SubscriptionId: 您希望预配 VDA 的订阅的 Azure Resource Manager
SubscriptionID
。 - ActiveDirectoryID:您在 Azure AD 中注册的应用程序的租户 ID。
- ApplicationName: 要在 Azure AD 中创建的应用程序的名称。
要创建服务主体,请执行以下操作:
-
连接到您的 Azure Resource Manager 订阅。
Connect-AzAccount
-
选择您要创建服务主体的 Azure Resource Manager 订阅。
Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription
-
在您的 AD 租户中创建应用程序。
$AzureADApplication = New-AzADApplication -DisplayName $ApplicationName
-
创建服务主体。
New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId
-
向服务主体分配角色。
New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $AzureADApplication.AppId –scope /subscriptions/$SubscriptionId
-
在 PowerShell 控制台的输出窗口中,记下 ApplicationId。请在创建主机连接时提供该 ID。
在添加连接和资源向导中,执行以下操作:
-
在连接页面上,选择创建新连接、Microsoft Azure 连接类型和您的 Azure 环境。
-
选择可以使用哪些工具来创建虚拟机,然后选择下一步。
-
在连接详细信息页面上,输入 Azure 订阅 ID 和连接的名称。
注意:
连接名称可以包含 1-64 个字符,不能仅包含空格或字符
\/;:#.*?=<>|[]{}"'()'
。 -
选择使用现有。在现有服务主体详细信息窗口中,输入现有服务主体的以下设置。输入详细信息后,将会启用保存按钮。选择保存。除非提供有效的详细信息,否则无法跳过此页面。
- 订阅 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 美国政府为 https://management.usgovcloudapi.net/。
- 存储后缀:https://*.core.windows.net./。此 (*) 是存储后缀的通配符。例如,
https://demo.table.core.windows.net/
。
-
选择保存后,您将返回到连接详细信息页面。选择下一步继续进入下一页。
-
为连接配置资源。资源由区域和网络组成。
- 在区域页面上,选择一个区域。
- 在网络页面上,执行以下操作:
- 键入 1–64 字符的资源名称以帮助确定区域和网络组合。资源名称不能仅包含空格,也不能包含字符
\/;:#.*?=<>|[]{}"'()'
。 - 选择一个虚拟网络/资源组对。(如果您有多个具有相同名称的虚拟网络,将网络名称与资源组配对可提供唯一的组合。)如果您在上一个页面上选择的区域不具有任何虚拟网络,请返回到该页面并选择一个具有虚拟网络的区域。
- 键入 1–64 字符的资源名称以帮助确定区域和网络组合。资源名称不能仅包含空格,也不能包含字符
-
在摘要页面上,查看设置的摘要,然后选择完成以完成您的设置。
使用 Azure Resource Manager 映像创建计算机目录
映像可以是磁盘、快照或 Azure Compute Gallery 中用于在计算机目录中创建 VM 的映像定义的映像版本。创建计算机目录之前,请在 Azure Resource Manager 中创建一个映像。有关映像的常规信息,请参阅创建计算机目录。
选择启用了受信任启动的映像或快照时,必须使用安全类型设置为“受信任启动”的计算机配置文件。然后,您可以通过在计算机配置文件中指定其值来启用或禁用 SecureBoot 和 vTPM。有关 Azure 受信任启动的信息,请参阅 Azure 虚拟机的受信任启动。
计算机目录使用在自定义属性中定义的以下属性:
- 可用性区域
- 专用主机组 ID
- 磁盘加密集 ID
- 操作系统类型
- 许可证类型
- 存储类型
如果未显式定义这些自定义属性,则从 ARM 模板规范或 VM(以用作计算机配置文件为准)中设置属性值。此外,如果未指定 ServiceOffering
,则从计算机配置文件进行设置。
注意:
如果计算机配置文件中缺少某些属性,并且未在自定义属性中定义,则在适用的情况下将使用这些属性的默认值。
以下部分描述了 CustomProperties
从 MachineProfile 派生定义的所有属性或值时 New-ProvScheme
和 Set-ProvScheme
下的某些方案。
New-ProvScheme 方案
-
MachineProfile 具有所有属性,但未定义 CustomProperties。示例:
New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpA.vm"
以下值被设置为目录的自定义属性:
Get-ProvScheme | select CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<mpA-value>"/> <Property xsi:type="StringProperty" Name="OSType" Value="<mpA-value>"/> <Property xsi:type="StringProperty" Name="LicenseType" Value="<mpA-value>"/> <Property xsi:type="StringProperty" Name="DiskEncryptionSetId" Value="<mpA-value>"/> <Property xsi:type="StringProperty" Name="DedicatedHostGroupId" Value="<mpA-value>"/> <Property xsi:type="StringProperty" Name="Zones" Value="<mpA-value>"/> </CustomProperties> <!--NeedCopy-->
-
MachineProfile 有一些属性,但未定义 CustomProperties。示例:MachineProfile 只有 LicenseType 和 OsType。
New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpA.vm"
以下值被设置为目录的自定义属性:
Get-ProvScheme | select CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="OSType" Value="<mpA-value>"/> <Property xsi:type="StringProperty" Name="LicenseType" Value="<mpA-value>"/> </CustomProperties> <!--NeedCopy-->
-
MachineProfile 和 CustomProperties 定义了所有属性。示例:
New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpA.vm" -CustomProperties $CustomPropertiesA
自定义属性优先。以下值被设置为目录的自定义属性:
Get-ProvScheme | select CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<CustomPropertiesA-value>"/> <Property xsi:type="StringProperty" Name="OSType" Value="<CustomPropertiesA-value>"/> <Property xsi:type="StringProperty" Name="LicenseType" Value="<CustomPropertiesA-value>"/> <Property xsi:type="StringProperty" Name="DiskEncryptionSetId" Value="<CustomPropertiesA-value>"/> <Property xsi:type="StringProperty" Name="DedicatedHostGroupId" Value="<CustomPropertiesA-value>"/> <Property xsi:type="StringProperty" Name="Zones" Value="<CustomPropertiesA-value>"/> </CustomProperties> <!--NeedCopy-->
- 有些属性在 MachineProfile 中定义,有些属性在 CustomProperties 中定义。示例:
- CustomProperties 定义 LicenseType 和 StorageAccountType
- MachineProfile 定义 LicenseType、OsType 和区域
New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpA.vm" -CustomProperties $CustomPropertiesA
以下值被设置为目录的自定义属性:
Get-ProvScheme | select CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<CustomPropertiesA-value>"/> <Property xsi:type="StringProperty" Name="OSType" Value="<mpA-value>"/> <Property xsi:type="StringProperty" Name="LicenseType" Value="<CustomPropertiesA-value>"/> <Property xsi:type="StringProperty" Name="Zones" Value="<mpA-value>"/> </CustomProperties> <!--NeedCopy-->
-
有些属性在 MachineProfile 中定义,有些属性在 CustomProperties 中定义。此外,未定义 ServiceOffering。示例:
- CustomProperties 定义 StorageType
- MachineProfile 定义 LicenseType
New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mp.vm" -ServiceOffering "XDHyp:\HostingUnits\azureunit\serviceoffering.folder<explicit-machine-size>.serviceoffering" <!--NeedCopy-->
以下值被设置为目录的自定义属性:
Get-ProvScheme | select ServiceOffering serviceoffering.folder<explicit-machine-size>.serviceoffering Get-ProvScheme | select CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageAccountType" Value="explicit-storage-type"/> <Property xsi:type="StringProperty" Name="LicenseType" Value="value-from-machineprofile"/> </CustomProperties> <!--NeedCopy-->
- 如果 OsType 既不在 CustomProperties 中,也不在 MachineProfile 中,那么:
- 该值将从主映像中读取。
- 如果主映像是非托管磁盘,则 OsType 设置为 Windows。
示例:
New-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpA.vm" -MasterImageVM "XDHyp:\HostingUnits\azureunit\image.folder\linux-master-image.manageddisk"
主映像中的值将写入自定义属性,在本例中为 Linux。
Get-ProvScheme | select CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="OSType" Value="Linux"/> </CustomProperties> <!--NeedCopy-->
Set-ProvScheme 方案
- 包含以下对象的现有目录:
-
StorageAccountType
和 OsType 的 CustomProperties - 用于定义区域的 MachineProfile
mpA.vm
更新:
- 用于定义 StorageAccountType 的 MachineProfile mpB.vm
- 用于定义 LicenseType 和 OsType 的一组新自定义属性 $CustomPropertiesB
Set-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpB.vm" -CustomProperties $CustomPropertiesB
以下值被设置为目录的自定义属性:
Get-ProvScheme | select CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<mpB-value>"/> <Property xsi:type="StringProperty" Name="OSType" Value="<CustomPropertiesB-value>"/> <Property xsi:type="StringProperty" Name="LicenseType" Value="<CustomPropertiesB-value>"/> </CustomProperties> <!--NeedCopy-->
-
- 包含以下对象的现有目录:
- S
torageAccountType
和 OsType 的 CustomProperties - 用于定义 StorageAccountType 和 LicenseType 的 MachineProfile
mpA.vm
更新:
- 用于定义 StorageAccountType 和 OsType 的一组新自定义属性 $CustomPropertiesB。
Set-ProvScheme -CustomProperties $CustomPropertiesB
以下值被设置为目录的自定义属性:
Get-ProvScheme | select CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<CustomPropertiesB-value>"/> <Property xsi:type="StringProperty" Name="OSType" Value="<CustomPropertiesB-value>"/> <Property xsi:type="StringProperty" Name="LicenseType" Value="<mp-A-value>"/> </CustomProperties> <!--NeedCopy-->
- S
- 包含以下对象的现有目录:
-
StorageAccountType
和 OsType 的 CustomProperties - 用于定义区域的 MachineProfile
mpA.vm
更新:
- 用于定义 StorageAccountType 和 LicenseType 的 MachineProfile mpB.vm
- 未指定
ServiceOffering
Set-ProvScheme -MachineProfile "XDHyp:\HostingUnits\azureunit\machineprofile.folder\azure.resourcegroup\mpB.vm"
以下值被设置为目录的自定义属性:
Get-ProvScheme | select ServiceOffering serviceoffering.folder<value-from-machineprofile>.serviceoffering Get-ProvScheme | select CustomProperties <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageAccountType" Value="<mpB-value>"/> <Property xsi:type="StringProperty" Name="OSType" Value="<prior-CustomProperties-value>"/> <Property xsi:type="StringProperty" Name="LicenseType" Value="<mpB-value>"/> </CustomProperties> <!--NeedCopy-->
-
在主机级别加密 Azure 磁盘
可以创建具有主机加密功能的 MCS 计算机目录。目前,MCS 仅支持面向此功能的计算机配置文件工作流程。您可以使用 VM 或模板规范作为计算机配置文件的输入。
此加密方法不会通过 Azure 存储对数据进行加密。托管 VM 的服务器对数据进行加密,加密的数据随后会流经 Azure 存储服务器。因此,这种加密方法会对数据进行端到端加密。
限制:
Azure 磁盘主机加密:
- 并非所有 Azure 计算机大小都支持
- 与 Azure 磁盘加密不兼容
要创建具有主机加密功能的计算机目录,请执行以下操作:
- 检查订阅是否启用了主机加密功能。为此,请参阅https://learn.microsoft.com/en-us/rest/api/resources/features/get?tabs=HTTP/。如果未启用,则必须为订阅启用该功能。有关为您的订阅启用该功能的信息,请参阅 https://learn.microsoft.com/en-us/azure/virtual-machines/disks-enable-host-based-encryption-portal?tabs=azure-powershell#prerequisites/。
-
检查特定 Azure VM 大小是否支持主机加密。要执行此操作,请在 PowerShell 窗口中运行以下任一命令:
PS XDHyp:\Connections<your connection>\east us.region\serviceoffering.folder> <!--NeedCopy-->
PS XDHyp:\HostingUnits<your hosting unit>\serviceoffering.folder> <!--NeedCopy-->
-
在启用了主机加密功能的 Azure 门户中创建 VM 或模板规范,作为计算机配置文件的输入。
- 如果要创建 VM,请选择支持主机加密功能的 VM 大小。创建 VM 后,VM 属性 Encryption at host(主机加密)处于启用状态。
- 如果要使用模板规范,请在
securityProfile
内部将参数Encryption at Host
指定为 true。
-
通过选择 VM 或模板规范,使用计算机配置文件工作流程创建 MCS 计算机目录。
- 操作系统磁盘/数据磁盘:通过客户管理的密钥和平台管理的密钥进行加密
- 临时操作系统磁盘:仅通过平台管理的密钥进行加密
- 缓存磁盘:通过客户管理的密钥和平台管理的密钥进行加密
可以使用“完整配置”界面或运行 PowerShell 命令来创建计算机目录。
如果要使用 PowerShell 命令创建计算机目录(其中加密密钥为客户管理的密钥),请执行以下操作:
- 打开 PowerShell 窗口。
- 运行
asnp citrix*
以加载 Citrix 特定的 PowerShell 模块。 - 输入
cd xdhyp:/
。 - 输入
cd .\HostingUnits\(your hosting unit)
。 - 输入 cd diskencryptionset.folder。
- 输入 dir 以获取磁盘加密集列表。
- 复制磁盘加密集的 ID。
-
创建包含磁盘加密集的 ID 的自定义属性字符串。例如:
$customProperties = "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"> <Property xsi:type=`"StringProperty`" Name=`"StorageAccountType`" Value=`"Standard_LRS`" /> <Property xsi:type=`"StringProperty`" Name=`"persistWBC`" Value=`"False`" /> <Property xsi:type=`"StringProperty`" Name=`"PersistOsDisk`" Value=`"false`" /> <Property xsi:type=`"StringProperty`" Name=`"UseManagedDisks`" Value=`"true`" /> <Property xsi:type=`"StringProperty`" Name=`"DiskEncryptionSetId`" Value=`"/subscriptions/0xxx4xxx-xxb-4bxx-xxxx-xxxxxxxx/resourceGroups/abc/providers/Microsoft.Compute/diskEncryptionSets/abc-des`"/> </CustomProperties> <!--NeedCopy-->
-
创建标识池(如果尚未创建)。例如:
New-AcctIdentityPool -IdentityPoolName idPool -NamingScheme ms## -Domain def.local -NamingSchemeType Numeric <!--NeedCopy-->
-
运行 New-ProvScheme 命令:例如:
New-ProvScheme -CleanOnBoot -HostingUnitName "name" -IdentityPoolName "name" -InitialBatchSizeHint 1 -MasterImageVM "XDHyp:\HostingUnits\azure-res2\image.folder\def.resourcegroup\def.snapshot" -NetworkMapping @{"0"="XDHyp:\HostingUnits\azure-res2\virtualprivatecloud.folder\def.resourcegroup\def-vnet.virtualprivatecloud\subnet1.network"} -ProvisioningSchemeName "name" -ServiceOffering "XDHyp:\HostingUnits\azure-res2\serviceoffering.folder\Standard_DS2_v2.serviceoffering" -MachineProfile "XDHyp:\HostingUnits<adnet>\machineprofile.folder<def.resourcegroup><machine profile vm.vm>" -CustomProperties $customProperties <!--NeedCopy-->
- 完成计算机目录的创建。
Azure 限制
Azure Resource Manager 限制订阅和租户的请求,从而根据定义的限制路由流量,根据提供商的特定需求量身定制。请参阅 Microsoft 站点上的限制 Resource Manager 请求,了解详细信息。订阅和租户存在限制,在这些情况下,管理许多计算机可能会成问题。例如,包含许多计算机的订阅可能会遇到与电源操作有关的性能问题。
提示:
有关详细信息,请参阅使用 Machine Creation Services 提高 Azure 性能。
为了帮助缓解这些问题,您可以删除 MCS 内部限制,以使用 Azure 中的更多可用请求配额。
我们建议在大型订阅(例如,包含 1,000 个 VM 的订阅)中打开或关闭 VM 的电源时采用以下最佳设置:
- 绝对同时操作:500
- 每分钟最大新操作数:2000
- 操作的最大并发数:500
默认情况下,MCS 最多支持 500 个并发操作。或者,您可以使用 Remote PowerShell SDK 设置最大并发操作数。
使用 PowerShell 属性 MaximumConcurrentProvisioningOperations
可指定并发 Azure 预配操作的最大数量。使用此属性时,请注意:
-
MaximumConcurrentProvisioningOperations
的默认值为 500。 - 使用 PowerShell 命令
Set-item
配置MaximumConcurrentProvisioningOperations
参数。
Azure 资源组
Azure 预配资源组提供了一种预配向用户提供应用程序和桌面的 VM 的方法。您可以创建 MCS 计算机目录时添加现有的空 Azure 资源组,也可以创建新资源组。有关 Azure 资源组的信息,请参阅 Microsoft 文档。
Azure 资源组使用情况
每个 Azure 资源组的虚拟机、托管磁盘、快照和映像数量都没有限制。(删除了每个 Azure 资源组每 800 个托管磁盘包含 240 个 VM 的限制。)
- 使用完整作用域服务主体创建计算机目录时,MCS 仅创建一个 Azure 资源组,并为目录使用该资源组。
- 使用窄作用域服务主体创建计算机目录时,必须为目录提供一个空的、预先创建的 Azure 资源组。
Azure 临时磁盘
Azure 临时磁盘允许您重新调整缓存磁盘或临时磁盘的用途,以便为启用了 Azure 的虚拟机存储操作系统磁盘。此功能对于需要的 SSD 磁盘的性能高于标准 HDD 磁盘的 Azure 环境非常有用。要使用临时磁盘,必须在运行 New-ProvScheme
时将自定义属性 UseEphemeralOsDisk
设置为 true。
注意:
如果自定义属性
UseEphemeralOsDisk
设置为 false 或未指定值,则所有预配的 VDA 将继续使用预配的操作系统磁盘。
下面是要在预配方案中使用的自定义属性的示例集:
"CustomProperties": [
{
"Name": "UseManagedDisks",
"Value": "true"
},
{
"Name": "StorageType",
"Value": "Standard_LRS"
},
{
"Name": "UseSharedImageGallery",
"Value": "true"
},
{
"Name": "SharedImageGalleryReplicaRatio",
"Value": "40"
},
{
"Name": "SharedImageGalleryReplicaMaximum",
"Value": "10"
},
{
"Name": "LicenseType",
"Value": "Windows_Server"
},
{
"Name": "UseEphemeralOsDisk",
"Value": "true"
}
],
<!--NeedCopy-->
如何使用临时操作系统磁盘创建计算机
临时操作系统磁盘根据 CustomProperties
参数中的 UseEphemeralOsDisk
属性进行控制。
临时磁盘的重要注意事项
要使用 New-ProvScheme
预配临时操作系统磁盘,请注意以下限制:
- 用于目录的 VM 大小必须支持临时操作系统磁盘。
- 与 VM 大小关联的缓存磁盘或临时磁盘的大小必须大于或等于操作系统磁盘的大小。
- 临时磁盘大小必须大于缓存磁盘大小。
还要注意以下情况下的问题:
- 创建预配方案。
- 修改预配方案。
- 更新映像。
Azure 临时磁盘和 Machine Creation Services (MCS) 存储优化 (MCS I/O)
无法同时启用 Azure 临时操作系统磁盘和 MCS I/O。
重要注意事项如下:
-
您无法创建同时启用了临时操作系统磁盘和 MCS I/O 的计算机目录。
- 如果在
New-ProvScheme
或Set-ProvScheme
中将 PowerShell 参数(UseWriteBackCache
和UseEphemeralOsDisk
)设置为 true,这些参数将失败并显示正确的错误消息。 - 对于在启用了这两种功能的情况下创建的现有计算机目录,您仍然可以:
- 更新计算机目录。
- 添加或删除 VM。
- 删除计算机目录。
Azure 服务器端加密
Citrix Virtual Apps and Desktops 和 Citrix DaaS 通过 Azure 密钥保管库支持 Azure 托管磁盘的客户托管加密密钥。通过此支持,您可以使用自己的加密密钥对计算机目录的托管磁盘进行加密,从而管理组织和合规性要求。有关详细信息,请参阅 Azure 磁盘存储的服务器端加密。
对托管磁盘使用此功能时:
-
要更改磁盘加密时使用的密钥,请更改
DiskEncryptionSet
中的当前密钥。与该DiskEncryptionSet
关联的所有资源都将更改为使用新密钥加密。 -
禁用或删除密钥时,任何具有使用该密钥的磁盘的 VM 都会自动关闭。关闭后,除非再次启用该密钥或分配新密钥,否则 VM 将无法使用。使用该密钥的任何目录都无法打开,也无法向其中添加 VM。
使用客户管理的加密密钥时的重要注意事项
使用此功能时请注意以下事项:
-
与客户管理的密钥(Azure 密钥保管库、磁盘加密集、VM、磁盘和快照)相关的所有资源都必须位于同一订阅和区域中。
-
启用客户管理的加密密钥后,以后无法将其禁用。如果要禁用或删除客户管理的加密密钥,请将所有数据复制到不使用客户管理的加密密钥的其他托管磁盘。
-
使用服务器端加密和客户托管的密钥从加密的自定义映像创建的磁盘必须使用相同的客户管理的密钥进行加密。这些磁盘必须位于同一个订阅中。
-
使用服务器端加密和客户管理的密钥加密的磁盘创建的快照必须使用相同的客户管理的密钥进行加密。
-
使用客户管理的密钥加密的磁盘、快照和映像无法移动到其他资源组和订阅。
-
当前或之前使用 Azure 磁盘加密进行加密的托管磁盘不能使用客户管理的密钥进行加密。
-
有关每个区域的磁盘加密集的限制,请参阅 Microsoft 站点。
注意:
有关配置 Azure 服务器端加密的信息,请参阅快速入门:使用 Azure 门户创建密钥保管库。
Azure 客户管理的加密密钥
创建计算机目录时,可以选择是否加密在目录中预配的计算机上的数据。通过使用客户管理的加密密钥的服务器端加密,您可以在托管磁盘级别管理加密,并保护目录中的计算机上的数据。磁盘加密集 (Disk Encryption Set, DES) 表示客户管理的密钥。要使用此功能,必须首先在 Azure 中创建 DES。DES 采用以下格式:
/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/Sample-RG/providers/Microsoft.Compute/diskEncryptionSets/SampleEncryptionSet
从列表中选择 DES。所选择的 DES 必须与您的资源位于相同的订阅和区域。如果使用 DES 加密了映像,请在创建计算机目录时使用相同的 DES。创建目录后无法更改 DES。
如果使用加密密钥创建目录,然后在 Azure 中禁用相应的 DES,则无法再打开目录中的计算机的电源或者向其中添加计算机。
Azure 专用主机
可以使用 MCS 在 Azure 专用主机上预配 VM。在 Azure 专用主机上预配 VM 之前:
- 创建主机组。
- 在该主机组中创建主机。
- 确保有足够的主机容量用于创建目录和虚拟机。
可以创建具有通过以下 PowerShell 脚本定义的主机租赁的计算机目录:
New-ProvScheme <otherParameters> -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="HostGroupId" Value="myResourceGroup/myHostGroup" />
...other Custom Properties...
</CustomProperties>
<!--NeedCopy-->
使用 MCS 在 Azure 专用主机上预配虚拟机时,请注意:
- 专用主机是目录属性,一旦创建了目录,则无法进行更改。Azure 当前不支持专用租赁。
- 使用
HostGroupId
参数时,需要在托管单元所在区域中预配置的 Azure 主机组。 - Azure 自动放置是必需的。此功能请求加载与主机组关联的订阅。有关详细信息,请参阅在 Azure 专用主机上设置 VM 规模 - 公共预览版。如果未启用自动放置,MCS 在目录创建过程中会引发错误。
Azure 共享映像库
将 Azure 共享映像库用作 Azure 中 MCS 预配的计算机的已发布映像存储库。可以在该库中存储已发布的映像,以加快操作系统磁盘的创建和水化速度,从而缩短非永久性 VM 的启动和应用程序启动时间。共享映像库包含以下三个元素:
- 库:映像存储在此位置。MCS 为每个计算机目录创建一个库。
- 库映像定义:此定义包括有关已发布的映像的信息(操作系统类型和状态、Azure 区域)。MCS 为目录创建的每个映像创建一个映像定义。
- 库映像版本: 共享映像库中的每个映像可以有多个版本,每个版本可以在不同的区域中有多个副本。每个副本都是已发布的映像的完整副本。
注意:
共享映像库功能仅与托管磁盘兼容。它不适用于旧版计算机目录。
有关详细信息,请参阅 Azure 共享映像库概述。
使用 Azure Compute Gallery 映像创建计算机目录
选择用于创建计算机目录的映像时,可以选择在 Azure Compute Gallery 中创建的映像。
要显示这些图片,您必须:
- 配置 Citrix Virtual Apps and Desktops 站点。
- 连接到 Azure Resource Manager。
- 在 Azure 门户中,创建资源组。有关详细信息,请参阅使用门户创建 Azure 共享映像库。
- 在资源组中,创建 Azure Compute Gallery。
- 在 Azure Compute Gallery 中,创建映像定义。
- 在映像定义中,创建映像版本。
使用以下 PowerShell 命令通过 Azure Compute Gallery 中的映像创建或更新计算机目录:
- 打开 PowerShell 窗口。
- 运行
asnp citrix*
以加载 Citrix 特定的 PowerShell 模块。 -
选择一个资源组,然后列出该资源组的所有库。
Get-ChildItem -LiteralPath @("XDHyp:\HostingUnits\testresource\image.folder\sharedImageGalleryTest.resourcegroup") <!--NeedCopy-->
-
选择一个库,然后列出该库的所有映像定义。
Get-ChildItem -LiteralPath @("XDHyp:\HostingUnits\testresource\image.folder\sharedImageGalleryTest.resourcegroup\sharedImageGallery.sharedimagegallery") <!--NeedCopy-->
-
选择一个映像定义,然后列出该映像定义的所有映像版本。
Get-ChildItem -LiteralPath @("XDHyp:\HostingUnits\testresource\image.folder\sharedImageGalleryTest.resourcegroup\sharedImageGallery.sharedimagegallery\sigtestimage.imagedefinition") <!--NeedCopy-->
- 使用以下元素创建和更新 MCS 目录:
- 资源组
- 库
- 库映像定义
- 库映像版本
有关如何使用 Remote PowerShell SDK 创建目录的信息,请参阅 https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/。
配置共享映像库
使用 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 台计算机将 创建 1 个副本,21—40 台将创建 2 个副本,41-60 台将创建 3 个副本,61—80 台将创建 4 个副本,81 台以上将创建 5 个副本。
用例:更新共享映像库副本比率和副本最大值
现有计算机目录使用共享映像库。使用 Set-ProvScheme
命令更新目录中的所有现有计算机以及将来任何计算机的自定义属性:
Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageType" Value="Standard_LRS"/> <Property xsi:type="StringProperty" Name="UseManagedDisks" Value="True"/> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="True"/> <Property xsi:type="IntProperty" Name="SharedImageGalleryReplicaRatio" Value="30"/> <Property xsi:type="IntProperty" Name="SharedImageGalleryReplicaMaximum" Value="20"/></CustomProperties>'
<!--NeedCopy-->
用例:将快照目录转换为共享映像库目录
对于此用例:
- 在
UseSharedImageGallery
标志设置为 True 的情况下运行Set-ProvScheme
。(可选)包括SharedImageGalleryReplicaRatio
和SharedImageGalleryReplicaMaximum
属性。 - 更新目录。
- 关闭并打开计算机电源以强制更新。
例如:
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-->
提示:
参数
SharedImageGalleryReplicaRatio
和SharedImageGalleryReplicaMaximum
不是必需的。Set-ProvScheme
命令完成后,尚未创建共享映像库映像。将目录配置为使用库后,下一个目录更新操作会将已发布的映像存储在库中。目录更新命令创建库、库映像和映像版本。关闭并打开计算机会对其进行更新,此时副本计数将在适当的情况下更新。自此以后,所有现有的非永久性计算机都将使用共享映像库映像重置,并使用该映像创建所有新预配的计算机。旧快照会在几个小时内自动清理。
用例:将共享映像库目录转换为快照目录
对于此用例:
- 在
UseSharedImageGallery
标志设置为 False 或未定义的情况下运行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="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
操作提供的区域自定义属性。区域属性定义了要在其中预配计算机的可用性区域列表。这些区域可以包括一个或多个可用性区域。例如,<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。
注意:
要使用此功能,还必须启用参数
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>'
<!--NeedCopy-->
存储临时操作系统临时磁盘
您可以选择将临时操作系统磁盘存储在 VM 临时磁盘或资源磁盘上。通过此功能,您可以将临时操作系统磁盘用于没有缓存或缓存不足的 VM。此类 VM 具有用于存储临时操作系统磁盘的临时磁盘或资源磁盘,例如 Ddv4
。
请注意以下事项:
- 临时磁盘存储在 VM 缓存磁盘或 VM 的临时(资源)磁盘中。除非缓存磁盘的大小不足以容纳操作系统磁盘的内容,否则缓存磁盘优先于临时磁盘。
- 对于更新,如果新映像大于缓存磁盘但小于临时磁盘,则会导致将临时操作系统磁盘替换为 VM 的临时磁盘。
重启电源时保留已置备的虚拟机
选择在重启电源时是否保留预配的虚拟机。使用 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>
<!--NeedCopy-->
在以下示例中,New-ProvScheme CustomProperties
参数通过将 PersistVM
设置为 true 来保留回写式缓存:
New-ProvScheme
-AzureAdJoinType "None"
-CleanOnBoot
-CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"UseManagedDisks`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"StorageType`" Value=`"Standard_LRS`" /><Property xsi:type=`"StringProperty`" Name=`"PersistWBC`" Value=`"false`" /><Property xsi:type=`"StringProperty`" Name=`"PersistOsDisk`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"PersistVm`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"ResourceGroups`" Value=`"demo-resourcegroup`" /><Property xsi:type=`"StringProperty`" Name=`"LicenseType`" Value=`"Windows_Client`" /></CustomProperties>"
-HostingUnitName "demo"
-IdentityPoolName "NonPersistent-MCSIO-PersistVM"
-MasterImageVM "XDHyp:\HostingUnits\demo\image.folder\scale-test.resourcegroup\demo-snapshot.snapshot"
-NetworkMapping @ {"0"="XDHyp:\HostingUnits\demo\virtualprivatecloud.folder\East US.region\virtualprivatecloud.folder\ji-test.resourcegroup\jitest-vnet.virtualprivatecloud\default.network"}
-ProvisioningSchemeName "NonPersistent-MCSIO-PersistVM"
-ServiceOffering "XDHyp:\HostingUnits\demo\serviceoffering.folder\Standard_B2ms.serviceoffering" -UseWriteBackCache
-WriteBackCacheDiskSize 127
-WriteBackCacheMemorySize 256
<!--NeedCopy-->
提示:
PersistVm
属性决定是否保留预配的虚拟机。PersistOsdisk
属性决定是否保留操作系统磁盘。要保留预配的虚拟机,请先保留操作系统磁盘。请勿在未先删除虚拟机的情况下删除操作系统磁盘。可以在不使用指定PersistVm
参数的情况下使用PersistOsdisk
属性。
存储类型
为 Azure 环境中使用 MCS 的虚拟机选择不同的存储类型。对于目标 VM,MCS 支持:
- 操作系统磁盘:高级 SSD、SSD 或 HDD
- 回写式缓存磁盘:高级 SSD、SSD 或 HDD
使用这些存储类型时,请注意以下事项:
- 确保您的 VM 支持选定的存储类型。
- 如果您的配置使用 Azure 临时磁盘,则无法获得回写式缓存磁盘设置的选项。
提示:
StorageType
已针对操作系统类型和存储帐户进行了配置。WBCDiskStorageType
已针对写回式缓存存储类型进行了配置。对于常见目录,StorageType
是必需的。如果未配置WBCDiskStorageType
,则会将StorageType
用作WBCDiskStorageType
的默认值。
如果未配置 WBCDiskStorageType,则会将 StorageType 用作 WBCDiskStorageType 的默认值
配置存储类型
要配置 VM 的存储类型,请使用 New-ProvScheme
中的 StorageType
参数。将 StorageType
参数的值设置为受支持的存储类型之一。
下面是预配方案中的一组示例 CustomProperties
参数:
Set-ProvScheme -ProvisioningSchemeName catalog-name -CustomProperties '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="UseManagedDisks" Value="true" />
<Property xsi:type="StringProperty" Name="StorageType" Value="Premium_LRS" />
<Property xsi:type="StringProperty" Name="LicenseType" Value="Windows_Client" />
</CustomProperties>'
<!--NeedCopy-->
关闭 VM 时将存储类型更改为较低的层
关闭 VM 时,您可以通过将托管磁盘的存储类型切换到较低的层来节省存储成本。为此,请使用 StorageTypeAtShutdown
自定义属性。
关闭 VM 时,磁盘的存储类型更改为较低层(如 StorageTypeAtShutdown
自定义属性中所指定)。打开 VM 的电源后,存储类型将更改回原始类型(如 StorageType
自定义属性或 WBCDiskStorageType
自定义属性中所指定)。
重要:
在 VM 至少打开电源一次之前,磁盘不存在。因此,您无法在首次打开 VM 电源时更改存储类型。
要求
- 适用于托管磁盘。这意味着您将自定义属性
UseManagedDisks
设置为 true。 - 适用于具有永久操作系统磁盘的永久和非永久目录。这意味着您将自定义属性
persistOsDisk
设置为 true。 - 适用于具有永久 WBC 磁盘的非永久目录。这意味着您将自定义属性
persistWBC
设置为 true。
限制
- 根据 Microsoft 的说法,您每天只能更改两次磁盘类型。请参阅 Microsoft 文档。根据 Citrix 的说法,每当 VM 执行“启动”或“取消分配”操作时,就会进行
StorageType
更新。因此,请将每个 VM 的电源操作次数限制为每天两次。例如,早上执行一次电源操作以启动 VM,晚上执行一次电源操作以取消分配 VM。
将存储类型更改为较低的层
-
添加自定义属性
StorageTypeAtShutdown
,将值设置为 Standard_LRS (HDD),然后使用New-ProvScheme
创建目录。有关使用 PowerShell 创建目录的信息,请参阅 https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/。注意:
如果
StorageTypeAtShutdown
除空值或 Standard_LRS (HDD) 之外还有其他任何值,操作将失败。创建永久目录时设置自定义属性的示例:
$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="ResourceGroups" Value="" /> <Property xsi:type="StringProperty" Name="LicenseType" Value="Windows_Client" /> <Property xsi:type="StringProperty" Name="SchemaVersion" Value="2" /> <Property xsi:type="StringProperty" Name="OsType" Value="Windows" /> <Property xsi:type="StringProperty" Name="StorageTypeAtShutdown" Value="Standard_LRS" /> </CustomProperties>' <!--NeedCopy-->
创建非永久目录时设置自定义属性的示例:
$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="WbcDiskStorageType" Value="Standard_SSD_LRS" /> <Property xsi:type="StringProperty" Name="ResourceGroups" Value="" /> <Property xsi:type="StringProperty" Name="LicenseType" Value="Windows_Client" /> <Property xsi:type="StringProperty" Name="SchemaVersion" Value="2" /> <Property xsi:type="StringProperty" Name="OsType" Value="Windows" /> <Property xsi:type="BooleanProperty" Name="persistWBC" Value=true /> <Property xsi:type="BooleanProperty" Name="persistOsDisk" Value=true /> <Property xsi:type="StringProperty" Name="StorageTypeAtShutdown" Value="Standard_LRS" /> </CustomProperties>' <!--NeedCopy-->
注意:
使用计算机配置文件时,自定义属性优先于在
MachineProfile
中定义的属性。 - 关闭 VM 并在 Azure 门户中检查 VM 的存储类型。磁盘的存储类型更改为较低的层,如
StorageTypeAtShutdown
自定义属性中所指定。 - 打开 VM。磁盘的存储类型切换回下面提及的存储类型:
- 操作系统磁盘的
StorageType
自定义属性 - 仅当您在
CustomProperties
中指定了 WBC 磁盘的WBCDiskStorageType
自定义属性时。否则,它会切换回StorageType
中提到的存储类型。
- 操作系统磁盘的
将 StorageTypeAtShutdown
应用到现有目录
使用 Set-ProvScheme
向现有目录中添加 VM。该功能适用于运行 Set-ProvScheme
后添加的新 VM。现有计算机不受影响。
将 VM 添加到现有目录时设置自定义属性的示例:
$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="WbcDiskStorageType" Value="Standard_SSD_LRS" />
<Property xsi:type="StringProperty" Name="ResourceGroups" Value="" />
<Property xsi:type="StringProperty" Name="LicenseType" Value="Windows_Client" />
<Property xsi:type="StringProperty" Name="SchemaVersion" Value="2" />
<Property xsi:type="StringProperty" Name="OsType" Value="Windows" />
<Property xsi:type="BooleanProperty" Name="persistWBC" Value=true />
<Property xsi:type="BooleanProperty" Name="persistOsDisk" Value=true />
<Property xsi:type="StringProperty" Name="StorageTypeAtShutdown" Value="Standard_LRS" />
</CustomProperties>'
$ProvScheme = Get-Provscheme -ProvisioningSchemeName $CatalogName
Set-ProvScheme -ProvisioningSchemeName $ProvScheme.ProvisioningSchemeName -CustomProperties $customProperties
<!--NeedCopy-->
关闭时将现有 VM 的存储类型更改为较低的层级
当 VM 关闭时,您可以通过将现有 VM 的存储类型更改为较低的层级来节省存储成本。为此,请使用 StorageTypeAtShutdown
自定义属性。
要在 VM 关闭时将目录中的现有计算机的存储类型更改为较低的层级,请执行以下操作:
- 打开 PowerShell 窗口。
- 运行
asnp citrix*
以加载 Citrix 特定的 PowerShell 模块。 - 运行
Get-Provscheme -ProvisioningSchemeName $CatalogName
。 -
更改自定义属性字符串。
$customProperties = '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="StorageTypeAtShutdown" Value="Standard_LRS" /> </CustomProperties>' <!--NeedCopy-->
-
更新现有目录的预配方案。该更新适用于运行
Set-ProvScheme
后添加的新 VM。Set-ProvScheme -ProvisioningSchemeName $CatalogName -CustomProperties $customProperties <!--NeedCopy-->
-
更新现有 VM 以启用
StorageTypeAtShutdown
。Request-ProvVMUpdate -ProvisioningSchemeName $CatalogName <!--NeedCopy-->
- 下次打开计算机电源时,计算机的
StorageTypeAtShutdown
属性会更新。存储类型在下次关闭时发生变化。 -
运行以下命令可查看目录中每个 VM 的
StorageTypeAtShutdown
值:Get-ProvVM -ProvisioningSchemeName <catalog-name> | foreach { $vmName = $_.VMName; $storageTypeAtShutdown = ($_.CustomVmData | ConvertFrom-Json).StorageTypeAtShutdown.DiskStorageAccountType; return New-Object psobject -Property @{ "VMName" = $vmName; "StorageTypeAtShutdown" = $storageTypeAtShutdown } } <!--NeedCopy-->
自定义存储类型更改失败时的打开电源行为
开机时,由于 Azure 出现故障,托管磁盘的存储类型可能无法更改为所需类型。在这些情况下,VM 将保持关闭状态并向您发送故障消息。但是,您可以选择在存储无法还原到其配置的类型时打开 VM 的电源,也可以选择保持 VM 处于关闭状态。
-
如果您将自定义属性
FailSafeStorageType
配置为 true(默认设置)或者未在New-ProvScheme
或Set-ProvScheme
命令中指定该属性:- 开机时,VM 开机,但存储类型不正确。
- 关闭时,VM 保持关闭状态,存储类型不正确。
-
如果您在
New-ProvScheme
或Set-ProvScheme
命令中将自定义属性FailSafeStorageType
配置为 false:- 开机后,VM 保持关闭状态,存储类型不正确。
- 关闭时,VM 保持关闭状态,存储类型不正确。
要创建计算机目录,请执行以下操作:
- 打开 PowerShell 窗口。
- 运行
asnp citrix*
以加载 Citrix 特定的 PowerShell 模块。 - 创建标识池(如果尚未创建)。
-
在
New-ProvScheme
中添加自定义属性。例如:New-ProvScheme -HostingUnitName "Azure-Resources-1" -IdentityPoolName "name" -InitialBatchSizeHint 1 -MasterImageVM "XDHyp:\HostingUnits\Azure-Resources-1\image.folder\abc.resourcegroup\def.snapshot" -NetworkMapping @{"0"="XDHyp:\HostingUnits\Azure-Resources-1\ght.folder\abc.resourcegroup\abc-vnet.virtualprivatecloud\default.network"} -ProvisioningSchemeName "name" -ServiceOffering "XDHyp:\HostingUnits\Azure-Resources-1\serviceoffering.folder\Standard_DS2_v2.serviceoffering" -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=`"Premium_LRS`" /> <Property xsi:type=`"StringProperty`" Name=`"StorageTypeAtShutdown`" Value=`"Standard_LRS`" /> <Property xsi:type=`"StringProperty`" Name=`"FailSafeStorageType`" Value=`"true`" /> </CustomProperties>" <!--NeedCopy-->
- 然后,创建计算机目录。有关如何使用 Remote PowerShell SDK 创建目录的信息,请参阅 https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/。
更新现有计算机目录以包含自定义属性 FailSafeStorageType
。此更新不影响现有 VM。
- 更新
Set-ProvScheme
命令中的自定义属性。例如:
Set-ProvScheme -ProvisioningSchemeName <String> -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=`"Premium_LRS`" />
<Property xsi:type=`"StringProperty`" Name=`"IdentityDiskStorageType`" Value=`"Premium_LRS`" />
<Property xsi:type=`"StringProperty`" Name=`"FailSafeStorageType`" Value=`"false`" />
</CustomProperties>"
<!--NeedCopy-->
要将在 Set-ProvScheme 中所做的更改应用到现有 VM,请运行 Request-ProvVMUpdate
命令。
-
运行 Request-ProvVMUpdate 命令。例如:
Request-ProvVMUpdate -ProvisioningSchemeName <String> -VMName <List-Of-Vm-Names> <!--NeedCopy-->
-
重新启动 VM。
将预配的计算机更新为当前预配方案状态
Set-ProvScheme
命令更改了预配方案。但是,它不会影响现有计算机。可以使用 PowerShell 命令 Request-ProvVMUpdate
将当前的预配方案应用到现有的永久计算机或非永久计算机或者一组计算机。目前,在 Azure 中,您可以更新 ServiceOffering
、 MachineProfile
以及以下自定义属性:
StorageType
WBCDiskStorageType
IdentityDiskStorageType
LicenseType
DedicatedHostGroupId
PersistWBC
PersistOsDisk
PersistVm
注意:
在 Azure 环境中,只能使用托管磁盘更新目录的
StorageType
、WBCDiskStorageType
和IdentityDiskStorageType
自定义属性。 可以更新以下对象:
- 单个 VM
- 与预配方案 ID 关联的特定 VM 或所有现有 VM 的列表
- 与预配方案名称(计算机目录名称)关联的特定 VM 或所有现有 VM 的列表
对预配方案做以下更改后,将在 Azure 中为永久目录重新创建 VM 实例:
- 更改
MachineProfile
- 删除
LicenseType
- 删除
DedicatedHostGroupId
注意:
现有计算机的操作系统磁盘及其所有数据保持原样,新的 VM 已连接到该磁盘。 要更新现有 VM,请执行以下操作:
-
检查现有计算机的配置。例如,
Get-ProvScheme | select ProvisioningSchemeName, ProvisioningSchemeVersion <!--NeedCopy-->
-
更新预配方案。例如,
-
使用 VM 作为计算机配置文件输入:
Set-ProvScheme -ProvisioningSchemeName "my-catalog" -MachineProfile "XDHyp:\HostingUnits<hosting-unit>\machineprofile.folder<resource-group>.resourcegroup<virtual-machine>.vm" <!--NeedCopy-->
-
使用模板规范作为计算机配置文件输入:
Set-ProvScheme -ProvisioningSchemeName "my-catalog" -MachineProfile "XDHyp:\HostingUnits<hosting-unit>\machineprofile.folder<resource-group>.resourcegroup<template-spec>.templatespec<template-spec-version>.templatespecversion" -ServiceOffering "XDHyp:\HostingUnits<hosting-unit>\serviceoffering.folder<service-offering>.serviceoffering" <!--NeedCopy-->
-
仅提供服务:
Set-ProvScheme -ProvisioningSchemeName "my-catalog" -ServiceOffering "XDHyp:\HostingUnits<hosting-unit>\serviceoffering.folder<service-offering>.serviceoffering" <!--NeedCopy-->
-
-
检查 VM 的当前属性是否与当前的预配方案相匹配,以及 VM 上是否有任何待处理的更新操作。例如,
Get-ProvVM | select VMName, ProvisioningSchemeUpdateRequested, ProvisioningSchemeVersion <!--NeedCopy-->
还可以查找具有特定版本的计算机。例如,
Get-ProvVM -Filter "ProvisioningSchemeVersion -eq 1" | select VMName, ProvisioningSchemeVersion <!--NeedCopy-->
-
更新现有计算机。
-
更新所有现有计算机。例如,
Request-ProvVMUpdate –ProvisioningSchemeName "my-catalog" <!--NeedCopy-->
-
更新特定计算机的列表。例如,
Request-ProvVMUpdate -ProvisioningSchemeName "my-catalog" -VMName "vm1","vm2" <!--NeedCopy-->
-
根据 Get-ProvVM 的输出更新计算机。例如,
Get-ProvVM -ProvisioningSchemeName "my-catalog" | Request-ProvVMUpdate <!--NeedCopy-->
-
-
查找已安排更新的计算机。例如,
Get-ProvVM -Filter "ProvisioningSchemeUpdateAfter" | select VMName, ProvisioningSchemeUpdateAfter <!--NeedCopy-->
-
请重新启动计算机。下次启动时,属性更改将应用到现有计算机。可以使用以下命令检查更新后的状态。例如,
Get-ProvVM | select VMName, ProvisioningSchemeUpdateRequested, ProvisioningSchemeVersion <!--NeedCopy-->
安排配置更新
可以使用 PowerShell 命令 Schedule-ProvVMUpdate
为 MCS 预配的现有计算机的配置更新安排时段。在安排的时段内打开电源或重新启动都会对计算机应用安排的预配方案更新。
如果您同时运行 Request-ProvVMUpdate
和 Schedule-ProvVMUpdate
命令,最新的命令将生效。
注意:
Schedule-ProvVMUpdate
具有Request-ProvVMUpdate
的所有功能以及更多功能。最终,Schedule-ProvVMUpdate
将取代Request-ProvVMUpdate
。
也可以使用 Cancel-ProvVMUpdate
在计划的时间之前取消配置更新。
可以安排以下对象的配置更新:
- 单个 VM
- 与预配方案 ID 或预配方案名称关联的多个 VM
- 与预配方案 ID 或预配方案名称关联的整个目录
要安排配置更新,请执行以下操作:
- 使用完整配置界面或 PowerShell 创建目录。
- 打开 PowerShell 窗口。
- 运行
asnp citrix*
以加载 Citrix 特定的 PowerShell 模块。 -
检查现有计算机的配置。例如,
Get-ProvScheme | select ProvisioningSchemeName, ProvisioningSchemeVersion <!--NeedCopy-->
-
更新预配方案以更新自定义属性、计算机配置文件或服务产品。例如,
Set-ProvScheme –ProvisioningSchemeName "my-catalog" – MachineProfile"XDHyp:\HostingUnits<hosting-unit>\machineprofileinstance.vm" <!--NeedCopy-->
-
检查:
- VM 的当前属性是否与当前的预配方案相匹配,以及
- VM 上是否存在任何待处理的更新操作。
例如,
Get-ProvVM | select VMName, ProvisioningSchemeUpdateRequested, ProvisioningSchemeUpdateUntil, ProvisioningSchemeVersion <!--NeedCopy-->
-
运行
Schedule-ProvVMUpdate
可安排 VM 下次在计划的时间范围内启动时更新到最新的预配设置。例如,-
使用开始时间为当前时间来安排更新
Schedule-ProvVMUpdate -ProvisioningSchemeName " my-catalog " -VMName "vm1" -StartsNow -DurationInMinutes 120 <!--NeedCopy-->
-
安排在周末更新
Schedule-ProvVMUpdate -ProvisioningSchemeName " my-catalog " -VMName "vm1" -StartTimeInUTC "10/15/2022 9:00am" -DurationInMinutes (New –TimeSpan –Days 2).TotalMinutes <!--NeedCopy-->
注意:
-
VMName
是可选的。如果未指定,则安排对整个目录进行更新。 - 使用
StartsNow
代替StartTimeInUTC
来表示计划开始时间为当前时间。 -
DurationInMinutes
是可选的。默认值为 120 分钟。负数(例如 —1)表示计划的时间范围没有上限。
-
-
检查更新状态。
Get-ProvVM | select VMName, ProvisioningSchemeUpdateRequested, ProvisioningSchemeUpdateUntil, ProvisioningSchemeVersion <!--NeedCopy-->
-
打开 VM 的电源。如果您在安排的时段之后打开计算机电源,则不会应用配置更新。如果您在安排的时段内打开计算机电源,
-
如果计算机已关闭电源,并且
- 您未打开计算机电源,未应用配置更新
- 您打开了计算机电源,应用了配置更新
-
如果计算机已打开电源,并且
- 您未重新启动计算机,未应用配置更新
- 您重新启动了计算机,应用了配置更新
-
也可以取消单个 VM、多个 VM 或整个目录的配置更新。要取消配置更新,请执行以下操作:
-
运行
Cancel-ProvVMUpdate
。例如,-
要取消为单个 VM 安排的配置更新,请执行以下操作:
Cancel-ProvVMUpdate -ProvisioningSchemeName " my-catalog " -VMName "vm1" <!--NeedCopy-->
-
取消为多个 VM 安排的配置更新。
Cancel-ProvVMUpdate -ProvisioningSchemeName "my-catalog" -VMName "vm1","vm2" <!--NeedCopy-->
注意:
VM 必须来自同一个目录。
-
检索 Azure VM、快照、操作系统磁盘和库映像定义的信息
可以显示 Azure VM 的信息,包括操作系统磁盘和类型、快照和库映像定义。分配计算机目录时,将为主映像上的资源显示此信息。使用此功能可以查看和选择 Linux 或 Windows 映像。PowerShell 属性 TemplateIsWindowsTemplate
已添加到 AdditionDatafield
参数中。此字段包含 Azure 特定的信息:VM 类型、操作系统磁盘、库映像信息和操作系统类型信息。将 TemplateIsWindowsTemplate
设置为 True 表示操作系统类型为 Windows;将 TemplateIsWindowsTemplate
设置为 False 表示操作系统类型为 Linux。
提示:
TemplateIsWindowsTemplate
PowerShell 属性显示的信息来自 Azure API。在某些情况下,此字段可能为空。例如,数据磁盘中的快照不包含TemplateIsWindowsTemplate
字段,因为无法从快照中检索操作系统类型。
例如,使用 PowerShell 将 Windows 操作系统类型的 Azure VM AdditionData
参数设置为 True:
PS C:\Users\username> (get-item XDHyp:\HostingUnits\mynetwork\image.folder\username-dev-testing-rg.resourcegroup\username-dev-tsvda.vm).AdditionalData
Key Value
ServiceOfferingDescription Standard_B2ms
HardDiskSizeGB 127
ResourceGroupName FENGHUAJ-DEV-TESTING-RG
ServiceOfferingMemory 8192
ServiceOfferingCores 2
TemplateIsWindowsTemplate True
ServiceOfferingWithTemporaryDiskSizeInMb 16384
SupportedMachineGenerations Gen1,Gen2
<!--NeedCopy-->
支持受信任启动的计算机目录
要使用受信任启动成功创建计算机目录,请使用:
- 具有受信任启动功能的计算机配置文件
- 支持受信任启动的 VM 大小
- 支持受信任启动的 Windows VM 版本。目前,Windows 10、Windows Server 2016、2019 和 2022 支持受信任启动。
重要:
受信任启动需要创建新 VM。您无法在最初没有受信任启动的现有 VM 上启用受信任启动。
要查看 Citrix DaaS 产品清单项目,并确定 VM 大小是否支持受信任启动,请运行以下命令:
- 打开 PowerShell 窗口。
- 运行 asnp citrix* 以加载特定于 Citrix 的 PowerShell 模块。
-
运行以下命令:
$s = (ls XDHyp:\HostingUnits<name of hosting unit>\serviceoffering.folder"<VM size>.serviceoffering) <!--NeedCopy-->
- 运行
$s | select -ExpandProperty Additionaldata
-
检查
SupportsTrustedLaunch
属性的值。- 如果
SupportsTrustedLaunch
设置为 True,则 VM 大小支持受信任启动。 - 如果
SupportsTrustedLaunch
设置为 False,则 VM 大小不支持受信任启动。
- 如果
根据 Azure 的 PowerShell,您可以使用以下命令来确定支持受信任启动的 VM 大小:
(Get-AzComputeResourceSku | where {$_.Locations.Contains($region) -and ($_.Name -eq "<VM size>") })[0].Capabilities
<!--NeedCopy-->
以下示例描述了运行 Azure PowerShell 命令后 VM 大小是否支持受信任启动。
-
示例 1:如果 Azure VM 仅支持第 1 代,则该 VM 不支持受信任启动。因此,运行 Azure PowerShell 命令后不会显示
TrustedLaunchDisabled
功能。 -
示例 2:如果 Azure VM 仅支持第 2 代,并且
TrustedLaunchDisabled
功能设置为 True,则受信任启动不支持第 2 代 VM 大小。 -
示例 3:如果 Azure VM 仅支持第 2 代,并且在运行 PowerShell 命令后未显示
TrustedLaunchDisabled
功能,则受信任启动时支持第 2 代 VM 大小。
有关 Azure 虚拟机受信任启动的详细信息,请参阅 Microsoft 文档 Trusted launch for Azure virtual machines(Azure 虚拟机的受信、任启动)。
使用受信任启动创建计算机目录时出错
在以下情况下使用受信任启动创建计算机目录时,您会遇到相应的错误:
场景 | 错误 |
---|---|
如果您在创建非托管目录时选择了计算机配置文件 | MachineProfileNotSupportedForUnmanagedCatalog |
如果您在创建以非托管磁盘作为主映像的目录时选择支持受信任启动的计算机配置文件 | SecurityTypeNotSupportedForUnmanagedDisk |
如果您在使用以受信任启动作为安全类型的主映像源创建托管目录时未选择计算机配置文件 | MachineProfileNotFoundForTrustedLaunchMasterImage |
如果您选择安全类型与主映像的安全类型不同的计算机配置文件 | SecurityTypeConflictBetweenMasterImageAndMachineProfile |
如果您选择的 VM 大小不支持受信任启动,但在创建目录时使用支持受信任启动的主映像 | MachineSizeNotSupportTrustedLaunch |
Azure 应用商店
Citrix Virtual Apps and Desktops 和 Citrix DaaS 支持在 Azure 上使用包含计划信息的主映像来创建计算机目录。有关详细信息,请参阅 Microsoft Azure 应用商店。
提示:
在 Azure 应用商店中找到的某些映像(例如标准 Windows Server 映像)不会附加计划信息。Citrix DaaS 功能适用于付费映像。
请确保在共享映像库中创建的映像包含 Azure 计划信息
请使用本部分中的过程在 Web Studio 中查看共享映像库映像。这些映像可以选择用于主映像。要将映像放入共享映像库,请在库中创建映像定义。
在发布选项页面中,验证购买计划信息。
购买计划信息字段最初为空。请使用用于映像的购买计划信息填充这些字段。未能填充购买计划信息会导致计算机目录进程失败。
确认购买计划信息后,在定义中创建一个映像版本。这用作主映像。单击添加版本:
在版本详细信息部分中,选择映像快照或托管磁盘作为源:
关于 Azure 权限
本部分包含 Azure 所需的最低权限和一般权限。
最低权限
最低权限可提供更好的安全控制。但是,由于仅使用最低权限,因此,需要额外的权限的新功能将失败。
创建主机连接
使用从 Azure 获取的信息添加新的主机连接。
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/disks/read",
<!--NeedCopy-->
VM 的电源管理
打开或关闭计算机实例的电源。
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
<!--NeedCopy-->
创建、更新或删除 VM
创建计算机目录,然后添加、删除、更新计算机和删除计算机目录。
下面是主映像为托管磁盘或快照与托管连接位于同一区域时所需的最低权限列表。
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
<!--NeedCopy-->
您需要根据以下功能的最低权限获得下列额外的权限:
-
如果主映像是与托管连接位于同一区域的存储帐户中的 VHD:
"Microsoft.Storage/storageAccounts/read", "Microsoft.Storage/storageAccounts/listKeys/action", <!--NeedCopy-->
-
如果主映像是共享映像库中的映像版本:
"Microsoft.Compute/galleries/read", "Microsoft.Compute/galleries/images/read", "Microsoft.Compute/galleries/images/versions/read", <!--NeedCopy-->
-
如果主映像是托管磁盘。快照或 VHD 与托管连接位于不同的区域中:
"Microsoft.Storage/storageAccounts/read", "Microsoft.Storage/storageAccounts/listKeys/action", "Microsoft.Storage/storageAccounts/write", "Microsoft.Storage/storageAccounts/delete", <!--NeedCopy-->
-
如果您使用 Citrix 管理的资源组:
"Microsoft.Resources/subscriptions/resourceGroups/write", "Microsoft.Resources/subscriptions/resourceGroups/delete", <!--NeedCopy-->
-
如果将主映像放置在共享映像库中:
"Microsoft.Compute/galleries/write", "Microsoft.Compute/galleries/images/write", "Microsoft.Compute/galleries/images/versions/write", "Microsoft.Compute/galleries/read", "Microsoft.Compute/galleries/images/read", "Microsoft.Compute/galleries/images/versions/read", "Microsoft.Compute/galleries/delete", "Microsoft.Compute/galleries/images/delete", "Microsoft.Compute/galleries/images/versions/delete", <!--NeedCopy-->
-
如果您使用 Azure 专用主机支持:
"Microsoft.Compute/hostGroups/read", "Microsoft.Compute/hostGroups/write", "Microsoft.Compute/hostGroups/hosts/read", <!--NeedCopy-->
-
如果您将服务器端加密 (SSE) 与客户托管密钥 (CMK) 结合使用:
"Microsoft.Compute/diskEncryptionSets/read", <!--NeedCopy-->
-
如果您使用 ARM 模板(计算机配置文件)部署 VM:
"Microsoft.Resources/deployments/write", "Microsoft.Resources/deployments/operationstatuses/read", "Microsoft.Resources/deployments/read", "Microsoft.Resources/deployments/delete", <!--NeedCopy-->
-
如果使用 Azure 模板规范作为计算机配置文件:
"Microsoft.Resources/templateSpecs/read", "Microsoft.Resources/templateSpecs/versions/read", <!--NeedCopy-->
创建、更新和删除包含非托管磁盘的计算机
下面是主映像为 VHD 并使用管理员提供的资源组时所需的最低权限列表:
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action"
<!--NeedCopy-->
一般权限
贡献者角色拥有管理所有资源的完全访问权限。这组权限不会阻止您获取新功能。
以下权限集提供了将来的最佳兼容性,尽管它包含的权限超过了当前功能集所需的权限亦如此:
"Microsoft.Compute/diskEncryptionSets/read",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/galleries/delete",
"Microsoft.Compute/galleries/images/delete",
"Microsoft.Compute/galleries/images/read",
"Microsoft.Compute/galleries/images/versions/delete",
"Microsoft.Compute/galleries/images/versions/read",
"Microsoft.Compute/galleries/images/versions/write",
"Microsoft.Compute/galleries/images/write",
"Microsoft.Compute/galleries/read",
"Microsoft.Compute/galleries/write",
"Microsoft.Compute/hostGroups/hosts/read",
"Microsoft.Compute/hostGroups/read",
"Microsoft.Compute/hostGroups/write",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Resources/deployments/operationstatuses/read",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/deployments/write",
"Microsoft.Resources/deployments/delete",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Resources/templateSpecs/read",
"Microsoft.Resources/templateSpecs/versions/read",
<!--NeedCopy-->
更多信息
- 连接和资源
- 创建计算机目录
- CTX219211:设置 Microsoft Azure Active Directory 帐户
- CTX219243: 对 Azure 订阅授予 XenApp 和 XenDesktop 访问权限
- CTX219271: 使用站点到站点 VPN 部署混合云