

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

# 什么是 Amazon GameLift ServersFleetIQ？
<a name="gsg-intro"></a>

Amazon GameLift Servers FleetIQ 针对基于云的游戏托管，优化了对低成本 Amazon Elastic Compute Cloud（Amazon EC2）竞价型实例的使用。借助 Amazon GameLift Servers FleetIQ，您可以直接使用 Amazon EC2 和 Amazon EC2 Auto Scaling 中的托管资源，同时利用 Amazon GameLift Servers 的优化为玩家提供便宜、弹性的游戏托管。Amazon EC2 竞价型实例虽然折扣很大，但通常不适合游戏托管，因为可用性会波动，而且有可能出现[中断](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html)。Amazon GameLift Servers FleetIQ 大大缓解了这些限制，使得使用低成本竞价型实例可以用于游戏托管。

在使用 Amazon GameLift Servers 管理游戏托管时，也可以使用 FleetIQ 优化。有关 Amazon GameLift Servers 托管选项的更多信息，请参阅 [Amazon GameLift Servers 开发人员指南](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-intro.html)。

Amazon GameLift Servers FleetIQ 游戏托管解决方案专为符合以下条件的游戏开发人员而设计：
+ 已有 AWS 部署或想要直接使用 Amazon EC2，而不是通过完全托管的Amazon GameLift Servers服务。 Amazon GameLift ServersFleetIQ与您在中管理的 EC2 Auto Scaling 群组配合使用 AWS 账户，使您可以完全访问自己的 EC2 实例和群组。您还可以与其他 AWS 服务集成，包括亚马逊弹性容器服务 (Amazon ECS)、亚马逊 Elastic Kubernetes Service（亚马逊 EKS）和。 AWS Shield Advanced
+ 拥有现有的本地游戏托管，并希望将容量扩展到云。借Amazon GameLift ServersFleetIQ助，您可以构建混合部署系统，该系统使用您的本地容量，并根据需要逐步增加 AWS 云容量。

**准备好开始使用 Amazon GameLift Servers FleetIQ 了吗？**  
参加 Skill Amazon GameLift Servers FleetIQ Bu AWS ilder 上的 “将 [Amazon Amazon GameLift ServersFleetIQ 用于游戏服务器” 课程，学习如何在游戏中使用](https://explore.skillbuilder.aws/learn/course/external/view/elearning/435/using-amazon-gamelift-fleetiq-for-game-servers)。有关相关课程的概述，请参阅[游戏技术学习计划](https://explore.skillbuilder.aws/learn/public/learning_plan/view/26/game-tech-learning-plan)。有些课程有不同的语言版本。
按照[Amazon GameLift Servers FleetIQ 集成步骤](gsg-getting-started.md)中的说明进行操作。

# Amazon GameLift Servers FleetIQ 的工作原理
<a name="gsg-howitworks"></a>

该Amazon GameLift ServersFleetIQ解决方案是一个游戏托管层，它补充了您通过 Amazon EC2 和 Auto Scaling 获得的全套计算资源管理工具。除了提供一系列特定于游戏托管的特征外，Amazon GameLift Servers FleetIQ 还提供了额外的逻辑层，让使用低成本的竞价型实例进行游戏托管成为可能。该解决方案允许您直接管理您的 Amazon EC2 和 Auto Scaling 资源，并根据需要与其他 AWS 服务集成。

使用时 Amazon GameLift ServersFleetIQ，您需要像往常一样准备启动 Amazon EC2 实例：使用游戏服务器软件制作亚马逊系统映像 (AMI)，创建 Amazon EC2 启动模板，并为 Auto Scaling 组定义配置设置。但是，与其直接创建 Auto Scaling 组，不如使用您的 Amazon EC2 和 Auto Scaling 资源和配置创建一个Amazon GameLift ServersFleetIQ游戏服务器组。此操作会提示您Amazon GameLift ServersFleetIQ同时创建游戏服务器组和相应的 Auto Scaling 组。游戏服务器组与自动扩缩组关联并管理自动扩缩组的某些方面。

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

您可以随时暂停游戏服务器组的 Amazon GameLift Servers FleetIQ 活动。您还可以选择删除游戏服务器组，但保留对应的自动扩缩组。

**Topics**
+ [Amazon GameLift Servers FleetIQ 逻辑](gsg-howitworks-logic.md)
+ [关键资源和组件](gsg-howitworks-resources.md)

# Amazon GameLift Servers FleetIQ 逻辑
<a name="gsg-howitworks-logic"></a>

下图说明了 Amazon GameLift Servers FleetIQ 在与 Amazon EC2 配合进行游戏托管时的角色。它的主要目标是找到尽可能*好的*游戏服务器来托管游戏会话，并为玩家提供最佳的游戏体验。 Amazon GameLift ServersFleetIQ将*最佳*资源定义为那些以最低成本提供最高游戏托管可行性的资源。 Amazon GameLift ServersFleetIQ通过两种关键方式实现这一目标：第一，在 Auto Scaling 组中仅允许可行的实例类型，其次是在该组的可用资源中有效地放置新的游戏会话。

![\[Amazon GameLift Servers FleetIQ 与 Amazon EC2 配合使用\]](http://docs.aws.amazon.com/zh_cn/gameliftservers/latest/fleetiqguide/images/gsg-howitworks-logic.png)


## 使用最佳实例类型填充自动扩缩组
<a name="gsg-howitworks-logic-rebalancing"></a>

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

Amazon GameLift ServersFleetIQ影响 Auto Scaling 组如何通过以下方式选择最佳实例类型：
+ **它决定竞价型 and/or 按需实例的使用情况。**Amazon GameLift ServersFleetIQ游戏服务器组配置了平衡策略，这会影响 Auto Scaling 组使用竞价型和/或按需实例的方式。竞价型实例由于可用性波动和潜在[中断](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html)，可以具备较低的成本。Amazon GameLift Servers FleetIQ 最大限度地减少了游戏服务器托管的这些限制。按需型实例成本更高昂，但在您需要时可提供更可靠的可用性。
+ **它限制新实例只能在可行的实例类型上启动。**Amazon GameLift Servers FleetIQ 游戏服务器组维护着所需实例类型的主列表。实例平衡过程使用预测算法，持续评估列表中每种所需的实例类型，以确定游戏托管的可行性，该算法会查看实例类型的最新可用性和中断率。评估后，会Amazon GameLift ServersFleetIQ不断更新 Auto Scaling 组的所需实例类型列表，使其仅包括当前可行的实例类型。
+ **它会标记不可行的实例类型的现有实例。** Amazon GameLift ServersFleetIQ标识 Auto Scaling 组中当前不可行的实例类型的现有实例。这些实例标记为*耗尽*，这意味着将终止这些实例并使用新实例替换。对于已启用游戏服务器保护的实例，终止将推迟到任何活动的游戏会话正常结束。

随着自动扩缩组启动和停用实例，它将持续维护针对游戏托管进行优化的集合，即使低成本竞价型实例类型的可用性不断波动也是如此。平衡活动仅在具有活动实例的游戏服务器组上进行。在[竞价平衡过程](gsg-lifecycle-rebalance.md)中了解有关此过程如何工作的详细信息。

## 有效地放置游戏会话
<a name="gsg-howitworks-logic-fleetiq"></a>

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

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

要启动新的游戏会话，您的游戏客户端（或配对器或其他客户端服务）会向 Amazon GameLift Servers FleetIQ 发送游戏服务器请求。Amazon GameLift Servers FleetIQ 找到一个可用的游戏服务器，为新的游戏会话认领该服务器，并使用游戏服务器 ID 和连接信息进行响应。然后，游戏会提示游戏服务器更新其状态，并为进入的玩家启动新的游戏会话。

选择游戏服务器来托管新的游戏会话时，Amazon GameLift Servers FleetIQ 使用以下决策过程以通过可行的低成本竞价型实例优化放置：

1. 在可能的情况下，Amazon GameLift Servers FleetIQ 在已经托管其他游戏会话的实例上放置新的游戏会话。通过打包（但不过载）某些实例并保持其他实例为空闲状态，自动扩缩组能够在不需要空闲实例时快速缩减空闲实例，从而降低托管成本。

1. Amazon GameLift Servers FleetIQ 忽略标记为*耗尽*的实例，即不适用于游戏托管。这些实例仅为持现有的游戏会话而保持运行。除非没有其他游戏服务器可用，否则它们不能用于新的游戏会话。

1. Amazon GameLift Servers FleetIQ 确定在可行的实例上运行的所有可用游戏服务器。

您可以为游戏服务器组启用游戏会话保护，以防止自动扩缩组终止具有正在运行游戏会话的实例。

# 关键资源和组件
<a name="gsg-howitworks-resources"></a>

在使用设置游戏托管资源之前，请在您的 AWS 账户中创建以下资源Amazon GameLift ServersFleetIQ。作为最佳做法，在通过游戏服务器组使用这些资源之前，使用这些资源开发和测试游戏服务器部署。
+ **亚马逊机器映像（AMI）。**AMI 是您希望随 Amazon EC2 实例一起启动的特定软件配置的模板。对于游戏托管，AMI 包括操作系统、游戏服务器二进制文件或容器，以及游戏服务器所需的其他运行时软件。有关创建 AMI 的更多信息，请参阅 [Amazon EC2 用户指南中的亚马逊系统映像](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html)。 AMIs 是特定于区域的。您可以按照 *Amazon EC2 用户指南*中的[复制 AMIs中所述，将 AMI 从一个区域复制到](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html)另一个区域。
+ **Amazon EC2 启动模板。**启动模板提供了在自动扩缩组中启动和管理实例的说明。它指定 AMI，提供合适的实例类型列表，设置网络、安全性和其他属性。有关创建启动模板的更多信息，请参阅《Amazon EC2 用户指南》**中的[从启动模板启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)。启动模板特定于区域。
+ **AWS IAM 角色**。IAM 角色定义了一组权限，允许对 AWS 资源进行有限的访问。可信实体（例如其他 AWS 服务）可以担任该角色并继承其权限。使用时 Amazon GameLift ServersFleetIQ，您必须为一个 IAM 角色提供托管策略，该策略Amazon GameLift ServersFleetIQ允许在您的 AWS 账户中创建和访问 Auto Scaling 组和 EC2 实例资源。IAM 角色不是特定于区域的。

Amazon GameLift Servers FleetIQ 直接管理以下资源，并对其拥有直接权限。
+ **Amazon GameLift Servers 游戏服务器组。**游戏服务器组包含配置设置，这些设置定义了如何Amazon GameLift ServersFleetIQ与相应的 Auto Scaling 组配合使用以提供低成本的游戏托管。游戏服务器组是特定于区域的。当您在某个区域中创建游戏服务器组时，系统会在同一区域的 AWS 账户中自动创建一个新的 Auto Scaling 组。游戏服务器组与 Auto Scaling 组关联，并且有权（通过担任 IAM 角色）管理和修改其部分设置。游戏服务器组是一个长寿命的资源；开发人员应预期很少创建它们。游戏服务器组也是托管在自动扩缩组中的实例上并注册到 Amazon GameLift Servers FleetIQ 的游戏服务器的功能分组资源。
+ **Amazon GameLift Servers 游戏服务器。**游戏服务器资源表示正在与 Amazon GameLift Servers FleetIQ 游戏服务器组关联的实例上运行的游戏执行。当游戏服务器注册 Amazon GameLift Servers FleetIQ 并标识它所属的游戏服务器组时，会创建此资源。Amazon GameLift Servers FleetIQ 跟踪每个已注册游戏服务器的利用状态和认领状态，这使其能够监控游戏服务器的可用性。游戏服务器特定于区域，因为它们与特定于区域的游戏服务器组相关联。当您的游戏请求新的游戏服务器时，它会指定游戏服务器组和区域。

这些资源是通过 Amazon GameLift Servers FleetIQ 资源创建的。它们在您的 AWS 账户中创建，您对它们具有完全控制权限。
+ **Amazon EC2 自动扩缩组。**Auto Scaling 组启动和管理 EC2 实例集合，并自动扩展组容量。使用 Amazon GameLift ServersFleetIQ，游戏服务器组和 Auto Scaling 组之间存在 one-to-one关系。虽然您可以更新自动扩缩组的所有设置，但 Amazon GameLift Servers FleetIQ 作为其逻辑的一部分定期覆盖和更新某些设置，以平衡竞价型实例来实现游戏托管可行性。有关更多信息，请参阅 [ AutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html)*Amazon EC2 Auto Scaling 用户指南*。Auto Scaling 组是特定于区域的；它们创建在与游戏服务器组相同的区域中。
+ **Amazon EC2 实例。**实例是云中的虚拟服务器。实例类型具有指定计算、内存、磁盘和网络资源的特定硬件配置。它们通常由具有 AMI 的自动扩缩组启动。实例可以是 Spot 或按需实例，具体取决于可用性。通过使用 Amazon GameLift Servers FleetIQ，实例可以运行一个或多个游戏服务器进程，每个进程都可以托管多个游戏会话。实例特定于区域，因为它们与特定于区域的自动扩缩组相关联。

# Amazon GameLift Servers FleetIQ 游戏架构
<a name="gsg-architecture"></a>

## 补充本地托管
<a name="gsg-architecture-on-premises"></a>

Amazon GameLift Servers FleetIQ 旨在重复使用您现有的游戏后端，包括您可能已经具备的任何玩家地理位置 IP 路由、对战或游戏大厅服务。以下示例说明 Amazon GameLift Servers FleetIQ 如何适合现有的本地部署。

**Example**  
在此示例中，游戏托管最初由四个专有数据中心处理，以便在北美和欧洲托管玩家。根据它们的大致实际位置，玩家会被路由到两个区域匹配器中的一个。匹配器会按技能和延迟对玩家进行分组，然后将他们放到附近的游戏服务器上，以最大限度地减少滞后。  

![\[本地游戏架构\]](http://docs.aws.amazon.com/zh_cn/gameliftservers/latest/fleetiqguide/images/gsg-architecture-onprem.png)

游戏开发人员希望用 Amazon GameLift Servers FleetIQ 提供的服务器替换他们的北美游戏服务器。首先，他们会对游戏服务器进行次要更新以便将其与 Amazon GameLift Servers FleetIQ 一起使用，然后创建亚马逊机器映像（AMI）。此映像将安装在为游戏部署的每个 EC2 实例上。该映像包含游戏服务器、依赖关系以及为玩家运行游戏会话所需的任何其他内容。  
AMI 准备就绪后，开发人员创建了两个 Amazon GameLift Servers FleetIQ 游戏服务器组，每个 AWS 北美地区一个（`us-east-1` 和 `us-west-2)`）。开发人员传入启动模板（提供 AMI）、所需实例类型列表以及该组的其他配置设置。所需实例类型的列表告知 Amazon GameLift Servers FleetIQ，在搜索适用于游戏托管的竞价型实例时要使用哪些类型。  
最后，开发人员将 AWS 开发工具包与 Amazon GameLift Servers FleetIQ 集成到其北美配对器中，当一组新玩家需要服务器容量进行游戏会话时调用 Amazon GameLift Servers FleetIQ。Amazon GameLift Servers FleetIQ 使用可用的游戏服务器找到竞价型实例，为玩家保留该实例，并提供服务器连接信息。玩家连接到服务器，玩游戏，然后断开连接。要开始一个新的游戏，玩家重新进入匹配，这会提示 Amazon GameLift Servers FleetIQ 查找另一个可用的游戏服务器。每个新的游戏请求都会触发 Amazon GameLift Servers FleetIQ 搜索和选择中断几率低的游戏服务器。因此，即使竞价型实例的可用性随着时间推移而波动，Amazon GameLift Servers FleetIQ 也会不断将玩家从不可用于游戏托管的游戏服务器重定向到别处。  

![\[本地 + Amazon GameLift Servers FleetIQ 游戏架构\]](http://docs.aws.amazon.com/zh_cn/gameliftservers/latest/fleetiqguide/images/gsg-architecture-onprem-gamelift.png)


# 游戏服务器组的生命周期
<a name="gsg-howitworks-lifecycle-gameservergroup"></a>

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

![\[游戏服务器组资源的生命周期。\]](http://docs.aws.amazon.com/zh_cn/gameliftservers/latest/fleetiqguide/images/gsg-lifecycles-gameservergroup.png)

+ 您可以通过调用 Amazon GameLift Servers API `CreateGameServerGroup()` 并传入 EC2 启动模板和配置设置来创建游戏服务器组。为响应呼叫，将创建一个新的游戏服务器组并将其置于 NEW（新）状态。
+ Amazon GameLift Servers FleetIQ 激活异步激活工作流，将游戏服务器组状态转换为 ACTIVATING。该工作流程启动对基础资源的创建，包括 Amazon EC2 Auto Scaling 组和具有提供的 AMI 的 EC2 实例。
  + 如果预配置因任何原因失败，游戏服务器组将被置于 ERROR（错误）状态。要获取其他错误信息以帮助调试故障原因，请在处于错误状态的游戏服务器组上调用 `DescribeGameServerGroup()`。
  + 如果预配置成功，则游戏服务器组将转换为 ACTIVE（活动）状态。此时，将通过注册到 Amazon GameLift Servers FleetIQ 的游戏服务器启动实例。定期评估组的实例类型以确定游戏托管可行性，并根据需要实现平衡。Amazon GameLift Servers FleetIQ 还会跟踪组中活动游戏服务器的状态，并响应游戏服务器的请求。
+ 可以通过使用组标识符调用 `DeleteGameServerGroup()` 来删除游戏服务器组。此操作将游戏服务器组置于 DELETE\$1SCHEDULED 状态。只能计划删除处于 ACTIVE（活动”）或 ERROR（错误）状态的游戏服务器组。
+ Amazon GameLift Servers FleetIQ 激活异步停用工作流程以响应 DELETE\$1SCHEDULED 状态，从而将游戏服务器组状态转换为 DELETING。您可以选择仅删除游戏服务器组，或者同时删除游戏服务器组和关联的自动扩缩组。
  + 如果停用因任何原因失败，游戏服务器组将进入 ERROR（错误）状态。要获取其他错误信息以帮助调试故障原因，请在处于错误状态的游戏服务器组上调用 `DescribeGameServerGroup()`。
  + 如果停用成功，游戏服务器组将转换为 DELETED（已删除）状态。

# 游戏服务器的生命周期
<a name="gsg-howitworks-lifecycle-gameserver"></a>

使用 Amazon GameLift Servers FleetIQ，游戏服务器会经历以下生命周期，包括预调配和状态更新。游戏服务器预计是短寿命的资源。最佳实操是，游戏服务器应在游戏会话结束后注销，而不是重新用于其他游戏会话。这种方法有助于确保可用的游戏服务器始终在可用于游戏托管的成本最低的资源上运行。
+ 当在Amazon GameLift ServersFleetIQ关联的 Auto Scaling 组中的实例上运行的游戏服务器进程调用 Amazon GameLift Servers API `RegisterGameServer()` 通知它已准备好托管玩家和游戏玩法时 Amazon GameLift ServersFleetIQ，就会创建游戏服务器资源。游戏服务器具有两种状态来跟踪其当前可用性：
  + 利用状态跟踪游戏服务器当前是否支持玩游戏。此状态最初设置为 AVAILABLE（可用），表示它已准备好接受新的游戏。一旦游戏服务器被游戏占用，此状态就会设置为 UTILIZED（已利用）。
  + 认领状态可跟踪游戏服务器是否被认领用于即将开始的游戏。处于 CLAIMED（已认领）状态的游戏服务器表示它已被游戏客户端（或游戏服务，如匹配器）暂时保留。此状态可防止 Amazon GameLift Servers FleetIQ 向多个请求者提供相同的游戏服务器。认领状态为空的游戏服务器可供认领。
+ 下图说明游戏服务器的利用状态和认领状态在其生命周期内如何变化。  
![\[游戏服务器资源的生命周期。\]](http://docs.aws.amazon.com/zh_cn/gameliftservers/latest/fleetiqguide/images/gsg-lifecycles-gameserver.png)
  + **步骤 1：**一个游戏服务器组有六个已注册的游戏服务器。其中四个的利用状态为 AVAILABLE（A、B、C 和 D），两个目前处于 UTILIZED 状态（E 和 F）。
  + **步骤 2：**游戏客户端或匹配系统调用 Amazon GameLift Servers API `ClaimGameServer()` 来请求新的游戏服务器。此请求提示 Amazon GameLift Servers FleetIQ 搜索可用的游戏服务器（D），并将认领状态设置为 CLAIMED 60 秒。Amazon GameLift Servers FleetIQ 使用游戏服务器的连接信息（IP 地址和端口）以及其他可选的游戏特定数据响应请求。由于尚未在游戏服务器上开始玩游戏，因此它的利用状态仍然保持为 AVAILABLE，但无法通过其他请求来认领。
  + **步骤 3a：**使用提供的连接信息，游戏客户端可以连接到游戏服务器并启动游戏。必须在 60 秒内触发游戏服务器 (D)，才能通过调用 Amazon GameLift Servers `UpdateGameServer()` API 将其利用状态更改为 UTILIZED（已利用）。
  + **步骤 3b：**如果游戏服务器的利用状态在 60 秒后未更新，认领计时器将过期，认领状态将重置为空白。游戏服务器 (D) 将返回到可用和未认领的游戏服务器池中。
+ 游戏服务器上的游戏完成并且玩家断开连接后，游戏服务器资源将被移除。在关闭之前，游戏服务器进程调用 Amazon GameLift Servers API `DeregisterGameServer()`，以通知 Amazon GameLift Servers FleetIQ 其离开游戏服务器组的游戏服务器池。

# 竞价平衡过程
<a name="gsg-lifecycle-rebalance"></a>

Amazon GameLift ServersFleetIQ定期平衡具有竞价型实例的 Auto Scaling 组中的实例。对于使用 ON\$1DEMAND\$1ONLY 平衡策略或没有任何活动实例的游戏服务器组，此过程不处于活动状态。

竞价平衡有两个关键目标：
+ 仅使用对游戏托管具有高可行性的竞价型实例类型持续刷新组。
+ 使用多种可行的实例类型（在可能时），以减少游戏服务器意外中断的影响

 Amazon GameLift Servers FleetIQ 通过评估组的实例类型并删除更可能导致游戏服务器中断的实例来平衡。为了避免在平衡过程中终止具有活动游戏的实例，最好是为生产中的游戏服务器组启用游戏服务器保护。

**Example**  
以下示例说明自动扩缩组中的实例如何受到竞价平衡的影响。  

![\[Amazon GameLift Servers FleetIQ 平衡期间自动扩缩组的生命周期。\]](http://docs.aws.amazon.com/zh_cn/gameliftservers/latest/fleetiqguide/images/gsg-lifecycles-rebalancing.png)

+ **步骤 1：**通过游戏服务器组，关联的自动扩缩组设置为在启用游戏服务器保护的情况下启动类型为 m4.large、c4.large 和 c5.large 的实例。自动扩缩组已启动一个平衡集合，其中包含每种类型的两个竞价型实例。四个实例至少有一个处于 UTILIZED（被利用）状态的游戏服务器（显示为虚线边框），而两个实例当前不支持玩游戏。
+ **步骤 2：**Amazon GameLift Servers FleetIQ 评估所有三种实例类型的当前游戏托管可行性。评估确定 c4.large 实例类型存在不可接受的游戏服务器中断的可能性。 Amazon GameLift ServersFleetIQ立即更新 Auto Scaling 组配置，暂时将 c4.large 从实例类型列表中删除，从而防止启动其他 c4.large 实例。
+ **步骤 3：**Amazon GameLift Servers FleetIQ 确定类型 c4.large 的现有实例，并采取措施将它们从组中删除。作为第一步，在 c4.large 实例上运行的所有游戏服务器都标记为*耗尽*。只有在没有其他游戏服务器可用的情况下，才能作为最后手段认领耗尽实例上的游戏服务器。此外，将触发具有耗尽实例的自动扩缩组以启动新实例来替换它们。
+ **步骤 4：**随着新的可行实例上线，自动扩缩组将终止耗尽的实例。这种替换可确保该组的所需容量得到保持。要终止的第一个实例是没有已利用的游戏服务器且关闭了游戏服务器保护的 c4.large 实例。它被替换为一个新的 c5.large 实例。
+ **第 5 步。**对于具有游戏服务器保护的耗尽实例而言，在其游戏服务器支持玩游戏时，这些实例将继续运行。游戏结束后，一旦新的 m4.large 实例启动以取代剩余的 c5.large 实例的位置，后者就会终止。
由于此过程，自动扩缩组将保持其所需容量，同时此组将从使用三种实例类型平衡为使用两种。Amazon GameLift Servers FleetIQ 继续评估游戏托管可行性的实例类型的原始列表。当 c4.large 再次被视为可行的实例类型时，将更新自动扩缩组以包含全部三种实例类型。该组随着时间推移自然地平衡。

# Amazon GameLift Servers FleetIQ 最佳实践
<a name="gsg-best-practices"></a>

Amazon GameLift ServersFleetIQ是一个低级逻辑层，可帮助您管理用于游戏托管的 Amazon EC2 资源。特别是，Amazon GameLift Servers FleetIQ 通过最大限度地减少游戏会话中断的可能性，优化了适用于游戏托管的竞价型实例的使用。它还提供基本的游戏托管功能，以跟踪可用的游戏服务器，并将游戏路由到低成本、高可行性的游戏服务器。

Amazon GameLift Servers FleetIQ 作为独立功能，不提供随完全托管式 Amazon GameLift Servers 解决方案一起提供的高级功能，后者也使用 FleetIQ 来尽可能降低托管成本。如果您需要对战、基于延迟的玩家路由、游戏会话和玩家会话管理以及版本控制等功能，请查看 Amazon GameLift Servers 解决方案。

以下是一些可以帮助您从 Amazon GameLift Servers FleetIQ 中获得最大利益的最佳实践。
+ **将 Amazon GameLift Servers FleetIQ 用于基于会话的游戏。**当 Amazon GameLift Servers FleetIQ 不断地将玩家引导到最不可能出现游戏会话中断的实例时，其效果最佳。保持长寿命的会话会干扰 Amazon GameLift Servers FleetIQ 重新平衡过程，从而增加游戏会话可能被中断的几率。理想的工作流程是让玩家从对战（或服务器选择）到进入游戏。游戏结束后，玩家会返回到对战，并路由到新实例上的另一个游戏服务器。我们建议将 Amazon GameLift Servers FleetIQ 用于会话时间少于两小时的游戏。
+ **提供多种实例类型以供选择。**设置游戏服务器组时，您提供要使用的实例类型列表。您包含的实例类型越多，Amazon GameLift Servers FleetIQ 使用高可行的竞价型实例进行游戏托管的灵活性就越大。例如，您可以列出同一个实例系列中的多种大小（c5.large、c5.xlarge、c5.2xlarge、c5.4xlarge）。对于大型实例，您可以在每个实例上运行更多的游戏服务器，从而可能降低成本。对于小型实例，自动缩放可以更快地响应玩家需求的变化。请记住，所需实例类型列表未按优先顺序排列，自动扩缩组将使用可行实例类型的平衡来保持该组的弹性。
+ **在所有实例类型上测试您的游戏。**确保游戏服务器在为游戏服务器组配置的每个实例类型上正常运行。
+ **使用实例容量加权。**如果您将游戏服务器组配置为使用某个实例大小范围（如 c5.2xlarge、c5.4xlarge、c5.12xlarge），请包括每种实例类型的容量加权信息。有关更多信息，请参阅 Amazon Auto Scalin [g *用户指南中的 Amazon A EC2 ut EC2 o Sc* aling 的实例权重](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-weighting.html)。
+ **使用 Amazon GameLift Servers FleetIQ 放置您的游戏会话。**使用游戏服务器放置玩家组时，请使用 Amazon GameLift Servers API `ClaimGameServer()`。Amazon GameLift Servers FleetIQ 避免将玩家置于游戏会话中断几率较高的实例上。
+ **向报告游戏服务器状态Amazon GameLift ServersFleetIQ。**使用 Amazon GameLift Servers API `UpdateGameServer()` 定期报告服务器运行状况和利用状态。保持准确的游戏服务器状态有助于 Amazon GameLift Servers FleetIQ 更高效地放置游戏。它还有助于避免在竞价平衡活动期间终止具有活动游戏的实例。
+ **设置自动扩缩策略。**您可以创建目标跟踪扩展策略，以根据玩家利用情况和预期需求维护您的主机容量。Amazon GameLift Servers FleetIQ 指标 `PercentUtilizedGameServers` 用于衡量当前正在使用的托管容量。大多数游戏希望维护未使用的游戏服务器的缓冲区，以便新玩家能够快速进入游戏。您可以创建一个保持特定缓冲区大小的扩展策略，随着玩家需求的波动添加或删除实例。有关更多信息，请参阅 Amazon A EC2 uto [Scaling 用户指南中的目标跟踪扩展策略](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html)。
+ **在开发和生产环境中使用不同的 AWS 帐户。**跨账户将您的开发配置与生产配置分开，可以减少影响现场玩家的配置错误风险。
+ **为使用中的游戏服务器组启用游戏会话保护。**为了保护玩家，请打开游戏会话保护，防止活动游戏会话因扩展或平衡活动而提前终止。
+ **在与游戏集成 EC2 之前，请先对其进行测试Amazon GameLift ServersFleetIQ。**我们建议您先启动并运行游戏 EC2 并微调配置。然后，您可以使用相同的启动模板和 AMI 创建游戏服务器组。

  如果您使用的是 Kubernetes，我们建议您先将标准 EC2 实例添加到 Kubernetes 集群，然后使用您为 Kubernetes 集群中的工作节点创建的启动模板创建游戏服务器组。如果您使用的是 EKS，请单独创建 EKS 集群和游戏服务器组。对于游戏服务器组，请将 EKS 优化的 AMI 与合适的用户数据以及用于 EKS 集成的启动模板配置结合使用。在 [Amazon EKS 优化 Linux AMI](https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html) 指南中可查看有关 EKS 工作线程节点和 EKS 优化 AMI 的更多信息。
+ **使用游戏服务器组平衡策略 `ON_DEMAND_ONLY` 获得可靠的游戏服务器可用性。**此平衡策略生效后，将不使用竞价型实例。这是一个有用的工具，可以确保服务器在您最需要的时候（例如在特征发布或其他特殊活动期间）的可用性。您可以根据需要将游戏服务器组从竞价型策略切换到按需型策略。

另请查看以下 AWS 最佳实践：
+ [Amazon 的最佳实践 EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-best-practices.html)
+ [Amazon A EC2 uto Scaling 的最佳实践](https://docs.aws.amazon.com/autoscaling/ec2/userguide/gs-best-practices.html)

## Amazon GameLift ServersfeaturesFleetIQ
<a name="gsg-intro-features"></a>
+ **优化的竞价平衡。**Amazon GameLift Servers FleetIQ 会定期评估您的实例类型，并替换由于游戏会话中断可能性较高而视为不可用的竞价型实例。当您的 EC2 自动扩缩组停用旧实例并启动新实例时，该组将持续刷新当前可用于游戏托管的实例类型。
+ **最佳玩家路线。** Amazon GameLift ServersFleetIQAPI 将新游戏会话引导到最不可能中断且最有弹性的竞价型实例。此外，游戏会话也被打包到较少的实例上，这改进了 EC2 自动扩缩组缩减不必要的资源并降低成本的能力。
+ **根据玩家使用情况自动缩放。** Amazon GameLift ServersFleetIQ以 Amazon CloudWatch 指标形式发布游戏服务器使用率数据。您可以使用这些指标来自动扩展您的可用托管资源，以跟踪实际玩家需求并降低托管成本。
+ **直接管理 Amazon EC2 实例。**保持对您 AWS 账户中的 EC2 实例和 EC2 自动扩缩组的完全控制。这意味着您可以设置实例启动模板、维护 EC2 Auto Scaling 组配置以及与其他 AWS 服务集成。作为其竞价平衡活动的一部分，Amazon GameLift ServersFleetIQ定期更新某些 EC2 Auto Scaling 组属性。您可以根据需要暂时覆盖这些设置或暂停 Amazon GameLift Servers FleetIQ 活动。
+ **支持多种游戏服务器可执行格式。**Amazon GameLift Servers FleetIQ 支持当前在 Amazon EC2 上运行的所有格式，包括 Windows、Linux、容器和 Kubernetes。有关支持的操作系统和运行时的列表， FAQs请参阅 [Amazon EC2](https://aws.amazon.com/ec2/faqs/)。
+ **多种类型的托管资源。**借助 Amazon GameLift Servers FleetIQ，您可以访问用于托管游戏服务器的大量实例类型。（可用性因 AWS 地区而异。） 这意味着，您可以将您的游戏服务器与适当的 CPU、内存、存储和网络容量组合进行配对，以便为您的玩家提供最佳的游戏体验。
+ **覆盖全球。**Amazon GameLift Servers FleetIQ 在 15 个区域提供，包括中国。这种覆盖范围意味着玩家无论身处何处都能够以最小的游戏延迟访问您提供的游戏服务器。有关区域的完整列表，请参阅《AWS 一般参考》**中的 [Amazon GameLift Servers 端点和限额](https://docs.aws.amazon.com/general/latest/gr/gamelift.html)。

## 的定价 Amazon GameLift Servers FleetIQ
<a name="gsg-intro-pricing"></a>

Amazon GameLift Servers 按使用时长对实例收费，按传输的数据量收取带宽费用。有关 Amazon GameLift Servers 的费用和价格的完整列表，请参阅 [Amazon GameLift Servers 定价](https://aws.amazon.com/gamelift/servers/pricing)。

有关计算通过 Amazon GameLift Servers 托管游戏或进行对战的成本的信息，请参阅[生成 Amazon GameLift Servers 定价估算值](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/gamelift-calculator.html)，其中描述了如何使用 [AWS 定价计算器](https://calculator.aws/#/createCalculator/GameLift)。