Load-Balancing

跨專用伺服器分配遊戲伺服器

  • September 29, 2018

我為小眾遊戲經營一家小型遊戲伺服器託管業務,並租用專用伺服器以降低成本,每個伺服器執行許多遊戲伺服器實例。遊戲伺服器可以隨時創建和刪除,我需要確定遊戲伺服器在創建時將安裝在哪台機器上。創建伺服器後,如果管理員願意,可以將其轉移到另一台機器上。

我正在努力改進後端,我主要關心的是如何將游戲伺服器分配給機器。我目前使用一個簡單的算法:

我為每台機器分配一個權重,大致與 CPU/RAM 的數量成正比。

為了非常粗略地估計每個遊戲伺服器使用的資源,我根據可能在該伺服器上玩的最大玩家數為每個遊戲伺服器分配一個權重。

每當有人創建遊戲伺服器或請求將其現有遊戲伺服器轉移到另一台機器時,我會為每台機器計算以下內容:

(機器上游戲伺服器的權重之和)/(機器的權重)

我將游戲伺服器分配給結果最低的機器。

我主要關心的是計算每個遊戲伺服器的權重。決定資源使用的因素有很多,例如目前線上的玩家數量、安裝的模組、伺服器設置等。因此,我認為不可能根據伺服器屬性分配準確的權重,即使與我目前對最大玩家人數所做的相比,我制定了一個更複雜的公式。

我認為根據資源使用的經驗數據分配伺服器會更有效,無論是使用某種形式的負載平衡軟體還是使用定制的解決方案。但我不知道該怎麼做,而且我也意識到可能有完全不同的方法我沒有考慮過,所以任何提示都將不勝感激!

您可以標準化一個節點以獲得固定數量的不同大小的遊戲,並多次複製該節點。但是,這僅在您的使用模式相對穩定的情況下才有效。

存在基於使用率放置的集群軟體。對於非隔離的應用程序、容器實例或完整的虛擬機。你沒有提到容器或任何東西,所以我假設那些沒有被使用。你也沒有提到作業系統平台,所以假設 Linux。

以 RHEL HA 中的 Pacemaker 集群為例。這種集群中的資源可以定義資源使用率。因此,您的大小伺服器對 CPU 和記憶體的要求不同,並且放置得當。作為獎勵,您可以從節點故障中恢復並將資源遷移到另一個節點。在負數幻燈片上,HA 集群建構起來很棘手,需要測試以確保它們做正確的事情。

如果你有一個容器要部署,Kubernetes 可以在集群中管理它。同樣,獲得這些功能相當複雜。

您可以重新考慮裸機節點方法,並為每台伺服器提供自己的虛擬機。管理程序可以由您或某些雲提供商執行。在任何一種情況下,找到最適合不同大小的 vCPU 和 vRAM 計數。節點上的放置可以通過 VMware DRS 等產品在雲中為您完成,也可以手動完成。

引用自:https://serverfault.com/questions/933177