Citrix DaaS™

权限、建议和通知

动态预配计算机

Autoscale™ 提供了动态创建和删除计算机的功能。您可以通过使用 PowerShell 脚本来利用此功能。该脚本可帮助您根据当前负载情况动态地扩展或缩减交付组中的计算机数量。

  • 该脚本提供以下优势(以及更多):

  • 降低存储成本。与 Autoscale 有所不同,Autoscale 有助于降低您的计算成本,而此脚本提供了一种更具成本效益的解决方案来预配计算机。

  • 有效处理负载变化。该脚本可帮助您根据当前交付组负载自动扩展或缩减计算机数量,从而处理负载变化。

下载脚本

PowerShell 脚本可在 https://github.com/citrix/Powershell-Scripts/tree/master/XAXD/AutoscaleMcs 获取。

  • 脚本的工作原理

重要提示:

  • 您不能在多个交付组中指定由脚本管理的计算机目录。换句话说,如果多个交付组共享同一个计算机目录,则脚本不适用于任何这些交付组。
  • 您不能从多个位置同时为同一个交付组运行脚本。

该脚本在交付组级别运行。它测量负载(根据负载指数),然后确定是创建还是删除计算机。

通过此脚本创建的计算机都带有唯一的标记(通过 ScriptTag 参数),以便以后可以识别它们。创建或删除计算机基于:

  • 交付组的最大负载百分比。指定为 Autoscale 创建计算机以处理额外负载的最大级别。当超过此阈值时,将批量创建计算机,以确保当前负载降低到或低于该阈值。

  • 交付组的最小负载百分比。指定删除通过此脚本创建的且没有活动会话的计算机的最小级别。当超过此阈值时,将删除通过此脚本创建的且没有活动会话的计算机。

此脚本旨在监视整个交付组,并在满足触发条件时创建或删除计算机。它按每次运行执行。这意味着您需要定期运行脚本,以便其按预期运行。我们建议您以至少五分钟的间隔运行脚本。这样做可以提高整体响应能力。

该脚本依赖于以下参数才能工作:

  • 参数 类型 默认值 说明

|——————–|———————————————-|–|–|

  • DeliveryGroupName String X 要监视以确定当前负载的交付组的名称。您可以提供以分号分隔的名称列表。例如:Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName 'dg1;dg2;dg3' -XdProfileName profile
XdProfileName String X 用于向远程服务器进行身份验证的配置文件的名称。有关使用此参数向远程服务器进行身份验证的详细信息,请参阅身份验证 API
  • HighWatermark Integer 80 为 Autoscale 创建计算机以处理额外负载的最大负载百分比(根据负载指数)。
LowWatermark Integer 15 删除通过此脚本创建的且没有活动会话的计算机的最小负载百分比(根据负载指数)。
MachineCatalogName String X 要在其中创建计算机的计算机目录的名称。
  • MaximumCreatedMachines Integer -1 可以在指定交付组中创建的最大计算机数量。如果该值等于或小于 0,则脚本不处理此参数。
    • ScriptTag String AutoscaledScripted 适用于通过脚本创建的计算机的标记。
    • EventLogSource String X 显示在 Windows 事件查看器中的源名称。

    注意:

    “X”表示未为此参数指定默认值。

默认情况下,脚本在首次运行时需要所有参数(ScriptTag 参数除外)。在后续运行中,仅需要 DeliveryGroupNameXdProfileName 参数。您可以选择更新最小和最大负载百分比。

  • 请注意,首次运行脚本时,必须指定单个交付组。例如,如果您在首次运行脚本时使用以下 PowerShell 命令指定两个交付组,则脚本起作用:

  • Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName 'dg1;dg2' -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName 'cat1'\

  • 相反,请首先使用以下命令指定单个交付组(在此示例中为 dg1):

  • Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName 'dg1' -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName 'cat1'\

  • 然后,使用以下命令为第二个交付组(在此示例中为 dg 2)运行脚本:

  • Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName 'dg1;dg2' -XdProfileName profile

先决条件

要运行脚本,请确保满足以下先决条件:

  • 计算机位于正在创建计算机的同一域中。
  • 该计算机上安装了 Remote PowerShell SDK。有关 Remote PowerShell SDK 的详细信息,请参阅 SDK 和 API
  • 其他先决条件:
    1. 要监视的交付组
    2. 通过 Machine Creation Services™ (MCS) 创建的计算机目录,该目录具有关联的预配方案(模板)
    3. 与预配方案关联的身份池
    4. 要创建的事件日志源,以便脚本可以将信息写入 Windows 事件日志
    5. 允许您向远程服务器进行身份验证的安全客户端

权限、建议和通知

-  运行脚本时,请记住以下几点:

-  要使用 `XdProfileName` 参数向远程服务器进行身份验证,您需要通过在 Citrix Cloud 控制台中创建的 API 访问安全客户端来定义身份验证配置文件。有关详细信息,请参阅[身份验证 API](/zh-cn/citrix-daas/manage-deployment/autoscale/dynamic-machine-provisioning.html#authentication-api)。
  • 您必须拥有在 Active Directory 中创建和删除计算机帐户的权限。

    • 我们建议您使用 Windows 任务计划程序自动执行 PowerShell 脚本。有关详细信息,请参阅使用 Windows 任务计划程序创建自动化任务

    • 如果您希望脚本将信息(例如,故障和操作)写入 Windows 事件日志,则需要首先使用 New-EventLog cmdlet 指定源名称。例如,New-EventLog -LogName Application –Source <sourceName>。然后,您可以在 Windows 事件查看器的应用程序窗格中查看事件。

    • 如果在脚本执行期间发生错误,请手动执行脚本,然后通过执行脚本检查来排查问题。

身份验证 API

在运行脚本之前,您需要通过 API 访问安全客户端定义身份验证配置文件。您必须使用脚本将运行的同一帐户创建安全客户端。

安全客户端必须具有以下权限:

  • 使用 MCS 创建和删除计算机。
    • 编辑计算机目录(以添加和删除计算机)。
  • 编辑交付组(以添加和删除计算机)。

创建安全客户端时,请确保您的帐户具有上述权限,因为安全客户端会自动继承您当前帐户的权限。

要创建安全客户端,请完成以下步骤:

  1. 登录到 Citrix Cloud™,然后导航到身份和访问管理 > API 访问

  2. 键入安全客户端的名称,然后单击创建客户端

要向远程服务器进行身份验证,请使用 Set-XDCredentials PowerShell 命令。例如:

  • Set-XDCredentials -APIKey <key_id> -CustomerId <customer_id> -SecretKey <secret_key> -StoreAs <name specified by the XdProfileName parameter>

使用 Windows 任务计划程序创建自动化任务

您可以使用 Windows 任务计划程序自动执行 PowerShell 脚本。这样做可以让脚本在特定时间间隔或满足特定条件时自动运行。要使用 Windows 任务计划程序执行此脚本,请务必在创建任务 > 设置选项卡上选择不要启动新实例。这样做可以防止 Windows 任务计划程序在脚本已在运行的情况下运行脚本的新实例。

脚本执行示例

请参阅下面执行脚本的示例。请注意,脚本文件被多次调用。在此示例中,为了模拟负载,启动了一个会话,然后将其终止。

脚本执行示例

脚本故障排除清单

脚本会将信息(例如,错误和操作)写入 Windows 事件日志。此信息可帮助您排查执行脚本时遇到的问题。请记住以下故障排除清单可能会有所帮助:

  • 无法与远程服务器通信。可能的措施:
    • 验证您与服务器的连接。
    • 验证您使用的 API 密钥是否有效。
  • 无法创建计算机。可能的措施:
    • 验证运行脚本的用户帐户是否具有在域中创建用户帐户的足够权限。
    • 验证创建 API 密钥的用户是否具有使用 MCS 预配计算机的足够权限。
    • 验证计算机目录的有效性(即,其映像仍然存在且状态良好)。
  • 无法将计算机添加到计算机目录或交付组。可能的措施:
    • 验证创建 API 密钥的用户是否具有将计算机添加到计算机目录和交付组以及从中删除计算机的足够权限。
权限、建议和通知