使用 Azure Batch 实现同步多人游戏

游戏服务器池由 Azure Batch 管理,负责创建虚拟机和开放端口。 每个地区都将有自己的游戏服务器池。

体系结构关系图

S使用 Azure Batch 实现同步多人游戏

相关服务

  • Azure 流量管理器 - 选择此服务是因为它可以根据延迟情况将玩家连接到最合适的区域。
  • Azure Batch - 它用于创建虚拟机和打开端口。 选择此服务是因为它可以根据您定义的参数自动缩放池。

针对 Azure 流量管理器使用一个资源组,并针对每个区域虚拟机群集各使用一个资源组。

体系结构注意事项

体系结构会有一些不同,具体取决于虚拟机运行的操作系统以及使用的是平台映像还是自定义映像。

操作系统

  • Windows

    • 要启动并运行 Windows Server 虚拟机并准备好安排计划,所花费的时间大约是 Linux 虚拟机的两倍。
    • 目前,Windows Server 2012 的性能优于 Windows Server 2016。
    • 值得一提的是,如果您已拥有有效的 Windows 本地部署许可证,可能不必支付该 SKU 的全部费用。
  • Linux

    • 启动并运行 Linux 并准备好安排计划大约比 Windows 快两倍。

平台映像

  • 平台/市场映像

    • 它们可使用安全修补程序进行更新。 我们为这些映像提供支持。
    • 在长期运行的池上使用平台映像的缺点在于,映像可能会被弃用并从存储库中删除,并且池可能永远不能扩展。
  • 自定义映像

    • 自定义映像的启动时间可能会有很大差别,具体取决于已提供源的自定义软件和数据。
    • 优势在于,您可以使用 OSDisk 中所有预安装的软件/数据来让映像准备就绪。
    • 自定义映像源磁盘可以是以下三种类型之一:1. 快照,2. Manageddisk,3. VHD。
      • 目前,我们建议使用“快照”源磁盘。 存储有扩展限制,Azure Batch 一次性可扩展的虚拟机数量不得超过 2500 台。

容器

如果您已在 Linux 容器中将游戏容器化,可以使用预先制好的映像来运行容器。 请参阅在 Azure Batch 上运行容器应用程序,了解如何创建支持运行容器任务的计算节点池,然后在池中运行容器任务。

请查看此链接中记录的 microsoft-azure-batch 发布者,了解可用的 Linux 映像。

部署模板

单击下面的按钮,将项目部署到您的 Azure 订阅:

此操作将触发模板部署,即系统会将 BatchWithPoolDeploy.json ARM 模板文件部署到您的 Azure 订阅,从而创建必要的 Azure 资源。 更确切地说:

  • 创建一个 Azure 存储帐户。
  • 创建一个与 Azure 存储帐户关联的 Azure Batch 帐户。
  • 在 D2s_v3 Windows Server 2016 上创建一个包含 5 个节点(默认)的池。
  • 该池具有一个空的开始任务,可用于启动游戏服务器。

这可能会在您的 Azure 帐户中产生相应费用。

请查看一般指南文档,其中有一篇文章概述了 Azure 服务的命名规则和限制。

备注

如果您对 ARM 模板的工作原理感兴趣,请参阅此参考体系结构中使用的每个不同服务对应的 Azure 资源管理器模板文档:

分步操作

  1. 玩家的设备客户端连接到 Azure 流量管理器,以传送要查找游戏服务器的玩家请求。
  2. Azure 流量管理器连接到具有最低延迟的区域,并指向可获取可用游戏服务器的 Matchmaker
  3. Matchmaker 包含选择游戏服务器所需的所有信息,并且如果需要更多容量,它会主动 ping Azure Batch 服务以开始横向扩展。
  4. Azure Batch 服务接收到该请求并开始横向扩展。如果设置了自动缩放,它可能会根据已建立的规则主动开始该流程。
  5. 游戏服务器会在游戏会话结束后且服务器可用时,定期向 Matchmaker 发送状态更新以及服务器的最新 IP 和端口。
  6. 每台玩家设备都使用由 Matchmaker 提供的连接信息直接连接到游戏服务器。
  7. 游戏会话结束后,系统将存储相关信息。

缩放

借助 Azure Batch 自动缩放,服务会动态地调整节点,随着任务需求的增加将节点添加到池,并随着需求的减少而移除计算节点。

您可以在计算节点池上启用自动缩放,方法是将它与您定义的自动缩放公式相关联。 Azure Batch 服务会使用该自动缩放公式来确定执行工作负载所需的计算节点数。

您可以在创建池时或在现有池上启用自动缩放。 您还可以在已配置为自动缩放的池上更改现有公式。 借助 Azure Batch,您可以在将公式分配到池之前对它们进行评估,并监控自动缩放的运行状态。

或者,您可以像本例中一样,向 Matchmaker 分配任务来主动告知 Azure Batch 何时横向扩展。

安全注意事项

当您在虚拟网络中包含 Azure Batch 虚拟机服务池时,需要遵循一些要求

其他资源和示例

Azure Batch Explorer:允许您与 Azure Batch 服务进行交互的工具,以便在 Azure Batch 帐户中查看、管理、监控和调试实体。 提供一张热度地图,用于查看所有运行的虚拟机及其当前状态,下面是地图解读方法:

  • 白色方块表示虚拟机处于空闲状态,可随时接受一些工作。
  • 黄色方块表示虚拟机无法使用,因为它们正在启动或关闭。
  • 绿色方块表示虚拟机当前正在运行工作负载。
  • 红色方块表示虚拟机处于故障状态。

定价

如果您没有 Azure 订阅,可以创建免费帐户,开始使用 12 个月的免费服务。 除非您超出这些服务的使用限制,否则无需为 Azure 免费帐户中包含的这些免费服务付费。 了解如何通过 Azure 门户使用情况文件查看服务使用情况。

您需要承担运行这些参考体系结构时使用的 Azure 服务的费用,总金额取决于将通过分析管道运行的事件数。 请参阅参考体系结构中使用的每项服务的定价网页:

您还可以使用 Azure 定价计算器,以配置和估算您计划使用的 Azure 服务的成本。