在专用服务器之间分配游戏服务器

在专用服务器之间分配游戏服务器

我经营着一家小型游戏服务器托管公司,主要经营一款小众游戏。为了降低成本,我租用了专用服务器,每台服务器都运行着许多游戏服务器实例。游戏服务器可以随时创建和删除,我需要在创建游戏服务器时决定将其安装在哪台机器上。服务器创建后,如果管理员愿意,可以将其转移到另一台机器上。

我正在努力改进后端,我主要关心的是将游戏服务器分配给机器。我目前使用一种简单的算法:

我为每台机器分配一个权重,大致与 CPU/RAM 的数量成比例。

为了非常大致估算每个游戏服务器使用的资源,我根据该服务器上可能玩的最大玩家数量为每个游戏服务器分配一个权重。

每当有人创建游戏服务器或请求将其现有的游戏服务器转移到另一台机器时,我都会为每台机器计算以下内容:

(机器上游戏服务器的权重总和)/(机器的权重)

并且我将游戏服务器分配给成绩最低的那台机器。

我主要关心的是计算每个游戏服务器的权重。有许多不同的因素决定资源使用情况,例如当前在线玩家数量、安装的模组、服务器设置等。因此,我认为不可能根据服务器属性分配准确的权重,即使我制作了一个比我目前对最大玩家数量所做的更复杂的公式。

我认为根据资源使用情况的经验数据分配服务器会更有效,无论是使用某种形式的负载平衡软件还是使用定制的解决方案。但我不确定如何做到这一点,而且我也意识到可能存在我尚未考虑过的完全不同的方法,因此任何提示都将不胜感激!

答案1

您可以标准化一个节点,使其包含固定数量的不同大小的游戏,并多次克隆该节点。但是,这只有在您的使用模式相对稳定的情况下才有效。

存在基于利用率进行放置的集群软件。适用于非隔离应用程序、容器实例或完整虚拟机。您没有提到容器或任何东西,所以我假设它们没有被使用。您也没有提到操作系统平台,所以假设是 Linux。

以 RHEL HA 中的 Pacemaker 集群为例。此类集群中的资源可以具有定义的资源利用。因此,您的大型和小型服务器具有不同的 CPU 和内存要求,并且放置得当。作为奖励,您可以从节点故障中恢复并将资源迁移到另一个节点。在缺点方面,HA 集群的构建很棘手,需要测试以确保它们做正确的事情。

如果您要部署一个容器,Kubernetes 可以在集群中管理它。同样,获得这些功能相当复杂。

您可以重新考虑裸机节点方法,并为每个服务器提供自己的虚拟机。虚拟机管理程序可以由您或某个云提供商运行。无论哪种情况,找到适合不同大小的最佳 vCPU 和 vRAM 数量。节点上的放置可以在云中通过 VMware DRS 等产品为您完成,也可以手动完成。

相关内容