创建 Amazon GameLift Servers Anywhere 实例集
本主题介绍如何创建 Amazon GameLift Servers Anywhere 实例集。借助 Anywhere 实例集,您可以使用核心的 Amazon GameLift Servers 游戏会话管理功能,同时使用您自己的计算资源来托管游戏会话。可以为您的本地硬件或其他基于云的资源创建 Anywhere 队列。
Anywhere 实例集通常在混合托管解决方案中与 Amazon GameLift Servers 托管式实例集一起使用。在开发使用 Amazon GameLift Servers 托管的游戏时,它们还提供有用的测试环境。请参阅以下主题,详细了解何时以及如何将 Amazon GameLift Servers Anywhere 实例集纳入游戏托管解决方案:
由于 Anywhere 实例集是自管理式的,因此设置实例集需要完成一些额外的工作。要让 Anywhere 实例集做好托管游戏会话和玩家的准备,您需要完成以下任务:
开始之前
在创建 Anywhere 实例集之前,请执行以下任务。有关更详细的指导,请参阅借助 Amazon GameLift Servers Anywhere 进行托管的开发路线图或借助 Amazon GameLift Servers 进行混合托管的开发路线图。
-
将您的游戏服务器代码与 Amazon GameLift Servers 服务器 SDK 版本 5.x(或更高版本)集成。您无需完成所有游戏集成任务,只需完成游戏服务器生成包所需的任务即可。常见的做法是将本地计算机设置为 Anywhere 实例集,并使用命令行界面测试游戏服务器集成(请参阅使用 Amazon GameLift Servers Anywhere 设置本地测试)。您可以在开发时加入其他组件(例如支持 Amazon GameLift Servers 的游戏客户端)。
-
将您的游戏服务器软件打包,以便安装到您的 Anywhere 实例集计算。该软件包应包含您的集成式游戏服务器生成包以及运行您的游戏服务器所需的所有支持软件。
-
决定是否对您的 Anywhere 实例集使用 Amazon GameLift Servers 代理。该代理是一种计算进程管理工具,可自动执行与管理服务器进程和计算资源相关的一些关键任务,以便与 Amazon GameLift Servers 配合使用。有关更多信息,请参阅 使用 Amazon GameLift Servers 代理。
创建自定义位置
创建一个自定义位置来表示您的计算资源的物理位置。创建 Anywhere 实例集时,必须至少已定义一个自定义位置。您可以随时创建更多自定义位置并将其添加到现有实例集。
创建自定义位置
使用 Amazon GameLift Servers 控制台或 AWS Command Line Interface(AWS CLI)创建自定义位置。
- Console
-
在 Amazon GameLift Servers 控制台中,使用导航窗格打开位置页面。选择创建位置以打开“创建”对话框。
-
在对话框中,输入位置名称。作为最佳实践,请使用可描述一组计算资源的有意义位置的名称。这可以是地理位置、数据中心名称或其他位置标识符。Amazon GameLift Servers 会在您的自定义位置名称后面加上 custom-。
-
(可选)向自定义位置添加标签。每个标签都包含定义的一个键和一个可选值。为您希望以有用的方式(如按用途、所有者或环境)分类的 AWS 资源分配标签。为每个要添加的标签选择添加新标签。
-
选择创建。
- AWS CLI
-
使用 create-location 命令创建自定义位置。提供一个 location-name 值,该值必须以 custom- 开头。作为最佳实践,请使用可描述一组计算资源的有意义位置的名称。这可以是地理位置、数据中心名称或其他位置标识符。
aws gamelift create-location \
--location-name custom-location-1
Output
{
"Location": {
"LocationName": "custom-location-1",
"LocationArn": "arn:aws:gamelift:us-east-1:111122223333:location/custom-location-1"
}
}
创建 Anywhere 实例集
为您拥有的一组计算资源创建一个 Anywhere 实例集。新的 Anywhere 实例集一开始是空的;您可以通过注册计算向实例集添加计算。
创建后,新 Anywhere 实例集的状态会从 NEW 快速切换到 ACTIVE。您可以在实例集进入 ACTIVE 状态后向其添加计算。
创建 Anywhere 实例集
使用 Amazon GameLift Servers 控制台或 AWS Command Line Interface(AWS CLI)创建 Anywhere 实例集。
- Console
-
在 Amazon GameLift Servers 控制台中,使用导航窗格打开实例集页面。选择创建实例集以启动实例集创建工作流程。
- 步骤 1 选择计算类型
选择 Anywhere 选项,然后选择下一步。
- 步骤 2 定义实例集详细信息
-
在此步骤中,指定一些关键的实例集范围的设置。
-
填写实例集详细信息部分:
-
输入实例集名称。我们建议使用实例集命名模式,以便于在查看实例集列表时识别实例集类型。
-
提供对实例集的简短描述。
-
根据需要设置这些可选的其他详细信息。您可以稍后更新这些实例集设置。
-
创建用于生产或生产前测试的实例集时,可使用此设置指定实例集计算资源的每小时成本值。Amazon GameLift Servers 可以在游戏会话放置过程中使用此信息,以根据成本选择托管资源。
-
如果要合并此实例集和其他实例集的指标数据,请指定指标组名称。对要合并在一起的所有实例集使用相同的指标组名称。查看指标组的指标以查看聚合数据。
-
向自定义位置添加可选标签。每个标签都包含定义的一个键和一个可选值。为您希望以有用的方式(如按用途、所有者或环境)分类的 AWS 资源分配标签。为每个要添加的标签选择添加新标签。
-
选择下一步以继续工作流程。
- 步骤 3 选择自定义位置
-
在此步骤中,确定您计划添加到此实例集的计算的物理位置。您可以现在指定一个或多个位置,也可以稍后根据需要添加或删除位置。
-
在自定义位置中,为实例集的计算选择一个或多个位置。该列表包含在您当前选择的 AWS 区域中已定义的所有自定义位置。要定义希望添加到实例集的新自定义位置,请选择创建位置。
-
选择下一步以继续工作流程。
- 步骤 4 审核并创建
-
在创建实例集之前,请审查您的设置。
当您准备好部署新实例集时,请选择创建。Amazon GameLift Servers 会立即开始实例集激活流程,分配一个唯一 ID 并将实例集状态设为 NEW。您可以在实例集页面上跟踪实例集的进度。
- AWS CLI
-
使用 create-fleet 命令创建计算类型 ANYWHERE 的实例集。提供一个名称和至少一个自定义位置。Amazon GameLift Servers 会在当前的默认 AWS 区域中创建 Anywhere 实例集资源(您也可以添加 --region 标签来指定其他 AWS 区域)。
以下示例请求创建了一个具有最少必要设置的新实例集。将 FleetName 和 custom-location 替换为您自己的信息。
aws gamelift create-fleet \
--name FleetName \
--compute-type ANYWHERE \
--locations "Location=custom-location"
响应示例
{
"FleetAttributes": {
"FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
"FleetArn": "arn:aws:gamelift:us-west-2:111122223333:fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
"Name": "HardwareAnywhere",
"CreationTime": "2023-02-23T17:57:42.293000+00:00",
"Status": "ACTIVE",
"MetricGroups": [
"default"
],
"CertificateConfiguration": {
"CertificateType": "DISABLED"
},
"ComputeType": "ANYWHERE"
}
}
创建后,新 Anywhere 实例集的状态会快速切换到 ACTIVE。您可以在实例集进入 ACTIVE 状态后向其添加计算。
请注意,响应不包含实例集位置。您可以通过调用 describe-fleet-attributes 和 describe-fleet-location-attributes 来检索完整的实例集详细信息。
向实例集添加计算
要向一个实例集添加计算资源并让该实例集做好托管游戏会话的准备,请执行以下任务:
您可以通过使用 AWS CLI 或以编程方式调用适用于 Amazon GameLift Servers 的 AWS SDK 来注册计算资源和请求身份验证令牌。这些操作无法通过 Amazon GameLift Servers 控制台进行。
作为最佳实践,建议通过向每个计算添加启动脚本来自动执行这两项任务。启动脚本会自动调用 register-compute 和 get-compute-auth-token 命令。您还可以自动执行任务,以便在计算的整个生命周期内定期刷新身份验证令牌,并在关机时取消注册计算。
每个启动操作都会返回特定于计算的值,您需要将这些值存储在计算上。当游戏服务器进程在计算上启动时,它必须在初始化与 Amazon GameLift Servers 服务的连接时将这些值作为服务器参数传递(请参阅服务器 SDK 参考中的 服务器参数)。我们建议您将这些特定于计算的值(或其存储位置)设置为环境变量。如果您使用的是 Amazon GameLift Servers 代理,它将为您处理此任务。特定于计算的值如下:
- AWS CLI
-
以下说明介绍了如何使用 AWS CLI 手动提交每个请求。
注册计算
调用 register-compute 以注册计算。确定要向其添加计算的实例集的 ID。提供以下计算信息:有意义的名称、IP 地址和位置。计算的位置必须是已与实例集关联的自定义位置。如果要使用其他自定义位置,请使用 Amazon GameLift Servers 控制台更新实例集,或调用 AWS CLI 命令 create-fleet-locations 向实例集添加自定义位置。
在以下示例中,替换计算和实例集的占位符值。fleet-id 值将在您创建 Anywhere 实例集时返回。您可以通过调用 describe-fleet-attributes 和 describe-fleet-location-attributes 来检索完整的实例集详细信息。
aws gamelift register-compute \
--compute-name HardwareAnywhere \
--fleet-id arn:aws:gamelift:us-east-1:111122223333:fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \
--ip-address 10.1.2.3 \
--location custom-location-1
示例输出
{
"Compute": {
"FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
"FleetArn": "arn:aws:gamelift:us-west-2:111122223333:fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
"ComputeName": "HardwareAnywhere",
"ComputeArn": "arn:aws:gamelift:us-west-2:111122223333:compute/HardwareAnywhere",
"IpAddress": "10.1.2.3",
"ComputeStatus": "Active",
"Location": "custom-location-1",
"CreationTime": "2023-02-23T18:09:26.727000+00:00",
"GameLiftServiceSdkEndpoint": "wss://us-west-2.api.amazongamelift.com"
}
}
请求身份验证令牌
调用 get-compute-auth-token 以请求有效的身份验证令牌。注册计算。确定实例集 ID 和计算名称。
在以下示例中,替换计算和实例集的占位符值。fleet-id 值将在您创建 Anywhere 实例集时返回。您可以通过调用 describe-fleet-attributes 来检索完整的实例集详细信息。要查找计算信息,请使用实例集 ID 调用 list-compute,以查看注册到实例集的所有计算。
aws gamelift get-compute-auth-token \
--fleet-id arn:aws:gamelift:us-east-1:111122223333:fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \
--compute-name HardwareAnywhere
示例输出
{
"FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
"FleetArn": "arn:aws:gamelift:us-east-1:111122223333:fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
"ComputeName": "HardwareAnywhere",
"ComputeArn": "arn:aws:gamelift:us-east-1:111122223333:compute/HardwareAnywhere",
"AuthToken": "0c728041-3e84-4aaa-b927-a0fb202684c0",
"ExpirationTimestamp": "2023-02-23T18:47:54+00:00"
}
启动游戏服务器
创建 Anywhere 实例集并向该实例集添加一个或多个计算后,就可以开始运行游戏服务器了。
- 步骤 1 安装游戏服务器软件
将游戏服务器生成包和所有相关软件安装到 Anywhere 实例集中的每个计算。游戏服务器生成包必须与 Amazon GameLift Servers 服务器 SDK 版本 5.x(或更高版本)集成,并具备与 Amazon GameLift Servers 服务通信所需的最低功能。
- 步骤 2 让计算做好运行游戏服务器的准备
-
确保每个计算都已注册并具有有效的身份验证令牌。如果您要使用脚本来管理这些任务,请确保在启动任何游戏服务器进程之前,脚本已在每个计算上运行。
如果您已将 Amazon GameLift Servers 代理与游戏服务器软件一起部署,请确保代理可执行文件已启动。
- 步骤 3 启动游戏服务器进程
在计算上运行游戏服务器可执行文件的实例。如果游戏服务器生成包已正确集成,游戏服务器进程会调用服务器 SDK 操作 InitSDK(),其中包含一组有效的服务器参数。当服务器进程准备好托管游戏会话后,它会调用 ProcessReady()。
如果您已使用 Amazon GameLift Servers 代理部署游戏服务器软件,则可跳过此步骤。代理会根据您提供的运行时说明自动启动游戏服务器进程。
您可以通过查看激活中和已激活的服务器进程的服务器进程指标来监控进度。请参阅Amazon GameLift Servers 队组指标。如果游戏服务器进程初始化失败,请验证该进程是否正在为运行它的计算检索正确的服务器参数值。