的方法GameLiftFleetIQ 工作原理 - Amazon GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

的方法GameLiftFleetIQ 工作原理

这些区域有:GameLiftFleetIQ 解决方案是一个游戏托管层,为您通过 Amazon EC2 和 Auto Scaling 获得的全套计算资源管理工具提供补充。除了提供一系列特定于游戏托管的功能之外,GameLiftFleetIQ 提供了额外的逻辑层,可以使用低成本的竞价型实例进行游戏托管。此解决方案允许您直接管理 Amazon EC2 和 Auto Scaling 资源,并根据需要与其他资源集成Amazon服务。

使用GameLiftFleetIQ,您可以照常准备来启动 Amazon EC2 实例:使用游戏服务器软件创建 Amazon 系统映像 (AMI),创建 Amazon EC2 启动模板,以及为 Auto Scaling 组定义配置设置。但是,您不是直接创建 Auto Scaling 组,而是创建GameLiftFleetIQ 游戏服务器组包含您的 Amazon EC2 和 Auto Scaling 资源和配置。此操作提示GameLiftFleetIQ 用于创建游戏服务器组及相应的 Auto Scaling 组。游戏服务器组与 Auto Scaling 组的某些方面相关联并管理。

创建 Auto Scaling 组后,您将具有对 Amazon EC2 和 Auto Scaling 资源的完整访问权限。您可以更改 Auto Scaling 组的配置,添加多级扩展策略或负载均衡器,以及与其他组集成。Amazon服务。您可以直接连接到组中的实例。作为其优化逻辑的一部分,GameLiftFleetIQ 还定期更新某些 Auto Scaling 组属性。您可以跟踪 Auto Scaling 组部署的所有实例的可用性状态。

你可以暂时暂停GameLift任何时候游戏服务器组的 FleetIQ 活动。您还可以选择删除游戏服务器组,但保留对应的 Auto Scaling 组。

GameLiftFleetIQ 逻辑

下列示意图说明了GameLiftFleetIQ 与 Amazon EC2 合作进行游戏托管时。其主要目标是找到最好 的游戏服务器来托管游戏会话,并为玩家提供最佳的游戏体验。GameLiftFleetIQ 定义最好的作为以最低成本提供最高游戏托管可行性的资源。GameLiftFleetIQ 通过两种关键方式实现此目标:第一,只允许 Auto Scaling 组中的可行实例类型,第二,在组的可用资源中有效地放置新的游戏会话。


                    GameLiftFleetIQ 与 Amazon EC2 一起工作

使用最佳实例类型填充 Auto Scaling 组

Auto Scaling 组的任务是启动新实例并停用旧实例,同时维护托管资源集合并扩展该集合以满足玩家需求。为此,Auto Scaling 组依赖于所需实例类型的列表。的工作GameLiftFleetIQ 将持续检查这些所需实例类型的可行性,并更新 Auto Scaling 组的列表。此过程称为实例平衡。它可以确保 Auto Scaling 组中的实例持续刷新,以便始终只使用当前可行的实例类型。

GameLiftFleetIQ 通过以下方式影响 Auto Scaling 组选择最佳实例类型的方式:

  • 它决定 Spot 实例和/或按需实例的使用。一个GameLiftFleetIQ 游戏服务器组配置了平衡策略,该策略会影响 Auto Scaling 组使用竞价型和/或按需实例的方式。由于可用性和潜力波动,竞价型实例的成本降低中断,限制GameLiftFleetIQ 最大限度地减少游戏服务器托管。按需实例更昂贵,但在需要时可以提供更可靠的可用性。

  • 它将新实例限制为仅在可行的实例类型上启动。一个GameLiftFleetIQ 游戏服务器组维护所需实例类型的主列表。实例平衡过程使用预测算法,该算法查看实例类型的最近可用性和中断率,持续评估列表上的每个所需实例类型的游戏托管可行性。作为这次评价的结果,GameLiftFleetIQ 不断更新 Auto Scaling 组的所需实例类型列表,以仅包括当前可行的实例类型。

  • 它标记不可行实例类型的现有实例。GameLiftFleetIQ 标识 Auto Scaling 组中当前不可行实例类型的现有实例。这些实例被标记为排水,这意味着它们终止并用新实例替换。对于已启用游戏服务器保护的实例,终止将推迟到任何活动的游戏会话正常结束。

随着 Auto Scaling 组启动和停用实例,它将维护针对游戏托管进行优化的集合,即使低成本 Spot 实例类型的可用性不断波动也是如此。平衡活动仅在具有活动实例的游戏服务器组上进行。在现货平衡过程中了解有关此过程如何工作的详细信息。

有效地放置游戏会话

GameLiftFleetIQ 跟踪游戏服务器组中所有活动的游戏服务器,并使用此信息来确定如何最好地放置新游戏会话和玩家。

启用GameLiftFleetIQ 要跟踪游戏服务器,您的游戏服务器软件必须报告其状态。您的自定义 AMI 控制在每个实例上启动和停止新游戏服务器进程的方式。当新的游戏服务器启动时,它会注册到GameLiftFleetIQ,表示它已准备好承载游戏会话。在注册后,游戏服务器定期报告其运行状况以及当前是否托管游戏会话。当游戏服务器关闭时,它会取消注册GameLiftFleetIQ。

要启动新的游戏会话,您的游戏客户端(或对战构建器或其他客户端服务)会向GameLiftFleetIQ。GameLiftFleetIQ 找到一个可用的游戏服务器,为新的游戏会话认领该服务器,并使用游戏服务器 ID 和连接信息进行响应。然后,游戏会提示游戏服务器更新其状态,并为进入的玩家启动新的游戏会话。

当选择游戏服务器托管新游戏会话时,GameLiftFleetIQ 使用以下决策过程以通过可行的低成本 Spot 实例优化放置:

  1. 在可能情况下,GameLiftFleetIQ 在已经托管其他游戏会话的实例上放置新的游戏会话。通过打包(但不过载)某些实例并保持其他实例为空闲状态,Auto Scaling 组能够在不需要空闲实例时快速缩减空闲实例,从而降低托管成本。

  2. GameLiftFleetIQ 忽略标记为的实例排水,也就是说,不适用于游戏托管。这些实例仅为持现有的游戏会话而保持运行。除非没有其他游戏服务器可用,否则它们不能用于新的游戏会话。

  3. GameLiftFleetIQ 标识在可行实例上运行的所有可用游戏服务器。

您可以为游戏服务器组启用游戏会话保护,以防止 Auto Scaling 组终止具有正在运行游戏会话的实例。

关键资源和组件

在您的中创建以下资源:Amazon使用设置游戏托管资源之前的帐户GameLiftFleetIQ。作为最佳做法,在通过游戏服务器组使用这些资源之前,使用这些资源开发和测试游戏服务器部署。

  • Amazon 系统映像 (AMI)。AMI 是您希望随 Amazon EC2 实例一起启动的特定软件配置的模板。对于游戏托管,AMI 包括操作系统、游戏服务器二进制文件或容器,以及游戏服务器所需的其他运行时软件。有关创建 AMI 的更多信息,请参阅Amazon 系统映像适用于 Linux 实例的 Amazon EC2 用户指南中。AMI 是特定于区域的。您可以将 AMI 从一个区域复制到另一个区域,如中所述复制 AMI中的Amazon EC2 用户指南.

  • Amazon EC2 启动模板。启动模板提供了在 Auto Scaling 组中启动和管理实例的说明。它指定 AMI,提供合适的实例类型列表,设置网络、安全性和其他属性。有关创建启动模板的更多信息,请参阅从启动模板启动实例中的Amazon EC2 用户指南. 启动模板特定于区域。

  • AmazonIAM 角色。IAM 角色定义了一组允许有限访问的权限。Amazon资源的费用。受信任的实体,例如另一个Amazon服务,可以代入角色并继承其权限。使用GameLiftFleetIQ,您必须向 IAM 角色提供托管策略,该策略允许允许GameLiftFleetIQ 在您的中创建和访问 Auto Scaling 组和 EC2 实例资源Amazonaccount. IAM 角色不是特定于区域的。

GameLiftFleetIQ 直接管理以下资源,并对其拥有直接权限。

  • GameLift游戏服务器组. 游戏服务器组包含定义操作方法的配置设置。GameLiftFleetIQ 与相应的 Auto Scaling 组合作,以提供低成本的游戏托管。游戏服务器组是区域特定的。当您在某个区域中创建游戏服务 Auto Scaling 时,会在您的Amazon同一地区的账户。游戏服务器组与 Auto Scaling 组关联,并且有权(通过担任 IAM 角色)管理和修改其部分设置。游戏服务器组是一个长寿命的资源;开发人员应预期很少创建它们。游戏服务器组也是托管在 Auto Scaling 组中的实例上并注册到的游戏服务器的功能分组资源。GameLiftFleetIQ。

  • GameLift游戏服务器。游戏服务器资源表示正在与GameLiftFleetIQ 游戏服务器组。此资源是在游戏服务器注册时创建的GameLiftFleetIQ 并识别它所属的游戏服务器组。GameLiftFleetIQ 跟踪每个已注册游戏服务器的利用状态和认领状态,这使其能够监控游戏服务器的可用性。游戏服务器特定于区域,因为它们与特定于区域的游戏服务器组相关联。当您的游戏请求新的游戏服务器时,它会指定游戏服务器组和区域。

这些资源是通过创建的GameLiftFleetIQ 资源。它们是在你的Amazon您对它们拥有完全控制权限。

  • Amazon EC2 Auto Scaling 组。Auto Scaling 组启动和管理 EC2 实例集合,并自动扩展组容量。与GameLiftFleetIQ,有一个one-to-one游戏服务器组与 Auto Scaling 组之间的关系。尽管您可以更新 Auto Scaling 组的所有设置,GameLiftFleetIQ 会定期覆盖和更新某些设置,以平衡 Spot 实例来实现游戏托管可行性。有关更多信息,请参阅 。 AutoScalingGroup中的Amazon EC2 Auto Scaling 用户指南. Auto Scaling 组是特定于区域的;它们创建在与游戏服务器组相同的区域中。

  • Amazon EC2 实例。实例是云中的虚拟服务器。实例类型具有指定计算、内存、磁盘和网络资源的特定硬件配置。它们通常由具有 AMI 的 Auto Scaling 组启动。实例可以是 Spot 或按需实例,具体取决于可用性。与GameLiftFleetIQ,实例可以运行一个或多个游戏服务器进程,每个进程都可以托管多个游戏会话。实例特定于区域,因为它们与特定于区域的 Auto Scaling 组相关联。