GameLift FleetIQ 生命周期和状态 - Amazon GameLift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

GameLift FleetIQ 生命周期和状态

点平衡过程

GameLift FleetIQ 定期平衡实例Auto Scaling 具有SPOT实例的组。此过程与使用ON_DEMAND_ONLY平衡策略或不具有任何活动实例的游戏服务器组无关。

现货平衡有两个关键目标:

  • 通过使用可用于游戏托管的现货实例类型,不断刷新组群。

  • 使用多种可行的实例类型(在可能时),以减少游戏服务器意外中断的影响

GameLift FleetIQ 通过评估组的实例类型和删除更有可能导致游戏服务器中断的实例来平衡。为避免在平衡过程中使用活动游戏终止实例,最佳做法是为生产中的游戏服务器组打开游戏服务器保护。

以下示例说明了如何通过点平衡影响自动缩放组中的实例。


                    自动缩放组的生命周期 GameLift FleetIQ 平衡。
  • 步骤 1. 通过游戏服务器组,关联的 Auto Scaling 组设置为在启用游戏服务器保护的情况下启动类型为 m4.large、c4.large 和 c5.large 的实例。TheThethe Auto Scaling Group推出了一款平衡系列,包括每种类型的两个现场实例。四个实例至少有一个处于 UTILIZED(被利用)状态的游戏服务器(显示为虚线边框),而两个实例当前不支持玩游戏。

  • 第2步。 GameLift FleetIQ 评估所有三种实例类型的当前游戏托管活动。评估确定C4.大型实例类型对于游戏服务器中断具有不可接受的潜力。 GameLift FleetIQ 立即更新 Auto Scaling 组配置可暂时删除C4.large从实例类型列表中删除,防止其他C4.大型实例。

  • 第3步。 GameLift FleetIQ 识别C4.large类型的现有实例,并采取措施将其从组中删除。作为第一步,在C4上运行的所有游戏服务器都将标记为 排水. 只有在没有其他游戏服务器可用的情况下,才能作为最后手段认领耗尽实例上的游戏服务器。此外,将触发具有耗尽实例的 Auto Scaling 组以启动新实例来替换它们。

  • 步骤 4. 随着新的可行实例上线,Auto Scaling 组将终止耗尽的实例。这种替换可确保该组的所需容量得到保持。要终止的第一个实例是没有已利用的游戏服务器且关闭了游戏服务器保护的 c4.large 实例。它被替换为一个新的 c5.large 实例。

  • 步骤 5. 对于具有游戏服务器保护的耗尽实例而言,在其游戏服务器支持玩游戏时,这些实例将继续运行。游戏结束后,一旦新的 m4.large 实例启动以取代剩余的 c5.large 实例的位置,后者就会终止。

由于此过程,自动缩放组保持其所需的容量,而组余额来自使用三种实例类型到两种类型的平衡。 GameLift FleetIQ 继续评估游戏托管活动情况的实例类型的原始列表。当 c4.large 再次被视为可行的实例类型时,将更新 Auto Scaling 组以包含全部三种实例类型。该团队自然平衡时间。

游戏服务器组的生活

游戏服务器组经历以下生命周期,包括预配置和状态更新。游戏服务器组预计是一个长寿命的资源。

游戏服务器组资源的生命周期。
  • 您通过调用 GameLift API CreateGameServerGroup() 在ec2启动模板和配置设置中传递。为响应呼叫,将创建一个新的游戏服务器组并将其置于 NEW(新)状态。

  • GameLift FleetIQ 激活异步激活工作流,将游戏服务器组状态转换为 ACTIVATING(正在激活)。该工作流程启动对基础资源的创建,包括 Amazon EC2 Auto Scaling 组和具有提供的 AMI 的 EC2 实例。

    • 如果预配置因任何原因失败,游戏服务器组将被置于 ERROR(错误)状态。要获得更多错误信息以帮助调试故障原因,请致电 DescribeGameServerGroup() 在一个错误状态下的GameServer组。

    • 如果预配置成功,则游戏服务器组将转换为 ACTIVE(活动)状态。此时,将通过注册到 的游戏服务器启动实例。GameLift FleetIQ. 按照需要定期评估集团的实例类型,以获得游戏托管活动并进行平衡。 GameLift FleetIQ 还跟踪组中活跃游戏服务器的状态,并响应游戏服务器的请求。

  • 可以通过使用组标识符调用 DeleteGameServerGroup() 来删除游戏服务器组。此操作将游戏服务器组置于 DELETE_SCHEDULED 状态。只能计划删除处于 ACTIVE(活动”)或 ERROR(错误)状态的游戏服务器组。

  • GameLift FleetIQ 激活异步停用工作流程以响应 DELETE_SCHEDULED 状态,从而将游戏服务器组状态转换为 DELETING。您可以选择仅删除游戏服务器组,或者同时删除游戏服务器组和链接的 Auto Scaling 组。

    • 如果停用因任何原因失败,游戏服务器组将进入 ERROR(错误)状态。要获得更多错误信息以帮助调试故障原因,请致电 DescribeGameServerGroup() 在一个错误状态下的GameServer组。

    • 如果停用成功,游戏服务器组将转换为 DELETED(已删除)状态。

游戏服务器的使用寿命

使用 GameLift FleetIQ,游戏服务器组经历以下生命周期,包括预配置和状态更新。游戏服务器预计是短寿命的资源。作为最佳实践,游戏服务器应在游戏结束后取消注册,而不是再次使用游戏课程。这种方法有助于确保可用的游戏服务器始终运行于适用于游戏托管的最低成本资源上。

  • 游戏服务器处理时会创建游戏服务器资源,在 GameLift FleetIQ-链接 Auto Scaling 组,呼叫 GameLift API RegisterGameServer() 通知 GameLift FleetIQ 它已准备好主持玩家和游戏。游戏服务器具有两种状态来跟踪其当前可用性:

    • 利用状态跟踪游戏服务器当前是否支持玩游戏。此状态最初设置为 AVAILABLE(可用),表示它已准备好接受新的游戏。一旦游戏服务器被游戏占用,此状态就会设置为 UTILIZED(已利用)。

    • 认领状态可跟踪游戏服务器是否被认领用于即将开始的游戏。处于 CLAIMED(已认领)状态的游戏服务器表示它已被游戏客户端(或游戏服务,如匹配器)暂时保留。此状态可防止 GameLift FleetIQ 向多个请求者提供相同的游戏服务器。认领状态为空的游戏服务器可供认领。

  • 下图说明游戏服务器的利用状态和认领状态在其生命周期内如何变化。

    
                            游戏服务器资源的生命周期。
    • 步骤 1. 一个游戏服务器组有六个已注册的游戏服务器。其中四个的利用状态为 AVAILABLE(A、B、C 和 D),两个目前处于 UTILIZED 状态(E 和 F)。

    • 步骤 2. 游戏客户或匹配系统呼叫 GameLift API ClaimGameServer() 要申请新游戏服务器。此请求提示 GameLift FleetIQ 要搜索可用游戏服务器(d),并将其索赔状态设置为60秒。 GameLift FleetIQ 响应游戏服务器(IP地址和端口)的连接信息以及其他可选的游戏特定数据。由于尚未在游戏服务器上开始玩游戏,因此它的利用状态仍然保持为 AVAILABLE,但无法通过其他请求来认领。

    • 步骤 3a. 使用提供的连接信息,游戏客户端可以连接到游戏服务器并启动游戏。必须在60秒内触发游戏服务器(D),以便通过调用 GameLift API UpdateGameServer().

    • 步骤 3b. 如果游戏服务器的利用状态在 60 秒后未更新,认领计时器将过期,认领状态将重置为空白。游戏服务器 (D) 将返回到可用和未认领的游戏服务器池中。

  • 游戏服务器上的游戏完成并且玩家断开连接后,游戏服务器资源将被移除。在关闭之前,游戏服务器流程会调用 GameLift API DeregisterGameServer() 通知 GameLift FleetIQ 从游戏服务器集团的游戏服务器池。