创建 Amazon GameLift 托管式 EC2 实例集
本主题介绍如何创建 Amazon GameLift 托管式 EC2 实例集。托管式实例集使用针对多人游戏托管进行了优化的 Amazon Elastic Compute Cloud(Amazon EC2)计算实例。您可以创建托管式实例集,在全球范围内将计算部署到 Amazon GameLift 支持的 Amazon Web Services 区域和 Local Zones。
当您创建新的托管式 EC2 实例集时,实例集创建过程会立即开始。当 Amazon GameLift 准备您的游戏服务器生成包、在生成包已安装的情况下部署 EC2 实例以及在每个实例上启动游戏服务器时,托管式实例集会经历几个阶段。您可以在控制台中或使用 Amazon Command Line Interface(Amazon CLI)监控实例集的状态。当实例集进入 ACTIVE
状态时,即表示已准备好托管游戏会话。有关托管式实例集创建的更多信息,请参阅以下主题:
创建托管式 EC2 实例集
使用 Amazon GameLift 控制台或 Amazon Command Line Interface(Amazon CLI)创建托管式 EC2 实例集。
- Console
-
创建托管式 EC2 实例集
-
在 Amazon GameLift 控制台
的导航窗格中,选择实例集。 -
在实例集页面上,选择创建实例集。
-
选择托管 EC2。
-
在实例集详细信息页面上,执行以下操作:
-
对于名称,输入新名称。我们建议将实例集类型(竞价型或按需型)包含在实例集名称中。这使得在查看实例集列表时可以更轻松地识别实例集类型。
-
在描述中,提供对实例集的简短描述。
-
对于二进制类型,选择构建或脚本来定义 Amazon GameLift 部署到此实例集的游戏服务器类型。
-
从已上传的脚本或构建的下拉列表中选择脚本或构建。
-
-
(可选)在其他详细信息下显示以下内容:
-
对于实例角色,请指定一个 IAM 角色,该角色授权游戏构建中的应用程序访问您账户中的其他 Amazon 资源。有关更多信息,请参阅与您的实例集中的其他 Amazon 资源进行通信。要创建具有实例角色的实例集,您的账户必须拥有 IAM
PassRole
权限。有关更多信息,请参阅Amazon GameLift 的 IAM 权限示例。无法在创建实例集后更新这些设置。
-
对于指标组,输入新的或现有实例集指标组的名称。可以通过将多个实例集添加到同一个指标组来聚合指标。
实例集创建后,您无法更新指标组。
-
-
选择下一步。
-
在选择位置页面上,选择一个或多个其他远程位置来部署实例。系统会根据您访问控制台的区域自动选择主区域。如果您选择其他位置,则实例集实例也将部署在这些位置。
重要
要使用默认情况下未启用的区域,请在您的 Amazon Web Services 账户中将其启用。
如果您在 2022 年 2 月 28 日之前创建的未启用区域的实例集不受影响。
要创建新的多位置实例集或更新现有的多位置实例集,请先启用您选择使用的任意区域。
有关默认情况下未启用的区域以及如何启用这些区域的更多信息,请参阅《Amazon Web Services 一般参考》中的管理 Amazon Web Services 区域。
-
选择下一步。
-
在定义实例详细信息页面上,选择
此实例集的按需型或竞价型实例。有关实例集类型的更多信息,请参阅按需型实例和竞价型实例。
从筛选架构菜单中选择 x64 或 Arm。
注意
Graviton Arm 实例需要基于 Linux 操作系统的 Amazon GameLift 服务器构建。C++ 和 C# 需要服务器软件开发工具包 5.1.1 或更高版本。Go 需要服务器软件开发工具包 5.0 或更高版本。这些实例不为 Amazon Linux 2023 (AL2023) 或 Amazon Linux 2(AL2)上安装 Mono 提供开箱即用的支持。
有关 Amazon EC2 Arm 架构的信息,请参阅 Amazon Graviton 处理器
和 Amazon EC2 实例类型 。
有关 Amazon GameLift 支持的实例类型的信息,请参阅 CreateFleet() 请求参数下的
EC2InstanceType
值。 -
从列表中选择 Amazon EC2 实例类型 有关选择实例类型的更多信息,请参阅实例类型。创建实例集后无法更改实例类型。
-
选择下一步。
-
在配置运行时系统页面的运行时配置下,执行以下操作:
-
对于启动路径,键入您的构建或脚本中游戏可执行文件的路径。在 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 对并发服务器进程数量的限制
。 对每个实例的并发服务器进程数的限制应用到所有配置的并发进程总数上。如果配置实例集超出限制,实例集无法激活。
-
-
在游戏会话激活下,提供在此实例集中的实例上激活新游戏会话的限制:
-
对于最大并发游戏会话激活,输入实例中同时激活的游戏会话的数量。当启动多个新的游戏会话可能会对在实例上运行的其他游戏会话造成性能影响时,此限制非常有用。
-
对于新激活超时,输入等待会话激活的时长。如果游戏会话在超时之前没有变为
ACTIVE
状态,Amazon GameLift 将终止游戏会话激活。
-
-
(可选)在EC2 端口设置下,执行以下操作:
-
选择添加端口设置以定义连接到部署在此实例集上的服务器进程的入站流量的访问权限。
-
对于类型,选择自定义 TCP 或自定义 UDP。
-
对于端口范围,输入允许入站连接的端口号范围。端口范围必须使用格式
nnnnn[-nnnnn]
,值介于 1026 和 60000 之间。示例:1500
或1500-20000
。 -
对于 IP 地址范围,输入 IP 地址的范围。使用 CIDR 表示法。示例:
0.0.0.0/0
(此示例允许尝试连接的任何人的访问。)
-
-
(可选)在游戏会话资源设置下,执行以下操作:
-
对于游戏扩展保护策略,请打开或关闭扩展保护。即使具有保护的实例托管了活动游戏会话,在缩减事件中 Amazon GameLift 将不会终止该实例。
-
对于资源创建限制,输入策略期限内玩家可以创建的最大游戏会话数。
-
-
选择下一步。
-
(可选)通过输入键和值对向构建添加标签。选择下一步继续查看实例集创建。
-
选择创建。Amazon GameLift 会分配一个 ID 至新实例集并开始实例集激活过程。您可以在实例集页面上跟踪新实例集的状态。
您可以随时更新实例集的元数据和配置,无论实例集状态如何。有关更多信息,请参阅更新 Amazon GameLift 实例集配置。您能在实例集进入 ACTIVE 状态之后更新实例集容量。有关更多信息,请参阅利用 Amazon GameLift 扩展游戏托管容量。您还可以添加或删除远程位置。
-
- Amazon CLI
-
使用
create-fleet
命令创建计算类型 EC2
的实例集。Amazon GameLift 会在当前的默认 Amazon Web Services 区域中创建实例集资源(您也可以添加 --region 标签来指定其他 Amazon Web Services 区域)。创建最小托管式实例集
以下示例请求创建了一个新实例集,该实例集具有执行以下操作所需的最低设置:部署一个实例集,其中包含游戏客户端可以连接到的正在运行的游戏服务器。新实例集具有以下特征:
-
它指定了已上传到 Amazon GameLift 并处于
READY
状态的游戏服务器生成包。 -
它使用 c5.large 按需型实例,这种实例的操作系统与所选游戏生成包匹配。
-
它将实例集的主 Amazon Web Services 区域设置为
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 按需型实例,这种实例的操作系统与所选游戏生成包匹配。
-
它将实例集的主 Amazon Web Services 区域设置为
us-west-2
,并将实例部署到主区域和一个偏远位置sa-east-1
。 -
根据运行时配置:
-
实例集中的每个计算运行 10 个具有相同启动参数的游戏服务器进程,这意味着每个计算最多可以同时托管 10 个游戏会话。
-
在每个计算上,仅允许同时激活两个游戏会话。激活的游戏会话必须在 300 秒(5 分钟)内准备好托管玩家,否则会被终止。
-
-
玩家可以使用范围为
33435 to 33535
的端口连接到游戏服务器。 -
实例集中的所有游戏会话都会开启游戏会话保护。
-
单个玩家在 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 命令跟踪实例集的状态并查看其他实例集信息:
您可以使用以下命令,根据需要更改实例集的容量和其他配置设置:
-