Game Servers 概览

Game Servers 是一项专为游戏基础架构团队打造的代管式游戏服务,可部署和管理全球专用游戏服务器队列。Game Servers 使用 Kubernetes(用于容器编排)和 Agones(用于游戏服务器队列编排和生命周期管理)管理游戏服务器集群。您可以随时连接和断开由 Game Servers 管理的集群,而不会对现有游戏会话产生任何影响。断开集群后,您可以继续运行开源 Agones 安装。

您可以使用全球游戏服务器配置来控制游戏服务器集群,定义要启动的服务器的位置和数量以及要部署的游戏服务器二进制文件的规则。Game Servers 会根据集中管理的发布自动创建 Agones 队列,以确保它们安全地自动发布到所有代管式集群。特别是,正在进行的游戏会话不会中断,因为正在使用的游戏服务器不会突然停止

Game Servers 资源

本部分介绍了您在管理 Game Servers 时与之互动的主要资源。下图展示了如何使用这些资源来部署游戏项目。

游戏项目部署示例
图 1.Game Servers 上的游戏项目部署示例

Game Servers 项目

单一环境(如生产环境或测试环境),是一个启用了 Game Servers 的 Google Cloud 项目。为了提高隔离性和安全性,您通常使用多个 Google Cloud 项目(如 My Game Production 和 My Game Testing)来管理单个游戏名称

位置

位置定义资源的范围,默认为 global,具有最高的可用性,且数据跨多个 Google Cloud 地区进行冗余。您可以手动将资源的位置设置为特定的 Google Cloud 区域(某些区域不受支持)。如果您想要控制数据的存储位置或故障切换网域,请使用以下某个受支持的位置替换默认的 global 设置:

支持的位置

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-southeast1
  • asia-southeast2
  • australia-southeast1
  • europe-central2
  • europe-north1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • global
  • northamerica-northeast1
  • southamerica-east1
  • us-central1
  • us-east1
  • us-east4
  • us-west1
  • us-west2

大区

Game Servers 旨在支持在 Google Kubernetes Engine 上运行的 Kubernetes 集群。为了利用 Google Cloud 地区和区域的概念进行构建,Game Servers 引入了大区中的元地区概念。大区是用户定义的游戏服务器集群分组,具体取决于游戏对于玩家填充的延迟时间要求。大区有一个分配给它们的时区,允许在大区内的集群上使用基于时间的扩缩配置。大区存在于某个位置内。

游戏服务器集群

游戏服务器集群是大区资源的子资源。每个游戏服务器集群都对应一个运行 Agones 的 Kubernetes 集群上的命名空间,这些集群已注册到某个大区。从用户体验的角度来看,在延迟时间或计算性能等方面,一个大区内的游戏服务器集群应被认为是等效的。如果使用 default 以外的命名空间,则必须在 Kubernetes 上创建命名空间,并配置 Agones 以使用该命名空间。

创建游戏服务器集群后,Game Servers 会根据需要创建 Agones 队列自动扩缩器。Game Servers 不会更改手动创建的 Agones 队列。

删除游戏服务器集群后,Game Servers 不会删除集群中的任何资源,包括 Game Servers 创建的 Agones 队列和自动扩缩器。

游戏服务器部署

游戏服务器部署是游戏服务器软件版本的全球记录,可以部署到全球任何或所有游戏服务器集群。游戏服务器部署是游戏服务器配置发布资源的父级资源。

将不同的配置发布到不同的大区
图 2. 配置版本 1.0 发布到美国大区,版本 1.1 发布到欧洲和日本大区

游戏服务器配置

游戏服务器配置是游戏服务器部署资源的子资源,用于指定游戏服务器计数、缓冲区和游戏服务器版本。您可以在游戏服务器配置中定义扩缩政策。扩缩政策可以是静态或基于时间的,如以下示例所示:

  • 在高峰时段,应有足够的服务器来支持每分钟的 N 次分配,而在非高峰时段,则应支持每分钟 M 次分配。
  • 对于已计划的游戏事件,请将日期和时间范围的预留容量提高 N%。

推出

发布是游戏服务器部署资源的子资源,用于将游戏服务器配置映射到目标大区。默认情况下,发布会将游戏服务器配置分配给所有大区。对于 A/B 测试和 Canary 版测试,您可以替换特定大区以接收备用游戏服务器配置。

架构

Game Servers 提供全局可用的控制平面 API,通过该 API,您可以使用 API 调用、Google Cloud Console 或 Google Cloud CLI 控制描述部署的资源,包括:

  • 创建和修改大区。
  • 创建、注册和修改大区中的游戏服务器集群。
  • 创建、部署和更新游戏服务器部署、游戏服务器配置和发布。

Kubernetes 服务帐号需要具有 Agones 来管理创建 Game Servers 集群时您传递到 Game Servers 的命名空间中的游戏服务器。如果您要使用非默认命名空间的命名空间,则通常会在 helm 安装过程中创建此服务帐号。

Game Servers 需要具有 Google Cloud 项目服务帐号来连接到 Agones 集群。此服务帐号会在您首次创建资源(例如大区或部署)时自动创建。

每个游戏服务器部署描述游戏服务器参数(相当于 Agones GameServerSpec),并指定一个政策,以将游戏服务器集群定位到应创建运行特定构建的游戏服务器队列的地方。您还可以使用政策设置个别集群扩缩偏好设置。

后续步骤