关于作者:Michael Archer 是一位资深的技术战略师,拥有超过 20 年的高增长行业经验,专注于物联网、移动视频内容传输和网络架构。
为玩家设定场景
设想你在享受一场精彩的游戏,正准备完成完美的致命一击,脑海中已经浮现出胜利画面的画面…… 突然,游戏卡顿了。你被对手击败,游戏结束。
我们都曾经历过这种情况,一个小小的实时故障让你错失了荣耀时刻和胜利的机会。对这种体验的沮丧促使了完全自托管游戏的复兴,因为它让玩家能够掌控自己的命运。然而,不幸的是,自托管并不是所有游戏或玩家的可行选项。那么,如果我们告诉你,有一种方法可以消除卡顿问题,而无需购买和维护自己的硬件,你会怎么看呢?
只需简单开发,你就可以通过将服务器部署到离你(玩家)更近的地方,创造你自己的低延迟体验,打造一个分布式的游戏天堂。进入强力三重奏:Xonotic、K3s 和 Akamai Cloud 的边缘计算。
什么是边缘计算?
与依赖于可能远在几百(甚至几千)英里外的庞大中心化数据中心不同,边缘计算将计算能力更靠近数据源 —— 在这种情况下,数据源就是你自己。这样,数据传输的距离大大缩短,从而显著减少了卡顿带来的延迟。
为什么选择 K3s?保持轻量与灵活
K3s 是一个轻量级的 Kubernetes 分发版。可以把 Kubernetes(或 K8s)看作是一个非常智能和高效的应用程序管理器,它负责部署、扩展并确保一切运行顺利。K3s 是 K8s 的一个衍生版本,专为资源受限的环境设计。它小巧、快速并且非常有效 —— 可以成为你游戏基础设施的得力助手。 那 Agones 呢?游戏服务器大师
Agones 是一款专为管理专用游戏服务器而设计的开源、Kubernetes 原生项目。它能自动处理游戏服务器实例的扩缩容、分配和运行等复杂操作,让您专注于酣畅对战,无需纠缠于服务器配置。 开始搭建吧!(有趣的部分来了)
我们将使用 K3s 和 Agones 在 Linode 实例 上部署一个 Xonotic 服务器(一款快节奏、免费且开源的第一人称射击游戏)。准备好体验前所未有的 Xonotic 对战吧!如果想查看完整教程,请前往文档。
步骤 1:Terraform 时间 —— 铺设基础
Terraform 是 “基础设施即代码” 工具。通过它,我们可以用配置文件定义服务器环境,让部署过程可重复且易于管理。首先,安装: brew install terraform
(注:如果你并非使用 macOS 系统,查看 Terraform 官网以获取适合你操作系统的安装说明。)
步骤 2:项目设置 —— 你的游戏总部
创建目录来存放项目: mkdir xonotic cd xonotic
步骤 3:Terraform 脚本 —— 构建你的服务器(和防火墙!)
创建一个名为 main.tf 的文件,并粘贴以下代码:
这里就是见证奇迹的地方!我们将定义 Linode 实例、设置防火墙,并完成所有必要的配置。
在本示例中,我们将在 Akamai 的分布式计算区域之一 —— 丹佛(Denver)部署一台专用计算实例。我们推荐使用配备 4 个 vCPU 的 8GB 专用实例,这个配置足以支持多名玩家同时竞技。 注意:要直接运行此示例代码,你需要先申请访问目前处于限量开放的分布式计算区域。
# 指定所需的Terraform提供程序
terraform {
required_providers {
linode = {
source = "linode/linode"
version = ">= 1.27.0"
}
}
}
# 定义敏感信息变量
variable "linode_token" {
description = "Linode API token"
type = string
sensitive = true
}
variable "root_password" {
description = "Root password for the instance"
type = string
sensitive = true
}
variable "admin_ip" {
description = "IPv4 address to be used to access the instance"
type = string
sensitive = true
}
# 配置Linode提供程序
provider "linode" {
token = var.linode_token
}
# 定义cloud-init配置
data "template_file" "cloud_init" {
template = <<EOF
#cloud-config
package_update: true
package_upgrade: true
runcmd:
- apt update -y
- apt upgrade -y
EOF
}
# 创建一个8GB的Linode实例(位于丹佛)
resource "linode_instance" "my_instance" {
label = "xonotic-game-server"
region = "us-den-1"
type = "g6-dedicated-edge-4"
image = "linode/ubuntu20.04"
root_pass = var.root_password
booted = true
metadata {
user_data = base64encode(data.template_file.cloud_init.rendered)
}
}
# 创建防火墙以允许22端口和7000-8000端口的传入流量
resource "linode_firewall" "my_firewall" {
label = "xonotic-firewall"
inbound_policy = "DROP"
outbound_policy = "ACCEPT"
inbound {
label = "allow-ssh"
action = "ACCEPT"
protocol = "TCP"
ports = "22"
ipv4 = [var.admin_ip]
}
inbound {
label = "allow-custom-ports"
action = "ACCEPT"
protocol = "UDP"
ports = "7000-8000"
ipv4 = ["0.0.0.0/0"]
ipv6 = ["::/0"]
}
inbound {
label = "allow-custom-ports"
action = "ACCEPT"
protocol = "TCP"
ports = "8080"
ipv4 = ["0.0.0.0/0"]
ipv6 = ["::/0"]
}
linodes = [linode_instance.my_instance.id]
}
# 输出实例的IP地址
output "instance_ip" {
value = linode_instance.my_instance.ip_address
}
然后,创建一个名为 terraform.tfvars 的文件,并添加你的 Linode API token 和 root 密码(不要忘记替换占位符!):
linode_token = "your_linode_api_token" root_password = "your_root_password" admin_ip = "your_ipv4_address/32"
重要的安全提示: 请保管好你的 terraform.tfvars 文件,并且不要将其提交到公共代码库中! 若不清楚当前使用的 IP 地址,可运行以下命令查询本机公网 IP: curl http://whatismyip.akamai.com
步骤 4:初始化并应用 —— 让 Terraform 大显身手!
首先,初始化 Terraform: terraform init
然后,应用配置: terraform apply
系统将提示您确认更改。输入 yes 并按回车,Terraform 随即为您配置 Linode 实例并设置防火墙。这个过程可能需要几分钟。可以趁机喝杯咖啡(或者练练枪法…)。
步骤 5:SSH 连接 —— 您的服务器已就绪!
Terraform 完成后,将输出实例的 IP 地址。您也可以在 Linode 云管理平台中,通过新建实例的 "网络" 选项卡查看反向 DNS 名称。使用以下 SSH 命令进行连接: ssh root@your_instance_ip_or_dns
将 your_instance_ip_or_dns 替换为实际的 IP 地址或 DNS 名称。您需要输入在 terraform.tfvars 中设置的 root 密码。
步骤 6:安装 K3s—— 轻量级的 Kubernetes 强力支持
这一步非常简单!只需在 Linode 实例上运行以下命令: curl -sfL https://get.k3s.io | sh –
这会下载并安装 K3s。大约需要一到两分钟。
步骤 7:安装 Agones—— 游戏服务器编排时间!
现在我们来安装 Agones,它将管理我们的 Xonotic 游戏服务器。运行以下命令:
kubectl create namespace agones-system kubectl apply --server-side -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/install/yaml/install.yaml
这将创建一个专门的命名空间来运行 Agones,并将其部署到 K3s 集群中。
步骤 8:确认 Agones 正在运行 —— 检查状态
确保一切顺利运行:
kubectl describe --namespace agones-system pods
您将会看到输出,指示 Agones pod 正在运行。
步骤 9:部署并获取 Xonotic 游戏服务器状态
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml watch kubectl describe gameserver
步骤 10:获取游戏服务器 IP—— 准备连接!
获取游戏服务器和 IP 地址: kubectl get gs
步骤 11:安装 Xonotic 客户端
如果您还没有安装 Xonotic 客户端,请从 Xonotic 官网 下载并安装。
步骤 12:连接并开战 —— 火力全开时刻!
启动 Xonotic 客户端:
- 打开游戏客户端
- 选择 "多人游戏" 模式
- 手动输入服务器信息
- 输入通过 kubectl get gs 命令获取的 IP 地址和端口号
- 连接服务器,享受超低延迟的 Xonotic 对战体验!
清理工作
要删除 Agones 舰队和游戏服务器实例,请执行:
kubectl delete -f https://raw.githubusercontent.com/googleforgames/agones/release-1.47.0/examples/xonotic/fleet.yaml
然后在项目目录中使用 terraform destroy 命令删除 Linode 实例和防火墙,避免产生额外费用。
结论:未来游戏,尽在掌握
您刚刚使用边缘计算、K3s 和 Agones 构建了一个强大的低延迟游戏环境。这证明您可以摆脱对游戏厂商服务器的完全依赖,将游戏体验带到离您更近的地方。这样的部署让游戏运行更流畅、响应更迅速、体验更有趣 —— 再也不用担心因延迟而输掉比赛。
Akamai 提供超过 25 个全球分布的核心计算区域,供我们的云计算客户使用。为了让工作负载更接近用户,您还可以利用我们的分布式计算区域,在奥克兰、约翰内斯堡和波哥大等云服务覆盖不足的主要城市部署专用实例。立即注册账户,查看完整的可用分布式区域列表,联系我们的云顾问,了解您所在区域的资源使用资格,或者创建支持工单。
如需了解更多,请参阅我们关于如何使用 K3s 和 Agones 搭建 Xonotic 服务器的完整指南。