使用基于规则的策略自动扩展 - 亚马逊 GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用基于规则的策略自动扩展

在根据玩家活动自动扩展舰队容量时,亚马逊基于规则的扩展策略可GameLift提供精细控制。对于每项策略,您可以将扩展与多个队列指标之一关联起来,确定触发点,并自定义响应的向上扩展或缩小事件。基于规则的策略可用于补充基于目标的扩展以应对特殊情况。

基于规则的政策规定如下:“如果舰队指标在一定时间内达到或超过阈值,则按指定数量更改机队的容量。” 本主题介绍用于构建策略语句的语法,并提供帮助以创建和管理基于规则的策略。

管理基于规则的策略

使用 Amazon SDK 或带亚马逊GameLift服务 API 的 Amazon Command Line Interface (Amazon CLI) 创建、更新或删除基于规则的策略。您可以在 Amazon GameLift 控制台中查看所有现行政策。

要暂时停止队列的所有扩展策略,请使用Amazon CLI命令stop-fleet-actions

要创建或更新基于规则的扩展策略 (Amazon CLI),请执行以下操作:
  1. 设置容量限制。使用update-fleet-capacity命令设置一个或两个极限值。有关更多信息,请参阅设置亚马逊GameLift容量限制

  2. 创建新策略。打开命令行窗口,将put-scaling-policy命令与您的策略的参数设置一起使用。要更新现有策略,请指定策略的名称并提供完整版本的更新策略。

    --fleet-id <unique fleet identifier> --name "<unique policy name>" --policy-type <target- or rule-based policy> --metric-name <name of metric> --comparison-operator <comparison operator> --threshold <threshold integer value> --evaluation-periods <number of minutes> --scaling-adjustment-type <adjustment type> --scaling-adjustment <adjustment amount>

    示例:

    aws gamelift put-scaling-policy \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \ --name "Scale up when AGS<50" \ --policy-type RuleBased \ --metric-name AvailableGameSessions \ --comparison-operator LessThanThreshold \ --threshold 50 \ --evaluation-periods 10 \ --scaling-adjustment-type ChangeInCapacity \ --scaling-adjustment 1
要删除基于规则的扩展策略,请使用以下命令:Amazon CLI
  • 打开命令行窗口,使用带有舰队 ID 和策略名称的delete-scaling-policy命令。

    示例:

    aws gamelift delete-scaling-policy \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \ --name "Scale up when AGS<50"

自动伸缩规则的语法

要构建基于规则的扩展策略声明,请指定六个变量:

如果 &lt;指标名称&gt; 保持为 &lt;比较运算符&gt; &lt;阈值&gt; 长达 &lt;评估期&gt;,使用 &lt;调整类型&gt; 将队组容量更改为 &lt;调整值&gt;,或者按后者幅度更改。

例如,每当舰队的额外容量低于处理 50 个新游戏会话所需的容量时,该政策声明就会启动扩展活动:

如果 AvailableGameSessions 保持为 less than 50 长达 10 minutes,则使用 ChangeInCapacity1 instances 的幅度更改队组容量。

指标名称

要启动扩展事件,请将自动扩展策略链接到以下队列特定指标之一。有关指标的完整描述,请参阅亚马逊车队GameLift指标

  • 激活游戏会话

  • 有效游戏会话

  • 可用的游戏会话

  • 可用游戏会话所占百分比

  • 活动实例

  • 可用的玩家会话

  • 当前玩家会话

  • 空闲实例

  • 空闲实例所占百分比

如果舰队在游戏会话队列中,则可以使用以下指标:

  • 队列深度 — 该队列的待处理游戏会话请求的数量是最佳的可用托管位置。

  • 等待时间-舰队特定的等待时间。最早的待处理游戏会话请求已等待执行的时间长度。队组的等待时间等于队列中当前最早请求的时间。

比较运算符

告诉亚马逊GameLift如何将指标数据与阈值进行比较。有效的比较运算符包括大于 (>)、小于 = <), greater than or equal (>) 和小于或等于 (<=)。

阈值

当指定的指标值达到或超过阈值时,它会启动扩展事件。此值始终为正整数。

评估期

在开始扩展事件之前,该指标必须在整个评估周期内达到或超过阈值。评估期长度是连续的;如果指标回退到阈值之下,则评估期重新开始。

调整类型和值

这组变量共同作用以指定扩展事件开始时亚马逊GameLift应如何调整队列的容量。从三种可能的调整类型中进行选择:

  • 容量变化-将当前容量增加或减少指定数量的实例。将调整值设置为要在队组中增加或删除的实例数。正值表示添加实例,而负值表示删除实例。例如,无论队列的总规模如何,值为 “-10” 都会将队列缩小 10 个实例。

  • 容量变化百分比-按指定百分比增加或减少当前容量。将调整值设置为要增加或减少车队容量的百分比。正值表示添加实例,而负值表示删除实例。例如,对于拥有 50 个实例的队列,百分比变化为 “20” 会向队列增加 10 个实例。

  • 精确容量-将当前容量增加或减少到特定值。将调整值设置为您希望在队组中维护的确切的实例数。

基于规则的自动扩展小贴士

以下建议可以帮助您通过基于规则的策略充分利用自动扩展。

使用多个策略

您可以同时为一个队列设置多个自动扩展策略。最常见的场景是:使用一个基于目标的策略管理大多数扩展需求;而使用基于规则的策略来处理边缘情况。使用多个策略没有限制。

使用多个策略时,每个策略都独立运行。无法控制扩展事件的顺序。例如,如果您有多个推动扩大规模的策略,则玩家活动可能会同时启动多个扩展事件。避免相互启动的政策。例如,如果您创建向上和向下扩展的策略,将容量设置得超过彼此的阈值,则可能会造成无限循环。

设置最大和最小容量

每个队组都具有最大和最小容量限制。使用自动缩放时,此功能很重要。自动扩展永远不会将容量设置为超出此范围的值。默认情况下,新创建的队组具有最小值 0 和最大值 1。为了使您的自动扩展策略按预期影响容量,请增加最大值。

队列容量还受到队列实例类型的限制和您的服务配额的限制Amazon Web Services 账户。除了这些限制和账户配额,您不能设置最小值和最大值。

在容量更改后跟踪指标

在根据自动扩展策略更改容量后,Amazon 会GameLift等待 10 分钟后再响应来自同一策略的触发器。这种等待使亚马逊有GameLift时间添加新实例、启动游戏服务器、连接玩家并开始从新实例收集数据。在此期间,亚马逊GameLift根据指标评估策略并跟踪策略的评估期,评估期在扩展事件发生后重新开始。这意味着扩展策略可以在等待时间结束后立即启动另一个扩展事件。

不同的 Auto Scaling 策略启动的扩展事件之间没有等待时间。