用一台小 VPS 撑起游戏服务器舰队
我们所有的在线世界——门户网站、官方世界、玩家自己创建的世界——都跑在一台租来的 Linux 服务器(VPS)上。没有数据中心,也没有五位数的云账单。这篇文章里我会讲讲这台服务器是怎么搭的,以及我们一路上学到了什么。
先加固。游戏上服务器之前,基础安全摆在第一位:只开放必要端口的防火墙(ufw)、防止自动化登录尝试的 fail2ban,还有只允许密钥登录的 SSH。Caddy 以 Docker 版本充当反向代理——它会自动获取 TLS 证书,并把请求转发到正确的容器。
每个世界都有自己的容器。游戏本身以 Docker 镜像运行,每个世界都有自己的容器,并有固定的限制:每个世界 768 MB 内存和 2 个 CPU 核心,同时最多十个活跃世界。这样,一个世界永远不会拖垮整台服务器。
会给我们打电话的监控。Netdata 用超过 140 条警报盯着服务器——从“磁盘快满了”到“门户网站没有响应”。一旦触发,手机上就会收到一条推送通知(通过 ntfy)。这样,我们总是比玩家更早知道出了问题。
最让人意外的发现:我们在空闲状态下测量时,已用内存大约有一半根本不是给游戏的——而是给了 Docker 和监控本身。撑起游戏的基础设施,空转时比游戏本身还重。这是个很好的提醒:要测量,不要猜。
运行几个月后的结论是:一台小小的、认真加固过的服务器,完全可以撑起一个独立多人游戏——只要你设好限制,并且时刻留意。
留言