为 Amazon GameLift Servers 设置 VPC 对等连接 - Amazon GameLift Servers
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 Amazon GameLift Servers 设置 VPC 对等连接

本主题提供有关如何在 Amazon GameLift Servers 托管游戏服务器与其他非 Amazon GameLift Servers 资源之间建立 VPC 对等连接的指导。使用 Amazon 虚拟私有云(VPC)对等连接支持您的游戏服务器与其他 Amazon 资源(例如 Web 服务或存储库)直接私下通信。您可以使用在 Amazon 上运行且由您有权访问的 Amazon 账户托管的任何资源建立 VPC 对等连接。

注意

VPC 对等连接是一项高级特征。要了解使您的游戏服务器能够与您的其他 Amazon 资源建立直接、私密通信的首选选项,请参阅将您的 Amazon GameLift Servers 托管游戏服务器连接到其他 Amazon 资源

如果您已熟悉 Amazon VPC 和 VPC 对等连接,请了解设置与 Amazon GameLift Servers 游戏服务器对等连接的方式略有不同。您无权访问包含游戏服务器的 VPC(该 VPC 由 Amazon GameLift Servers 服务控制),因此无法直接为其请求 VPC 对等连接。而应首先对非 Amazon GameLift Servers 资源预授权 VPC,以接受来自 Amazon GameLift Servers 服务的对等连接请求。然后,触发 Amazon GameLift Servers 以请求刚刚授权的 VPC 对等连接。Amazon GameLift Servers 处理创建对等连接、设置路由表和配置连接的任务。

为现有实例集设置 VPC 对等连接

  1. 获取 Amazon 账户 ID 和凭证。

    您需要以下 Amazon 账户的 ID 和登录凭证。您可以通过登录 Amazon Web Services 管理控制台并查看您的账户设置来找到 Amazon 账户 ID。要获取凭证,请转到 IAM 控制台。

    • 您用于管理 Amazon GameLift Servers 游戏服务器的 Amazon 账户。

    • 您用于管理非 Amazon GameLift Servers 资源的 Amazon 账户。

    如果您对 Amazon GameLift Servers 和非 Amazon GameLift Servers 资源使用同一账户,则仅需该账户的 ID 和凭证。

  2. 为每个 VPC 获取标识符。

    为要对等的两个 VPC 获取以下信息:

    • Amazon GameLift Servers 游戏服务器的 VPC - 这是您的 Amazon GameLift Servers 实例集 ID。您的游戏服务器部署在 EC2 实例的队组上的 Amazon GameLift Servers 中。队组都自动放置在自己的 VPC 中,后者由 Amazon GameLift Servers 服务进行管理。您没有 VPC 的直接访问权限,因此使用实例集 ID 标识。

    • 您的非 Amazon GameLift Servers Amazon 资源的 VPC - 您可以使用在 Amazon 上运行且由您有权访问的 Amazon 账户托管的任何资源建立 VPC 对等连接。如果您还没有为这些资源创建 VPC,请参阅 Amazon VPC 入门。创建 VPC 后,您可以通过登录 Amazon VPC 的 Amazon Web Services 管理控制台并查看您的 VPC 来找到 VPC ID。

    注意

    在设置对等连接时,两个 VPC 必须位于相同区域中。您的 Amazon GameLift Servers 队组游戏服务器的 VPC 与队组在相同区域中。

  3. 授权 VPC 对等连接。

    在此步骤中,您预授权将来从 Amazon GameLift Servers 将用于游戏服务器的 VPN 与用于非 Amazon GameLift Servers 资源的 VPC 建立对等连接的请求。此操作将更新您的 VPC 的安全组。

    要授权 VPC 对等连接,请调用服务 API CreateVpcPeeringAuthorization() 或使用 Amazon CLI 命令 create-vpc-peering-authorization。使用管理您的非 Amazon GameLift Servers 资源的账户发出此调用。确定以下信息:

    • 对等 VPC ID - 这是针对非 Amazon GameLift Servers 资源的 VPC。

    • Amazon GameLift Servers Amazon 账户 ID - 这是您用于管理 Amazon GameLift Servers 实例集的账户。

    授权 VPC 对等连接后,授权将在 24 小时内保持有效,除非您将其撤销。您可以使用以下操作管理您的 VPC 对等连接授权:

  4. 请求对等连接。

    使用有效授权,您可以请求 Amazon GameLift Servers 建立对等连接。

    要请求 VPC 对等连接,请调用服务 API CreateVpcPeeringConnection() 或使用 Amazon CLI 命令 create-vpc-peering-connection。使用管理您的 Amazon GameLift Servers 游戏服务器的账户发出此调用。使用以下信息标识要建立对等连接的两个 VPC:

    • 对等 VPC ID 和 Amazon 账户 ID - 这是针对您的非 Amazon GameLift Servers 资源的 VPC 以及您用于管理这些资源的账户。VPC ID 必须与有效对等授权上的 ID 匹配。

    • 实例集 ID - 此信息标识您的 Amazon GameLift Servers 游戏服务器的 VPC。

  5. 跟踪对等连接状态。

    请求 VPC 对等连接是一个异步操作。要跟踪对等请求的状态并处理成功或失败的案例,请使用以下选项之一:

    • 使用 DescribeVpcPeeringConnections() 持续轮询。此操作将检索 VPC 对等连接记录,包括请求的状态。如果已成功创建对等连接,则连接记录也包含分配给 VPC 的私有 IP 地址的 CIDR 块。

    • 使用 DescribeFleetEvents() 处理与 VPC 对等连接关联的实例集事件,包括成功事件和失败事件。

建立对等连接后,您可以立即使用以下操作对其进行管理:

使用新实例集设置 VPC 对等连接

您可以创建一个新 Amazon GameLift Servers 队组,同时请求 VPC 对等连接。

  1. 获取 Amazon 账户 ID 和凭证。

    您需要以下两个 Amazon 账户的 ID 和登录凭证。您可以通过登录 Amazon Web Services 管理控制台并查看您的账户设置来找到 Amazon 账户 ID。要获取凭证,请转到 IAM 控制台。

    • 您用于管理 Amazon GameLift Servers 游戏服务器的 Amazon 账户。

    • 您用于管理非 Amazon GameLift Servers 资源的 Amazon 账户。

    如果您对 Amazon GameLift Servers 和非 Amazon GameLift Servers 资源使用同一账户,则仅需该账户的 ID 和凭证。

  2. 为您的非 Amazon GameLift ServersAmazon 资源获取 VPC ID。

    如果您还没有为这些资源创建 VPC,请现在创建(请参阅 Amazon VPC 入门)。请确保您在计划创建新实例集的同一区域中创建新的 VPC。如果您的非 Amazon GameLift Servers 资源由与 Amazon GameLift Servers 所用账户/用户/用户组不同的 Amazon 账户或用户/用户组管理,需在下一步请求授权时使用这些账户凭证。

    创建 VPC 后,您可以在 Amazon VPC 控制台中通过查看 VPC 来查找 VPC ID。

  3. 使用非 Amazon GameLift Servers 资源授权 VPC 对等连接。

    当 Amazon GameLift Servers 创建新队组和对应的 VPC 时,它还会发送请求,以便与您的非 Amazon GameLift Servers 资源的 VPC 建立对等连接。您需要预先对该请求进行授权。此步骤将更新您的 VPC 的安全组。

    使用管理您的非 Amazon GameLift Servers 资源的账户凭证,请调用服务 API CreateVpcPeeringAuthorization() 或使用 Amazon CLI 命令 create-vpc-peering-authorization。确定以下信息:

    • 对等 VPC ID - 包含您的非 Amazon GameLift Servers 资源的 VPC 的 ID。

    • Amazon GameLift Servers Amazon 账户 ID - 您用于管理 Amazon GameLift Servers 实例集的账户的 ID。

    授权 VPC 对等连接后,授权将在 24 小时内保持有效,除非您将其撤销。您可以使用以下操作管理您的 VPC 对等连接授权:

  4. 按照使用 Amazon CLI 创建新实例集的说明操作。包括以下其他参数:

    • peer-vpc-aws-account-id - 您用于管理包含非 Amazon GameLift Servers 资源的 VPC 的账号的 ID。

    • peer-vpc-id - 包含您的非 Amazon GameLift Servers 账户的 VPC 的 ID。

使用 VPC 对等参数成功调用 create-fleet 后将会生成一个新实例集和一个新 VPC 对等请求。该实例集的状态设置为 New,并且将启动实例集激活过程。对等连接请求的状态设置为 initiating-request。通过调用 describe-vpc-peering-connections,您可以跟踪对等请求的成功或失败。

在同时请求新实例集和 VPC 对等连接时,两个操作要么成功,要么失败。如果某个实例集在创建过程中失败,则不会建立 VPC 对等连接。同样,如果 VPC 对等连接由于任何原因失败,则新实例集将无法从 Activating 状态变为 Active 状态。

注意

新的 VPC 对等连接直到实例集准备好变为活动状态才能完成。这意味着连接不可用,且无法在游戏服务器构建安装过程中使用。

以下示例创建一个新实例集,并在预先建立的 VPC 和新实例集的 VPC 之间创建对等连接。预先建立的 VPC 由您的非 Amazon GameLift Servers Amazon 账户 ID 和 VPC ID 组合唯一标识。

$ Amazon gamelift create-fleet --name "My_Fleet_1" --description "The sample test fleet" --ec2-instance-type "c5.large" --fleet-type "ON_DEMAND" --build-id "build-1111aaaa-22bb-33cc-44dd-5555eeee66ff" --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=33435,IpRange=0.0.0.0/0,Protocol=UDP" "FromPort=33235,ToPort=33235,IpRange=0.0.0.0/0,Protocol=UDP" --metric-groups "EMEAfleets" --peer-vpc-aws-account-id "111122223333" --peer-vpc-id "vpc-a11a11a"

可复制版本:

Amazon gamelift create-fleet --name "My_Fleet_1" --description "The sample test fleet" --fleet-type "ON_DEMAND" --metric-groups "EMEAfleets" --build-id "build-1111aaaa-22bb-33cc-44dd-5555eeee66ff" --ec2-instance-type "c5.large" --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=33435,IpRange=0.0.0.0/0,Protocol=UDP" "FromPort=33235,ToPort=33235,IpRange=0.0.0.0/0,Protocol=UDP" --peer-vpc-aws-account-id "111122223333" --peer-vpc-id "vpc-a11a11a"

VPC 对等连接问题疑难解答

如果您在为 Amazon GameLift Servers 游戏服务器建立 VPC 对等连接时遇到问题,请考虑以下常见的根本原因:

  • 未找到对所请求连接的授权:

    • 检查非 Amazon GameLift Servers VPC 的 VPC 授权状态。它可能不存在或可能已过期。

    • 检查您尝试建立对等连接的两个 VPC 的区域。如果它们不在同一个区域中,则无法建立对等连接。

  • 您的两个 VPC 的 CIDR 块(请参阅无效的 VPC 对等连接配置)重叠。分配给对等的 VPC 的 IPv4 CIDR 块无法重叠。系统会自动为 Amazon GameLift Servers 实例集的 VPC 分配 CIDR 数据块且您无法更改此数据块,因此,您需要为非 Amazon GameLift Servers 资源更改 VPC 的 CIDR 数据块。要解决此问题,请执行以下操作:

    • 通过调用 Amazon GameLift Servers 查找 DescribeVpcPeeringConnections() 队组的此 CIDR 块。

    • 转到 Amazon VPC 控制台,查找非 Amazon GameLift Servers 资源的 VPC,然后更改 CIDR 块,以使它们不会重叠。

  • 新实例集未激活(当请求与新实例集建立 VPC 对等连接时)。如果新实例集未能进入活动状态,则没有要与之建立对等连接的 VPC,因此对等连接无法成功。