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