创建 Amazon GameLift 托管式 EC2 实例集
本主题介绍如何创建 Amazon GameLift 托管式 EC2 实例集。托管式实例集使用针对多人游戏托管进行了优化的 Amazon Elastic Compute Cloud(Amazon EC2)计算实例。您可以创建托管式实例集,在全球范围内将计算部署到 Amazon GameLift 支持的 AWS 区域和 Local Zones。
当您创建新的托管式 EC2 实例集时,实例集创建过程会立即开始。当 Amazon GameLift 准备您的游戏服务器生成包、在生成包已安装的情况下部署 EC2 实例以及在每个实例上启动游戏服务器时,托管式实例集会经历几个阶段。您可以在控制台中或使用 AWS Command Line Interface(AWS CLI)监控实例集的状态。当实例集进入 ACTIVE
状态时,即表示已准备好托管游戏会话。有关托管式实例集创建的更多信息,请参阅以下主题:
创建托管式 EC2 实例集
使用 Amazon GameLift 控制台或 AWS Command Line Interface(AWS CLI)创建托管式 EC2 实例集。
- Console
-
在 Amazon GameLift 控制台
中,使用导航窗格打开实例集页面。选择创建实例集以启动实例集创建工作流程。 - 步骤 1 选择计算类型
选择托管式 EC2 选项,然后选择下一步。
- 步骤 2 定义实例集详细信息
-
在此步骤中,指定一些实例集范围的设置。
对于最低实例集配置:
-
提供实例集名称。
-
选择二进制类型并指定上传的生成包或脚本。
-
跳过有关其他详细信息和标签的部分。
-
填写实例集详细信息部分:
-
输入实例集名称。我们建议使用实例集命名模式,以便于在查看实例集列表时识别实例集类型。
-
提供对实例集的简短描述。
-
对于二进制类型,请选择生成包以指示您要部署自定义游戏服务器生成包;如果您要将实时服务器部署到此实例集,则选择脚本。从下拉列表中选择上传的生成包或脚本。
-
-
(可选)根据需要设置其他详细信息。
-
如果您的游戏服务器可执行文件需要访问您账户中的其他 AWS 资源,请指定具有必要权限的 IAM 实例角色。有关更多信息,包括如何授权其他服务器端应用程序(如 CloudWatch 代理),请参阅与您的实例集中的其他 AWS 资源进行通信。此设置在您创建实例集后无法更改。
您必须先创建角色,然后才能创建使用它的实例集。此外,要创建具有实例角色的实例集,您的 AWS 用户必须具有 IAM
PassRole
权限(请参阅 Amazon GameLift 的 IAM 权限示例)。 -
启用生成 TLS 证书选项,为您的游戏设置身份验证和加密,游戏客户端会使用此证书在连接时对游戏服务器进行身份验证,以及加密所有客户端/服务器通信。对于启用 TLS 的实例集中的每个实例,Amazon GameLift 还使用证书创建一个新的 DNS 条目。此设置在您创建实例集后无法更改。
-
如果要合并此实例集和其他实例集的指标数据,请指定指标组名称。对要合并在一起的所有实例集使用相同的指标组名称。查看指标组的指标以查看聚合数据。
-
-
(可选)向实例集资源添加标签。每个标签都包含定义的一个键和一个可选值。为您希望以有用的方式(如按用途、所有者或环境)分类的 AWS 资源分配标签。为每个要添加的标签选择添加新标签。
-
选择下一步以继续工作流程。
-
- 步骤 3 定义实例详细信息
-
在此步骤中,指定要使用的托管资源的类型以及要部署它们的位置。通过选择多个位置,您可以将游戏服务器部署到更广的地理位置,使它们更接近您的玩家并最大限度地降低延迟。并非所有 EC2 实例类型都在所有位置可用。
对于最低实例集配置:
-
请勿添加偏远位置。
-
将实例集类型设置为“按需型”。竞价型实例集需要额外的设置工作。
-
将实例类型设置为“c5.large”。这种常用实例类型在所有 AWS 区域均可用。
-
在实例部署中,指定实例集的位置和类型。
-
选择您要部署实例集实例的一个或多个其他位置。这些偏远位置将添加到实例集的主位置(已预先选择),即您创建此实例集的 AWS 区域。您可以从 Amazon GameLift 支持的所有 AWS 区域和 Local Zones 中选择偏远位置。
要了解有关受支持位置的更多信息,包括如何使用默认情况下未启用的 AWS 区域,请参阅用于托管式托管的 Amazon GameLift 服务位置。另请查看 Amazon GameLift 针对每个实例集的位置配额
。 -
选择对此实例集使用按需型实例或竞价型实例。有关实例集类型的更多信息,请参阅按需型实例和竞价型实例。
-
-
选择符合您的需求且在所有选定位置均可用的 Amazon EC2 实例配置。此列表是根据您当前选择的位置和实例集类型进行筛选的。您可以按其他因素(如实例类型系列和架构)对其进行进一步筛选。创建实例集后无法更改实例类型。
某些位置的实例类型选择有限。如果您首选的实例类型并非在所有位置都可用,请选择位置可用性值以查看完整详细信息。为了纳入所有位置,您可能需要创建具有不同实例类型的单独实例集。
有关选择实例类型的更多信息,请参阅实例类型。要了解有关 Amazon EC2 Arm 架构的更多信息,请参阅 AWS Graviton 处理器
和 Amazon EC2 实例类型 。有关 Amazon GameLift 支持的实例类型的完整列表,请参阅 EC2InstanceType( CreateFleet()
)的 API 参考。注意
Graviton Arm 实例需要基于 Linux 操作系统的 Amazon GameLift 服务器生成包。C++ 和 C# 需要服务器软件开发工具包 5.1.1 或更高版本。Go 需要服务器软件开发工具包 5.0 或更高版本。这些实例不为 Amazon Linux 2023(AL2023)或 Amazon Linux 2(AL2)上安装 Mono 提供开箱即用的支持。
-
选择下一步以继续工作流程。
-
- 步骤 4 配置运行时
-
在此步骤中,描述您希望实例集中的每个实例如何运行您的游戏服务器软件。为要在实例上运行的每个可执行文件定义一个单独的服务器进程行项目,并确定要并发运行的服务器进程的数量。在每个实例上打开端口,以允许玩家直接连接到游戏服务器。您可以随时更新这些实例集设置。
对于最低实例集配置:
-
为游戏服务器可执行文件定义一个服务器进程行项目。如果您的游戏服务器需要运行其他进程,请同时为每个进程创建一个定义。
-
对每个行项目使用默认的并发进程数(1)。
-
跳过游戏会话激活设置。
-
指定单个端口号。
-
跳过游戏会话资源设置。
-
创建运行时配置,指示 Amazon GameLift 如何在实例集中的每个实例上运行服务器进程。部署后,您可以随时更改实例集的运行时配置。
-
在生成包中输入可执行文件的启动路径。在 Windows 实例上,游戏服务器可执行文件被构建到路径
C:\game
。在 Linux 实例上,游戏服务器被构建到/local/game
。示例:C:\game\MyGame\server.exe
、/local/game/MyGame/server.exe
或MyRealtimeLaunchScript.js
。 -
输入可选的启动参数以传递给游戏可执行文件。示例:
+sv_port 33435 +start_lobby
。 -
指定要在每个实例上运行的并发进程的数量。对于游戏服务器可执行文件,每个进程可以托管一个游戏会话,因此并发进程决定了实例可以同时托管的游戏会话数量。
查看每个实例的服务器进程的 Amazon GameLift 配额。这些配额适用于所有配置的并发进程总数。如果配置的实例集超出这些配额,实例集将无法激活。
-
-
使用游戏会话激活默认值或为您的游戏自定义该值。如果运行时配置要求每个实例有多个并发游戏服务器进程,这些设置将决定新游戏会话的启动速度。
-
设置最大并发游戏会话激活,以限制实例上正在准备新游戏会话的游戏服务器的数量。当启动多个新游戏会话需要耗费大量资源并可能影响其他正在运行的游戏会话的性能时,此设置非常有用。
-
设置新激活超时,以反映新游戏会话完成激活和报告已准备好托管玩家所需的最长时间。如果游戏会话激活超过此值,Amazon GameLift 将终止游戏会话激活。
-
-
打开 EC2 端口设置以允许入站流量访问实例集上的服务器进程。创建实例集不需要这些设置,但您需要先完成这些设置,然后玩家才能连接到实例集上的游戏会话。
对于每个端口设置,请选择要用于游戏客户端和游戏服务器之间通信的数据传输协议类型。使用 CIDR 表示法提供端口范围(格式为
nnnnn[-nnnnn]
)和 IP 地址范围(例如0.0.0.0/0
,它允许任何人访问)。如果您需要设置多个不连续的范围,请创建多个端口设置。
-
指定可选的游戏会话资源设置。部署后,您可以随时更新这些设置。
-
为实例集中的所有实例开启或关闭游戏扩展保护策略。在缩减事件期间,如果受保护的实例集实例正在托管活动游戏会话,Amazon GameLift 不会终止这些实例。
-
如果要限制一名玩家在指定时间范围内可以创建的游戏会话的数量,请设置最大资源创建限制。
-
-
选择下一步以继续工作流程。
-
- 步骤 5 审核并创建
-
在创建实例集之前,请审查您的设置。尽管有些设置可以在以后更新(请参阅更新 Amazon GameLift 实例集配置),但创建实例集后不允许更改以下设置:
-
计算类型:您无法将托管式 EC2 实例集转换为 Anywhere 实例集。
-
生成包或脚本:要将更新部署到游戏服务器生成包或脚本,您必须创建新实例集。
-
其他选项,包括实例角色和 TLS 证书生成。
-
实例详细信息,包括实例集类型(竞价型或按需型)和 EC2 实例类型。
当您准备好部署新实例集时,请选择创建。Amazon GameLift 会立即开始实例集激活流程,分配一个唯一 ID 并将实例集置于
NEW
状态。在实例集页面中跟踪实例集的进度。查看实例集的详细信息页面,然后转到事件选项卡。您可以在实例集进入 ACTIVE 状态后调整实例集的托管容量。Amazon GameLift 最初在每个实例集位置部署一个包含单个实例的实例集,您可以通过向每个位置添加实例来调整容量。有关更多信息,请参阅利用 Amazon GameLift 扩展游戏托管容量。
-
- AWS CLI
-
使用
create-fleet
命令创建计算类型 EC2
的实例集。Amazon GameLift 会在当前的默认 AWS 区域中创建实例集资源(您也可以添加 --region 标签来指定其他 AWS 区域)。创建最小托管式实例集
以下示例请求创建了一个新实例集,该实例集具有执行以下操作所需的最低设置:部署一个实例集,其中包含游戏客户端可以连接到的正在运行的游戏服务器。新实例集具有以下特征:
-
它指定了已上传到 Amazon GameLift 并处于
READY
状态的游戏服务器生成包。 -
它使用 c5.large 按需型实例,这种实例的操作系统与所选游戏生成包匹配。
-
它将实例集的主 AWS 区域设置为
us-west-2
,并仅将实例部署到该区域。 -
根据运行时配置,实例集中的每个计算运行一个游戏服务器进程,这意味着每个计算一次只能托管一个游戏会话。游戏会话激活超时设置为默认值 300 秒,并且对并发激活的数量没有限制。
-
玩家可以使用单端口设置
33435
连接到游戏服务器。 -
所有其他功能要么已关闭,要么使用默认设置。
aws gamelift create-fleet \ --name MinimalFleet123 \ --description "A basic test fleet" \ --region us-west-2 \ --ec2-instance-type c5.large \ --fleet-type ON_DEMAND \ --build-id build-1111aaaa-22bb-33cc-44dd-5555eeee66ff \ --runtime-configuration "ServerProcesses=[{LaunchPath=C:\game\Bin64.dedicated\MultiplayerSampleProjectLauncher_Server.exe, ConcurrentExecutions=10}]" \ --ec2-inbound-permissions "FromPort=33435,ToPort=33435,IpRange=0.0.0.0/0,Protocol=UDP"
创建完全配置的托管式实例集
以下示例请求创建了一个生产实例集,该实例集具有所有可选功能的设置。新实例集具有以下特征:
-
它指定了已上传到 Amazon GameLift 并处于
READY
状态的游戏服务器生成包。 -
它使用 c5.large 按需型实例,这种实例的操作系统与所选游戏生成包匹配。
-
它将实例集的主 AWS 区域设置为
us-west-2
,并将实例部署到主区域和一个偏远位置sa-east-1
。 -
根据运行时配置:
-
实例集中的每个计算运行 10 个具有相同启动参数的游戏服务器进程,这意味着每个计算最多可以同时托管 10 个游戏会话。
-
在每个计算上,仅允许同时激活两个游戏会话。激活的游戏会话必须在 300 秒(5 分钟)内准备好托管玩家,否则会被终止。
-
-
玩家可以使用范围为
33435 to 33535
的端口连接到游戏服务器。 -
它为游戏客户端和服务器之间的加密通信生成 TLS 证书。
-
实例集中的所有游戏会话都会开启游戏会话保护。
-
单个玩家在 15 分钟内只能创建三个新的游戏会话。
-
此实例集的指标包含在指标组
AMERfleets
中,该指标组(在本例中)汇总了北美、中美和南美的一组实例集的指标。
aws gamelift create-fleet \ --name ProdFleet123 \ --description "A fully configured prod fleet" \ --ec2-instance-type c5.large \ --region us-west-2 \ --locations "Location=sa-east-1" \ --fleet-type ON_DEMAND \ --build-id build-1111aaaa-22bb-33cc-44dd-5555eeee66ff \ --certificate-configuration "CertificateType=GENERATED" \ --runtime-configuration "GameSessionActivationTimeoutSeconds=300, MaxConcurrentGameSessionActivations=2, ServerProcesses=[{LaunchPath=C:\game\Bin64.dedicated\MultiplayerSampleProjectLauncher_Server.exe, Parameters=+sv_port 33435 +start_lobby, ConcurrentExecutions=10}]" \ --new-game-session-protection-policy "FullProtection" \ --resource-creation-limit-policy "NewGameSessionsPerCreator=3, PolicyPeriodInMinutes=15" \ --ec2-inbound-permissions "FromPort=33435,ToPort=33535,IpRange=0.0.0.0/0,Protocol=UDP" \ --metric-groups "AMERfleets"
如果创建实例集请求成功,Amazon GameLift 将返回一组实例集属性,其中包含您请求的配置设置和新的实例集 ID。然后,Amazon GameLift 启动实例集激活流程,并将实例集状态和位置状态设置为新。您可以使用以下 CLI 命令跟踪实例集的状态并查看其他实例集信息:
您可以使用以下命令,根据需要更改实例集的容量和其他配置设置:
-