在 Amazon EKS 上设置、安装和托管基于开源容器的游戏服务器托管和匹配解决方案
本指南向游戏开发人员展示了如何自动设置全局游戏服务器。它提供了在 Amazon Elastic Kubernetes Service(Amazon EKS)上配置 Kubernetes 集群以协调 Agones 和 OpenMatch 开源框架的分步说明。本指南利用了基础设施即代码方法,这种方法简化了 Amazon EKS 上的部署流程,并使开发人员能够在 Kubernetes 上本地运行相同的系统。架构图还演示了如何建立多集群配置,以根据全局延迟优化游戏会话位置分配。这不仅可以减少延迟并缩短响应时间,还可以增强整体游戏体验。
请注意:[免责声明]
架构图
[架构图描述]
第 1 步
连接到 AWS Global Accelerator 端点,请求匹配分配。
第 2 步
通过网络负载均衡器将请求路由到 Open Match Game 前端容器。
第 3 步
当 Director 容器接收和处理包含玩家数据的匹配请求时,Amazon CloudWatch 可实现可观测性。
第 4 步
根据 Match Making 函数的标准,使用该函数对玩家票证进行分组,并向 Director 容器返回匹配票证。
第 5 步
从 Agones Allocator 容器请求匹配分配。该请求可以指定由 Match Making 函数定义的不同区域。
第 6 步
如果区域 1 对玩家的延迟最低,则使用 Agones Allocator 容器在同一区域分配游戏服务器。
第 8 步
将游戏服务器的内部 IP 地址和端口返回至 Director 容器。
第 9 步
将内部 IP 地址和端口转换为 Director 容器的等效 Global Accelerator 地址和端口。然后,将转换后的内部 IP 地址发送到前端容器。
第 10 步
将包含 Global Accelerator 地址和自定义路由端口的游戏服务器连接详细信息返回给玩家。
第 11 步
通过一个路由到分配的游戏容器以进行匹配的端口,连接到指定集群的 Global Accelerator。
第 12 步
将连接路由到分配的游戏容器。
第 13 步
使用 AWS Key Management Service(AWS KMS)加密 Agones 和 Open Match 证书。
注意:
- 第 1-10 步使用带有 TLS/SSL 的 gRPC。
- 第 11-12 步使用游戏特定的协议。
- 所有容器均从 Amazon Elastic Container Registry(Amazon ECR)中拉取。
Well-Architected 支柱
当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
本指南使用 Amazon Elastic Kubernetes Service(Amazon EKS)控制面板,通过 Amazon Elastic Compute Cloud(Amazon EC2)托管的节点组预置集群。这些节点使用启动模板构建。通过 Amazon EKS API 提供一致且可重复的方式来构建集群,减少了人为错误和前置时间。
此外,对于在 Amazon EKS 集群上运行的容器,您可以将日志和指标导出到 Amazon CloudWatch,以实现对集群的可观测性,从而主动识别问题。
-
安全性
当启动 Amazon EKS 集群时,Terraform 脚本会隐式创建 AWS KMS 密钥。该密钥用于加密存储在 Amazon EKS 中的 Kubernetes 密钥(包括用于拉取映像的 Docker 注册表凭证、TLS 密钥以及 Agones 和 Open Match 使用的其他证书)。这实现了信封加密(信封加密被认为是深入安全策略的安全最佳实践)。
Amazon GuardDuty 是另一项旨在保护账户的服务,可与此架构一起配置。它通过分析 Amazon EKS 集群上的审计日志和运行时活动来揭示安全风险。Amazon EKS 也可用于 GuardDuty 中的运行时监控,可检测游戏服务器和匹配组件中的潜在威胁。
Global Accelerator 还支持安全基础架构。它使您能够对源端口、协议和客户端关联性进行细粒度控制。这允许流量从互联网上的游戏客户端流向运行在 Amazon EC2 Worker 节点上并由 Amazon EKS 启动的游戏服务器。您可以限制来自不安全源 IP 的访问。
由于使用了 Global Accelerator,您还可以受益于 AWS Shield Standard 保护,抑制分布式拒绝服务(DDoS)尝试。通过 Shield Standard,只有来自安全客户端 IP 的有效流量才被允许流经加速器并到达游戏容器的端点组。
-
可靠性
网络负载均衡器和经典负载均衡器为在 Amazon EKS 集群内运行的部署提供了入口(从集群外部路由流量)。入口流量被路由到 Kubernetes 服务,该服务在 Kubernetes 容器组(pod)上终止流量。网络负载均衡器和经典负载均衡器在每个 Amazon EKS 集群的区域中提供固定的入口端点,互联网流量从 Global Accelerator 路由到这些端点。Amazon EKS 集群上的容器可以滚动升级,同时网络负载均衡器和经典负载均衡器可继续将流量重定向到服务,不会中断。
网络负载均衡器为主 Amazon EKS 集群上的前端服务提供入口。使用网络负载均衡器,您可以通过为部署运行多个容器组(pod)来扩展前端,并通过负载均衡器将前端服务作为目标公开。如果一个前端容器组(pod)崩溃或不可用,网络负载均衡器会将流量路由到下一个可用容器组(pod)。
经典负载均衡器为在辅助 Amazon EKS 集群上运行的分配器服务提供入口。使用经典负载均衡器,您可以为部署运行多个容器组(pod)并通过负载均衡器将它们作为目标公开,从而扩展分配器服务。如果一个分配器容器组(pod)崩溃或不可用,经典负载均衡器会将流量路由到下一个可用容器组(pod)。
-
性能效率
由于 Amazon ECR 与 Amazon EKS 直接集成,它简化了部署在 Amazon EKS 集群上的 Agones 和 Open Match 容器的交付。Amazon ECR 无需运营和扩展存储和拉取游戏容器、Agones 和 Open Match 组件的容器映像所需的基础设施。无论 Amazon EKS 集群的容器组(pod)规模如何,Amazon ECR 都会进行扩展,以适应部署。Amazon ECR 能够在 Amazon EKS 集群所在的同一区域拉取和推送映像,从而在延迟和数据传输成本方面提供最佳性能。
-
成本优化
运行游戏服务器的 Amazon EKS Worker 节点可配置为在 Amazon EC2 竞价型实例上运行。运行 Agones 和 Open Match 组件的 Amazon EKS Worker 节点可利用节省计划。运行游戏服务器和 Kubernetes kube 系统的节点也有可能使用基于 AWS Graviton 处理器的实例。
使用竞价型实例运行游戏服务器时,最多可节省 90% 的游戏服务器托管计算成本。通过节省计划覆盖的 Graviton 实例,您可以优化 Agones 和 Open Match 容器的计算成本,最高可节省 72%。
-
可持续性
AWS 碳足迹工具可让您跟踪和测量 Amazon EKS 集群的碳排放量,并改善 Worker 节点的影响,为可持续的工作负载提供支持。
通过这些服务,您可以管理和跟踪碳排放,以防止浪费,并实现可持续计算。它们在区域层面优化了 Amazon EKS Worker 节点的使用,并提供了在未满足碳排放目标时快速做出反应的机制。
相关内容
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 Amazon 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指导是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。