通过 GameLift 使用 Spot 实例 - Amazon GameLift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

通过 GameLift 使用 Spot 实例

设置托管资源队组时,您可以选择使用 Spot 实例、按需实例或两者的组合。在按需实例与 Spot 实例中了解有关 GameLift 如何使用 Spot 实例的更多信息。如果您选择使用 Spot 队组,则需要对您的游戏集成做出一些调整。

您是否在使用 FlexMatch 进行匹配? 您可以将 Spot 队组添加到现有的游戏会话队组中,以便进行对战放置。

为 Spot 队组设置游戏和托管资源:

  1. 设计具有“针对 Spot 进行了优化”的配置的队列。 使用队列管理队组使用率始终是一个最佳实践,它在使用 Spot 实例时是必需的。在此步骤中,您需要确定要在队列中覆盖的区域,为您的游戏选择正确的实例类型(硬件),并确定您希望 FleetIQ 如何为游戏会话放置设定优先顺序。作为最佳实践,队组中的每个区域应至少有一个 Spot 队组和一个按需队组作为备份资源。对于具有多个 Spot 队组的队列,这些队组应使用不同的实例类型,以增加始终拥有可行的 Spot 队组的几率。这种设计将提高资源的弹性。请参阅为 Spot 实例设计队列,以获取有关设计针对 Spot 优化的队列的帮助。

    为队列创建队组后,您可以创建队列,添加队组目标和设置队组优先级。请参阅创建队列以帮助您创建和配置新队列。

  2. 为针对 Spot 进行了优化的队列创建队组。 在创建队列前,您需要为其创建队组。Spot 队组和按需队组可能具有完全相同的配置,唯一的区别是队组类型名称。请参阅使用自定义游戏生成包部署 GameLift 队组以帮助您创建和配置新队组。

    注意

    我们建议将队组类型(Spot 或按需)包含在队组名称中。这样,您只需扫一眼队组名称列表即可轻松地识别您的 Spot 队组,例如在将队组添加到队列时。

  3. 使您的游戏客户端或客户端服务能够使用针对 Spot 进行优化的队列放置新游戏会话。 如果您尚未这样做,请更新游戏客户端代码以通过队列使用游戏会话放置,而不是在单个特定队组上创建游戏会话。通过使用队列来放置游戏会话,您可以让 FleetIQ 根据成本、中断率和玩家延迟选择最佳队组。您还确保了在首选队组暂时无法使用时提供后备托管资源。要获得在游戏客户端中实施游戏会话放置的帮助,请参阅创建游戏会话

  4. 使游戏服务器能够处理 Spot 中断。 当 AWS 需要容量退回时, Spot 实例可能中断并发出持续两分钟的通知。您需要游戏服务器正常地处理中断 (如果发生),并最大程度地降低对玩家的影响。当 AWS 即将回收 Spot 实例时,它将发出最长持续两分钟的终止通知,GameLift 将在所有受影响的服务器进程上传递该通知。这通过调用服务器开发工具包回调函数onProcessTerminate() 实现。实施此回调函数始终是一个最佳实践,但它在使用 Spot 实例时特别重要。此回调的实施可以采取以下行动:正常地结束游戏会话或寻找一种将游戏会话和玩家移动到新位置的方法。请参阅响应服务器进程关闭通知以帮助您实施 onProcessTerminate()

    注意

    一旦某个实例被选择终止,AWS 便会尽全力提供通知,但也有可能 Spot 实例在警告到达之便已被终止。您的游戏服务器应做好应对意外中断的准备。

  5. 评估 Spot 队组和队列的性能。 当新队列正在主动放置新游戏会话时,请使用 GameLift 指标来评估性能。关键指标包括:

    • 中断率 – 跟踪 Spot 队组中的实例和游戏会话的 Spot 相关中断的数量和频率。这些队组指标(InstanceInterruptionsGameSessionInterruptions)可在 GameLift 控制台中查看或使用 Amazon CloudWatch 查看(请参阅GameLift 队组指标)。如果您在指标组中聚集了队组指标,则还可以在 CloudWatch 中按实例类型和操作系统查看中断。出于 Spot 相关原因终止的游戏会话具有状态“TERMINATED”和状态原因“INTERRUPTED”。

    • 队列有效性 – 跟踪队列的指标(包括放置成功率、平均等待时间和队列深度)以确认使用 Spot 队组不会影响队列性能。队列指标可在 GameLift 控制台中查看或使用 Amazon CloudWatch 查看。

    • 队组利用率 – 监控队组的使用率,包括实例上的数据、游戏会话和玩家会话。按需队组的使用率可以表明,FleetIQ 正在选择避免冒险放置到 Spot 队组中,并回退到按需队组。队组利用率指标可在 GameLift 控制台中查看或使用 Amazon CloudWatch 查看。