Citrix Virtual Apps and Desktops

Autoscale™ 入门

Autoscale 是一项功能,它提供一致的高性能电源管理解决方案,可根据配置的计划或负载需求主动扩展交付组。

容量和计算机注册

Autoscale 在确定容量时仅包括已向站点注册的计算机。未注册的已开机计算机无法接受会话请求。因此,它们不包括在交付组的整体容量中。

跨多个计算机目录进行扩展

在某些站点中,多个计算机目录可能与单个交付组关联。Autoscale 随机从每个目录中开机,以满足计划或会话需求。

例如,一个交付组有两个计算机目录:目录 A 有三台已开机计算机,目录 B 有一台已开机计算机。如果 Autoscale 需要开机一台额外的计算机,它可能会从目录 A 或目录 B 中开机一台计算机。

计算机预配和会话需求

  • 与交付组关联的计算机目录必须有足够的计算机,以便在需求增加和减少时开机和关机。如果会话需求超过交付组中已注册计算机的总数,Autoscale 会确保所有已注册计算机都已开机。但是,Autoscale 不会预配其他计算机

  • 注意:

    如果交付组有 63 台计算机,并且为非工作时间设置了 10% 的缓冲区容量,则根据 Autoscale 计算,非工作时间必须开机 6.3 台计算机。为了处理小数,规则如下:

    • 四舍五入到最接近的整数:例如,如果值为 6.4,则开机 6 台计算机。如果值为 6.7,则开机 7 台计算机。
    • 对于任何小于 1 的非零值,四舍五入到 1。例如,如果值为 0.2 或 0.9,则开机 1 台计算机。

实例大小注意事项

  • 如果在公有云中适当调整实例大小,则可以优化成本。我们建议您预配较小的实例,只要它们符合您的工作负载性能和容量要求。

较小的实例托管的用户会话少于较大的实例。因此,Autoscale 会更快地将计算机置于耗尽状态,因为最后一位用户会话注销所需的时间更少。因此,Autoscale 会更快地关闭较小的实例,从而降低成本。

计划

Autoscale 根据您设置的计划,对交付组中的计算机进行开机和关机。

计划包括每个时间段的活动计算机数量,并定义了高峰和非高峰时段。

高峰和非高峰时段

高峰和非高峰时段用于指示在一天中的特定时段使用哪个容量缓冲区值。可以定义高峰时段,将剩余的未定义时段留作非高峰时段。

关机延迟

关机延迟是指计算机开机后,Autoscale 才能将其关机的最短分钟数。这可以防止计算机在会话需求波动期间反复开机和关机。默认情况下,关机延迟为 30 分钟。您可以将其设置为 0-60 分钟的范围。

池大小

池大小是指在一天中的特定时段必须保持开机状态的计算机数量。

容量缓冲区

容量缓冲区用于向当前需求添加备用容量,以应对动态负载增加。需要注意的两种情况:

  • 对于多会话操作系统交付组,容量缓冲区定义为交付组总容量(以负载指数表示)的百分比。
  • 对于单会话操作系统交付组,容量缓冲区定义为交付组中计算机总数的百分比。

容量缓冲区是一个滚动缓冲区,因为它根据当前使用情况计算和应用,而不是在配置的池大小之上计算和应用。

例如,假设一个交付组有 10 台计算机,当前时段的池大小为 1 台计算机,容量缓冲区为 10%。当根据计划定义的 1 台已启动计算机的负载达到 10% 容量缓冲区不再满足的程度时,会额外启动一台计算机。如果在启动第二台计算机后负载降低,并且有足够的空闲负载容量来满足 10% 的容量缓冲区,Autoscale 会准备关闭 1 台计算机。

负载指数

重要提示:

负载指数仅适用于多会话交付组。

负载指数指标确定计算机接收用户登录请求的可能性。它是使用为 Citrix 负载管理策略 配置的并发登录、会话、CPU、磁盘和内存使用情况设置计算的。

负载指数范围为 0 到 10,000。默认情况下,当计算机托管 250 个会话时,它被视为满载:

  • 数字“0”表示未加载的计算机。负载指数值为 0 的计算机处于基线负载。

  • 数字“10,000”表示已满载且无法运行更多会话的计算机。

Autoscale 和维护模式

处于维护模式的计算机,无论其可用性状态如何,都被视为整体池大小计算的一部分。因此,池中的所有计算机都可能处于维护模式。但是,这些计算机不包括在容量缓冲区计算中,以确保它们立即可用。为确保特定百分比的计算机可用于用户连接,请相应地调整池大小和缓冲区值。

计算机成本

每小时计算机实例成本是所用计算容量的每小时成本(以美元计)。此设置用于计算 Autoscale 设置的成本节省。要查看节省情况,请转至 Monitor > Trends > Machine usage

  • 纵向扩展交付组

    • 当满足以下条件时,Autoscale 会在启用了 Autoscale 的交付组中启动额外的计算机:
  1. 交付组的 Autoscale 计划指示当前时段必须启动更多计算机。
  2. 交付组上的当前负载已超出容量缓冲区。

启动计算机的条件:

  1. 未处于维护模式。
  2. 管理程序未处于维护模式。
      1. 已关闭电源且未注册。
      1. 属于需要纵向扩展的交付组。
      1. 没有待处理的电源操作。

纵向缩减交付组

当满足以下条件时,Autoscale 会在启用了 Autoscale 的交付组中关闭计算机:

-  1.  Autoscale 计划指定必须关闭计算机以满足当前时段的配置计算机数量。
-  1.  交付组的当前负载已降低,导致已启动的计算机数量超出满足池大小和容量缓冲区所需的数量。

Autoscale 通过关闭超出满足池大小和容量缓冲区所需的数量的冗余计算机来纵向缩减交付组。

纵向缩减过程包括两个步骤:

  1. 将所需数量的计算机置于耗尽状态。
  2. 选择所有处于耗尽状态的计算机以关闭电源。

符合关闭电源条件的计算机必须满足以下条件:

    1. 未处于维护模式
  1. 管理程序未处于维护模式
  2. 当前已启动
  3. 已注册为可用或在启动后等待注册
  4. 已耗尽且没有活动会话
  5. 没有待处理的电源操作
  6. 满足关闭电源延迟

耗尽状态

Autoscale 尝试将交付组中已启动计算机的数量纵向缩减到配置的池大小和容量缓冲区。

-  为实现此目标,Autoscale 会将具有最少会话的冗余计算机置于“耗尽状态”,并在所有会话注销后将其关闭。当会话需求减少且计划要求的计算机数量少于已启动的计算机数量时,会发生此行为。

计算机进入耗尽状态的条件:

  1. 已启动
  2. 未处于维护模式
  3. 管理程序未处于维护模式
  4. 属于需要纵向缩减的交付组
  5. 当前活动会话数量最少

注意:

-  已启动至少达到关闭电源延迟指定时间的计算机优先进入耗尽状态。
-  处于耗尽状态的计算机不再托管新的会话启动,并等待现有会话注销。仅当所有会话注销后,计算机才会关闭。但是,如果没有立即可用于会话启动的计算机,Autoscale 倾向于将会话启动定向到处于耗尽状态的计算机,而不是启动新计算机。
-  Autoscale 会逐一将冗余计算机置于“耗尽状态”:
  • 如果两台或更多计算机具有相同数量的活动会话,Autoscale 会耗尽已启动达到指定关闭电源延迟的计算机。

    这样做可以避免将最近开机的计算机置于耗尽状态,因为这些计算机的会话数量可能最少。

  • 如果两台或更多计算机已开机达到指定的关机延迟时间,Autoscale 会随机逐一耗尽这些计算机。

处于耗尽状态的计算机不再托管新的会话启动,并等待现有会话注销。只有当所有会话都注销后,计算机才会成为关机候选对象。但是,如果没有立即可用于会话启动的计算机,Autoscale 倾向于将会话启动定向到处于耗尽状态的计算机,而不是开机一台计算机。

当满足以下任一条件时,计算机将退出耗尽状态:

  • 计算机已关机。
  • 对于计算机所属的交付组,Autoscale 已禁用。
  • Autoscale 使用该计算机来满足计划或负载需求。当计划(基于计划的扩展)或当前需求(基于负载的扩展)所需的计算机数量多于当前已开机的计算机数量时,会出现这种情况。

重要提示:

如果没有立即可用于会话启动的计算机,Autoscale 倾向于将会话启动定向到处于耗尽状态的计算机,而不是开机一台计算机。托管会话启动的处于耗尽状态的计算机仍将保持耗尽状态。

显示耗尽状态

您可以使用 PowerShell 或 Web Studio 确定哪些计算机处于耗尽状态。

使用 PowerShell

运行 Get-BrokerMachineV2 PowerShell cmdlet 以查看计算机的 IsDrainingDrainingReason 属性。

例如:Get-BrokerMachineV2 -Property IsDraining,DrainingReason,MachineName | Format-Table MachineName,IsDraining,DrainingReason

  • IsDraining: 当计算机处于耗尽状态时,此布尔属性为 True;否则为 False
  • DrainingReason: 此属性提供计算机处于耗尽状态的具体原因。其默认值为 NotDraining。当计算机处于耗尽状态时,DrainingReason 会显示以下值之一:

    • AutoscaleScaleDown: Autoscale 启动耗尽状态以缩减交付组中已开机计算机的数量,从而满足配置的池大小和容量缓冲区要求。当会话需求减少或计划需要更少计算机时,会出现这种情况。
    • NaturalRebootCycle: 计算机正在耗尽,作为计划重启周期的一部分,其重启模式为“等待会话结束”。计算机在重启前会等待活动会话结束。
    • RebootCycle: 计算机正在耗尽,作为计划重启周期的一部分,其重启模式为“强制注销”。在计算机重启前,活动会话会被强制注销。
    • MaintenanceMode: 管理员将计算机置于维护模式。
    • HypervisorInMaintenanceMode: 托管该计算机的管理程序连接处于维护模式。
    • MaintenanceCycle: 计算机正在耗尽,作为 VUS 维护周期操作的一部分,例如操作系统磁盘重置。
    • GuestOSDraining: 客户机操作系统明确地将自身设置为耗尽模式(例如,通过注册表设置)。此原因仅适用于多会话计算机。
    • GuestOSDrainingUntilRestart: 客户机操作系统将自身设置为耗尽模式,该模式将持续到下次重启。此原因仅适用于多会话计算机。
使用 Web Studio
-  > **注意:** > > 虽然 `IsDraining` 和 `DrainingReason` 属性适用于单会话和多会话计算机(其中 `GuestOSDraining` 原因特定于多会话),但 Web Studio 中的 **Drain State**(耗尽状态)列历来仅适用于多会话计算机以显示这些状态。

-  要在 Web Studio 中显示处于耗尽状态的计算机,请执行以下操作:
  1. 导航到 Search(搜索)节点,然后单击 Columns to Display(要显示的列)。
  2. Columns to Display(要显示的列)窗口中,选中 Drain State(耗尽状态)旁边的复选框。
    1. 单击 Save(保存)以退出 Columns to Display(要显示的列)窗口。
    • Drain State(耗尽状态)列可以显示以下信息:
  • Draining until shutdown(耗尽直到关机)。当计算机处于耗尽状态直到关机时显示。
  • Not draining(未耗尽)。当计算机尚未处于耗尽状态时显示。

耗尽状态

为交付组启用 Autoscale

创建交付组时,Autoscale 默认处于禁用状态。要使用 Web Studio 为交付组启用和配置 Autoscale,请执行以下步骤:

  • 您还可以使用 PowerShell 命令为交付组启用和配置 Autoscale。有关详细信息,请参阅 Broker PowerShell SDK 命令

    1. 在左侧窗格中选择 Delivery Groups(交付组)。
  1. 选择要管理的交付组,然后单击 Manage Autoscale(管理 Autoscale)。

    云 UI

  2. Manage Autoscale(管理 Autoscale)页面上,选中 Enable Autoscale(启用 Autoscale)复选框以启用 Autoscale。启用 Autoscale 后,页面上的选项将变为可用。

    云 UI

要禁用 Autoscale,请清除 Autoscale 复选框。页面上的选项将变为灰色,表示所选交付组的 Autoscale 已禁用。

重要提示:

  • 如果禁用 Autoscale,则 Autoscale 管理的所有计算机将保持禁用时的状态。
  • 禁用 Autoscale 后,处于耗尽状态的计算机将退出耗尽状态。有关耗尽状态的详细信息,请参阅耗尽状态
  • 基于负载的设置页面上针对单会话 OS 静态交付组和单会话 OS 随机交付组的电源策略操作独立于 Autoscale 设置(启用或禁用)。

从 Autoscale 计算中排除耗尽状态的计算机

此功能允许您防止因重新启动计划而处于耗尽状态的计算机计入 Autoscale 容量目标。通过排除这些计算机,可以优化资源调配并避免过度调配。

例如:有一个多会话 OS 计算机交付组,配置了 Autoscale 和常规重新启动计划。当计算机因重新启动而进入耗尽状态时,Autoscale 通常仍将其计为可用容量。这可能会不必要地触发额外计算机的调配。通过启用此功能,可以指示 Autoscale 在计算容量时忽略这些耗尽状态的计算机。这可确保只有活动可用的计算机才计入目标,从而提高资源利用率并降低运营成本。

适用性

此功能适用于包含多会话 OS 计算机 (RDS) 的交付组。

限制

  • 此功能不适用于单会话 OS 计算机。
  • 当基于“计算机数量”(而非“百分比”)配置 Autoscale 时,系统不会从 Autoscale 计算中排除处于耗尽状态的计算机。

重要注意事项

  • 属性 ExcludeNaturalRebootDrainingFromAutoscale 在交付组级别配置。
  • 属性 ExcludeNaturalRebootDrainingFromAutoscale 的默认值为 False。这意味着默认情况下,耗尽状态的计算机包含在 Autoscale 计算中。

先决条件

  • 配置多会话 OS 交付组。
  • 为目标交付组启用并配置 Autoscale。最好使用“计算机百分比”进行缩放。
  • 为交付组配置重新启动计划,以使计算机进入耗尽状态。

如何配置

此功能在交付组级别使用 PowerShell 命令进行配置。

  1. 确保功能切换 ExcludeNaturalRebootDrainingFromAutoscale 已启用。可以通过在 PowerShell 中运行 Get-ConfigEnabledFeature 并在输出列表中检查此切换来验证。

    注意:

    如果此切换已禁用,则无法修改交付组属性。

  2. 将交付组属性设置为排除耗尽状态的计算机。

    1. 以管理员权限打开 PowerShell。
    2. 识别多会话 OS 交付组。
    3. 使用 Set-BrokerDesktopGroup cmdlet 将交付组的 ExcludeNaturalRebootDrainingFromAutoscale 属性设置为 $True

      Set-BrokerDesktopGroup -Name "<YourDeliveryGroupName>" -ExcludeNaturalRebootDrainingFromAutoscale $True
      <!--NeedCopy-->
      

      <YourDeliveryGroupName> 替换为交付组的实际名称。

    4. 通过运行以下命令验证属性是否设置为 True

      Get-BrokerDesktopGroup -Name "<YourDeliveryGroupName>" | Select Name, ExcludeNaturalRebootDrainingFromAutoscale
      <!--NeedCopy-->
      

      输出应显示 ExcludeNaturalRebootDrainingFromAutoscale : True

  3. 配置 Autoscale 和重新启动计划(如果尚未配置)。

    确保交付组已启用 Autoscale 并配置了重新启动计划,以使计算机进入耗尽状态。

    1. 在 Web Studio 中,编辑交付组。
    2. 转到管理 Autoscale 并配置高峰/非高峰计划,确保 Autoscale 已启用。如果打算排除耗尽状态的计算机,请根据“计算机百分比”设置计划。
    3. 转到重新启动计划并创建或编辑一个导致计算机进入耗尽状态的计划(例如,对于云部署,使用正常重新启动;对于本地部署,使用会话耗尽后重新启动所有计算机)。

监视和故障排除

问题:即使启用了此功能,会话有时也会启动到耗尽状态的计算机上。

原因:这是预期行为。如果其他合适的非耗尽状态计算机不可用,则处于耗尽状态的计算机仍可作为“最后手段”用于会话启动。此功能主要影响 Autoscale 的调配/取消调配计算。它不影响代理的会话启动逻辑本身。

解决方案:这不是问题,而是预期设计。为了最大程度地减少会话进入耗尽状态的计算机,请确保 Autoscale 缓冲区和容量足以保持足够的非耗尽状态计算机可用以满足需求。

具有用户会话的 VM 的 Autoscale 选项

Autoscale 可以管理分配的计算机和池化计算机,优化其电源和可用性。以下内容提供了 PowerShell 命令和 UI 设置,用于根据高峰和非高峰时间以及分配的计算机和池化计算机的用户会话来控制计算机电源状态。

分配的计算机专用于单个用户,而池化计算机则在多个用户之间共享。

注意:

  • Citrix Studio 中的会话限制策略,特别是断开连接会话计时器会话空闲计时器,即使未启用 Citrix Autoscale,对于管理用户会话也至关重要。这些策略定义了会话在终止前可以保持断开连接或空闲状态的时长,从而确保资源利用率并防止会话被锁定。此策略设置可用于分配的计算机和池化的计算机,特别是运行多会话 VDA 的计算机。有关详细信息,请参阅会话限制策略设置
  • Get-BrokerMachine PowerShell 命令已弃用。请使用 Get-BrokerMachineV2 作为替代方案。

适用于分配的计算机

  • 要在高峰时段开始时自动开启静态交付组中分配的单会话计算机,请使用 PowerShell 命令:

     Set-BrokerDesktopGroup "Desktop Group Name" -AutomaticPowerOnForAssigned $True
     <!--NeedCopy-->
    
  • 为确保在高峰时段发现处于关闭状态的任何分配的计算机都会重新启动,请同时启用 AutomaticPowerOnForAssignedDuringPeak

     Set-BrokerDesktopGroup "Desktop Group Name" -AutomaticPowerOnForAssigned $True -AutomaticPowerOnForAssignedDuringPeak $True
     <!--NeedCopy-->
    
  • 如果您希望 VM 仅在用户启动会话时开启,请执行以下任一操作:

    • AutomaticPowerOnForAssignedAutomaticPowerOnForAssignedDuringPeak 设置为 False
    • 使用 UI 界面将所有时间定义为非高峰时段,完全没有高峰时段。请参阅基于计划的设置。在非高峰时段,如果 Autoscale 管理的分配的计算机上没有用户会话,则该计算机将关闭。

      非高峰时段,无高峰时段

  • 如果所有计算机都在高峰时段由 Autoscale 开启,请使用 UI 界面设置等待时间(以分钟为单位)以及操作,例如,如果计算机由 Autoscale 开启后没有用户登录,则不执行任何操作、挂起或关机。请参阅电源策略

适用于池化的计算机

要在会话注销后自动关闭池化的计算机,请将交付组的 PowerShell 命令 ShutdownAfterUse 设置为 True。例如:

Set-BrokerDesktopGroup -Name “DesktopGroupName” -ShutdownDesktopsAfterUse $true
<!--NeedCopy-->

监视指标

为交付组启用 Autoscale 后,您可以从 Director 监视 Autoscale 管理的计算机的以下指标。

  • 计算机使用情况

  • 预估节省

  • 计算机和会话的警报通知

  • 计算机状态

  • 负载评估趋势

注意:

首次为交付组启用 Autoscale 时,可能需要几分钟才能显示该交付组的监视数据。 如果为交付组启用 Autoscale 然后将其禁用,监视数据仍将可用。Autoscale 以 5 分钟间隔收集监视数据。

有关指标的详细信息,请参阅监视 Autoscale 管理的计算机

Autoscale 对休眠 VM 的支持

您可以通过 Autoscale 可配置设置休眠 VM。使用 PowerShell 命令 Get-BrokerDesktopGroupsNew-BrokerDesktopGroupsSet-BrokerDesktopGroups 将以下正值设置为参数 AutoscaleScaleDownActionDuringPeak(高峰时段)或 AutoscaleScaleDownActionDuringOffPeak(非高峰时段),以定义电源操作:

  • 0: 缩减时关闭 VM
  • 1: 缩减时挂起(休眠 VM)

不具备休眠能力的 VM 将被关闭。

如果交付组启用了休眠,您可以为休眠 VM 配置重新启动计划。在重新启动周期中,VM 将恢复,然后关闭。重新启动计划可以设置为每周、每天、每月和一次。您可以配置多个计划。但是,VM 从休眠状态恢复可能需要几分钟。

Autoscale 还可以在高峰时段开启处于休眠状态的多会话远程桌面服务 (RDS) 和没有会话的共享单会话 VM。这些 VM 可以是 MCS 和非 MCS 计算机目录。

更多信息

有关 Autoscale 的更多信息,请参阅 Tech Zone 中的 Citrix Autoscale

Autoscale™ 入门