本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建Amazon GameLift Servers托管 EC2 舰队
本主题介绍如何创建Amazon GameLift Servers托管 EC2 舰队。托管队伍使用针对多人游戏托管进行了优化的亚马逊弹性计算云 (Amazon EC2) 计算实例。您可以创建托管队列,将计算部署到全局 AWS 区域 和支持的 Local Zones。Amazon GameLift Servers
创建新的托管 EC2 舰队资源时,会立即启动队列创建的第一阶段。在Amazon GameLift Servers部署 EC2 实例、安装运行时环境和在实例上构建游戏服务器以及开始启动游戏服务器时,托管队列的创建会经历几个阶段。根据您的游戏服务器构建所需的运行时环境,在创建队列时Amazon GameLift Servers部署最新版本的 Amazon 系统映像 (AMI)(队列中所有未来的实例都将使用相同的版本)。您可以在控制台中或使用 AWS Command Line Interface (AWS CLI) 监控队列的状态。当舰队准备好举办游戏会话时,状态会更改为ACTIVE
。有关创建托管队列的更多信息,请参阅以下主题:
注意
作为最佳实践,我们建议每 30 天更换一次舰队,以维护托管游戏服务器的安全 up-to-date运行环境。这需要创建一个新的舰队并将玩家流量迁移到该舰队。有关更多指导,请参阅Amazon GameLift Servers 的安全最佳实践。
创建托管 EC2 车队
使用Amazon GameLift Servers控制台或 AWS Command Line Interface (AWS CLI) 创建托管 EC2 队列。
- Console
-
在Amazon GameLift Servers控制台
中,使用导航窗格打开 Fleets 页面。选择创建实例集以启动实例集创建工作流程。 - 步骤 1 选择计算类型
选择 “托管” EC2 选项,然后选择 “下一步”。
- 步骤 2 定义实例集详细信息
-
在此步骤中,指定一些实例集范围的设置。
对于最低实例集配置:
-
提供实例集名称。
-
选择二进制类型并指定上传的生成包或脚本。
-
跳过有关其他详细信息和标签的部分。
-
填写实例集详细信息部分:
-
输入实例集名称。我们建议使用实例集命名模式,以便于在查看实例集列表时识别实例集类型。
-
提供对实例集的简短描述。
-
对于二进制类型,选择 B uild 以表示您正在部署自定义游戏服务器版本,或者如果您要部署Amazon GameLift ServersRealtime到此队列,请选择或脚本。从下拉列表中选择上传的生成包或脚本。
-
-
(可选)根据需要设置其他详细信息。
-
如果您的游戏服务器可执行文件需要访问您账户中的其他 AWS 资源,请指定具有必要权限的 IAM 实例角色。有关更多信息,包括如何授权其他服务器端应用程序(例如 CloudWatch 代理),请参阅与舰队中的其他 AWS 资源进行沟通。此设置在您创建实例集后无法更改。
您必须先创建角色,然后才能创建使用它的实例集。此外,要创建具有实例角色的实例集,您的 AWS 用户必须具有 IAM
PassRole
权限(请参阅 的 IAM 权限示例 Amazon GameLift Servers)。 -
启用生成 TLS 证书选项,为您的游戏设置身份验证和加密,游戏客户端会使用此证书在连接时对游戏服务器进行身份验证,以及加密所有客户端/服务器通信。对于启用 TLS 的队组中的每个实例,Amazon GameLift Servers 还使用证书创建一个新的 DNS 条目。此设置在您创建实例集后无法更改。
-
如果要合并此实例集和其他实例集的指标数据,请指定指标组名称。对要合并在一起的所有实例集使用相同的指标组名称。查看指标组的指标以查看聚合数据。
-
-
(可选)向实例集资源添加标签。每个标签都包含定义的一个键和一个可选值。为要按用途、所有者或环境等有用方式分类的 AWS 资源分配标签。为每个要添加的标签选择添加新标签。
-
选择下一步以继续工作流程。
-
- 步骤 3 定义实例详细信息
-
在此步骤中,指定要使用的托管资源的类型以及要部署它们的位置。通过选择多个位置,您可以将游戏服务器部署到更广的地理位置,使它们更接近您的玩家并最大限度地降低延迟。并非所有 EC2实例类型在所有地点都可用。
对于最低实例集配置:
-
请勿添加偏远位置。
-
将实例集类型设置为“按需型”。竞价型实例集需要额外的设置工作。
-
将实例类型设置为“c5.large”。这种常用的实例类型在所有版本中都可用 AWS 区域。
-
在实例部署中,指定实例集的位置和类型。
-
选择您要部署实例集实例的一个或多个其他位置。这些远程位置将添加到舰队的主位置(已预先选择),这是您创建此舰队 AWS 区域 的地方。您可以从所有Amazon GameLift Servers支持的 Local Zones AWS 区域 和 Local Zones 中选择远程位置。
要详细了解受支持的地点,包括如何使用默认未启用的位置,Amazon GameLift Servers服务地点请参阅托管主机。 AWS 区域 还要查看每支舰队的位置Amazon GameLift Servers配额
。 -
选择对此实例集使用按需型实例或竞价型实例。有关实例集类型的更多信息,请参阅按需型实例和竞价型实例。
-
-
选择符合您需求且可在所有选定位置使用的 Amazon EC2 实例配置。此列表是根据您当前选择的位置和实例集类型进行筛选的。您可以按其他因素(如实例类型系列和架构)对其进行进一步筛选。创建实例集后无法更改实例类型。
某些位置的实例类型选择有限。如果您首选的实例类型并非在所有位置都可用,请选择位置可用性值以查看完整详细信息。为了纳入所有位置,您可能需要创建具有不同实例类型的单独实例集。
有关选择实例类型的更多信息,请参阅实例类型。要了解有关 Amazon A EC2 rm 架构的更多信息,请参阅 AWS Graviton Processor 和
A mazon EC2 实例类型 。有关支持的实例类型的完整列表Amazon GameLift Servers,请参阅 EC2InstanceType( CreateFleet()
) 的 API 参考。注意
Graviton Arm 实例需要在 Linux 操作系统上构建Amazon GameLift Servers服务器。C++ 和 C# 需要服务器软件开发工具包 5.1.1 或更高版本。Go 需要服务器软件开发工具包 5.0 或更高版本。这些实例不 out-of-the-box支持在亚马逊 Linux 2023 (AL2023) 或亚马逊 Linux 2 (AL2) 上安装 Mono。
-
选择下一步以继续工作流程。
-
- 步骤 4 配置运行时
-
在此步骤中,描述您希望实例集中的每个实例如何运行您的游戏服务器软件。为要在实例上运行的每个可执行文件定义一个单独的服务器进程行项目,并确定要并发运行的服务器进程的数量。在每个实例上打开端口,以允许玩家直接连接到游戏服务器。您可以随时更新这些实例集设置。
对于最低实例集配置:
-
为游戏服务器可执行文件定义一个服务器进程行项目。如果您的游戏服务器需要运行其他进程,请同时为每个进程创建一个定义。
-
对每个行项目使用默认的并发进程数(1)。
-
跳过游戏会话激活设置。
-
指定单个端口号。
-
跳过游戏会话资源设置。
-
创建运行时配置以指导Amazon GameLift Servers如何在队列中的每个实例上运行服务器进程。部署后,您可以随时更改实例集的运行时配置。
-
在生成包中输入可执行文件的启动路径。在 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 Servers配额。这些配额适用于所有配置的并发进程总数。如果配置的实例集超出这些配额,实例集将无法激活。
-
-
使用游戏会话激活默认值或为您的游戏自定义该值。如果运行时配置要求每个实例有多个并发游戏服务器进程,这些设置将决定新游戏会话的启动速度。
-
设置最大并发游戏会话激活,以限制实例上正在准备新游戏会话的游戏服务器的数量。当启动多个新游戏会话需要耗费大量资源并可能影响其他正在运行的游戏会话的性能时,此设置非常有用。
-
设置新激活超时,以反映新游戏会话完成激活和向接待玩家报告所需的最长时间。 Amazon GameLift Servers如果游戏会话激活超过此值,则会终止激活。
-
-
打开EC2 端口设置以允许入站流量访问队列中的服务器进程。创建实例集不需要这些设置,但您需要先完成这些设置,然后玩家才能连接到实例集上的游戏会话。
对于每个端口设置,请选择要用于游戏客户端和游戏服务器之间通信的数据传输协议类型。使用 CIDR 表示法提供端口范围(格式为
nnnnn[-nnnnn]
)和 IP 地址范围(例如0.0.0.0/0
,它允许任何人访问)。如果您需要设置多个不连续的范围,请创建多个端口设置。
-
指定可选的游戏会话资源设置。部署后,您可以随时更新这些设置。
-
为实例集中的所有实例开启或关闭游戏扩展保护策略。在缩小规模活动期间,如果受保护的队列实例正在托管活跃的游戏会话,则Amazon GameLift Servers不会终止这些实例。
-
如果要限制一名玩家在指定时间范围内可以创建的游戏会话的数量,请设置最大资源创建限制。
-
-
选择下一步以继续工作流程。
-
- 步骤 5 审核并创建
-
在创建实例集之前,请审查您的设置。尽管有些设置可以在以后更新(请参阅更新Amazon GameLift Servers舰队配置),但创建实例集后不允许更改以下设置:
-
计算类型:您无法将托管 EC2 队列转换为 Anywhere 队列。
-
生成包或脚本:要将更新部署到游戏服务器生成包或脚本,您必须创建新实例集。
-
其他选项,包括实例角色和 TLS 证书生成。
-
实例详细信息,包括队列类型(竞价型或按需型)和 EC2 实例类型。
当您准备好部署新队列时,请选择创建。 Amazon GameLift Servers立即开始舰队激活流程,分配一个唯一 ID 并将舰队置于
NEW
状态。在实例集页面中跟踪实例集的进度。查看实例集的详细信息页面,然后转到事件选项卡。在队列变为 ACTIVE 状态后,您可以调整队列的托管容量。 Amazon GameLift Servers最初部署的队列在每个队列位置都有一个实例。然后您可以通过向每个位置添加实例来调整容量。有关更多信息,请参阅 通过以下方式扩展游戏托管容量 Amazon GameLift Servers。
-
- AWS CLI
-
使用
create-fleet
命令创建计算类型的队列 EC2
。 Amazon GameLift Servers以您当前的默认值创建舰队资源 AWS 区域 (或者您可以添加--region标签来指定其他资源 AWS 区域)。创建最小托管式实例集
以下示例请求创建了一个新实例集,该实例集具有执行以下操作所需的最低设置:部署一个实例集,其中包含游戏客户端可以连接到的正在运行的游戏服务器。新实例集具有以下特征:
-
它指定了游戏服务器版本,该版本已上传到Amazon GameLift Servers并处于
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 Servers并处于
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 Servers返回一组队列属性,其中包括您请求的配置设置和新的舰队 ID。 Amazon GameLift Servers然后启动舰队激活过程并将舰队状态和位置状态设置为 “新建”。您可以使用以下 CLI 命令跟踪实例集的状态并查看其他实例集信息:
您可以使用以下命令,根据需要更改实例集的容量和其他配置设置:
-