Alocando servidores de jogo em servidores dedicados

2

Eu gerencio um pequeno servidor de jogos que hospeda negócios para um jogo de nicho, e alugo servidores dedicados para manter os custos baixos, cada um deles executando muitas instâncias de servidores de jogos. Servidores de jogos podem ser criados e deletados a qualquer momento, e eu preciso decidir em qual máquina o servidor de jogos será instalado quando for criado. Depois que um servidor é criado, ele pode ser transferido para outra máquina se o administrador desejar.

Estou trabalhando para melhorar o back-end, e a principal preocupação que tenho é alocar servidores de jogos a máquinas. Atualmente, uso um algoritmo ingênuo:

Eu atribuo um peso para cada máquina, aproximadamente proporcional à quantidade de CPU / RAM.

Para muito aproximar aproximadamente os recursos usados por cada servidor de jogo, atribuo a cada servidor um peso dependendo do número máximo de jogadores que podem estar jogando naquele servidor.

Sempre que alguém cria um servidor de jogo ou solicita a transferência de seu servidor de jogo existente para outra máquina, eu calculo o seguinte para cada máquina:

(soma dos pesos dos servidores de jogo na máquina) / (peso da máquina)

e aloquei o servidor do jogo para a máquina com o menor resultado.

Minha principal preocupação aqui é com o cálculo dos pesos para cada servidor de jogo. Há muitos fatores diferentes que determinam o uso de recursos, como o número de jogadores atualmente online, mods instalados, configurações do servidor, etc. Como resultado, não acho possível atribuir um peso preciso com base nas propriedades do servidor, mesmo se Fiz uma fórmula mais complexa em comparação com o que estou fazendo atualmente com o número máximo de jogadores.

Acho que seria mais eficiente alocar servidores com base em dados empíricos de uso de recursos, seja com algum tipo de software de balanceamento de carga ou com uma solução personalizada. Mas não tenho certeza de como fazer isso, e também percebo que pode haver abordagens completamente diferentes que eu não considerei, então quaisquer dicas seriam muito apreciadas!

    
por CoffeeCrisp 28.09.2018 / 23:49

1 resposta

0

Você pode padronizar um nó obtendo um número fixo de jogos de tamanhos diferentes e clonar esse nó várias vezes. No entanto, isso só funciona se os seus padrões de uso forem relativamente constantes.

Existe software de cluster com posicionamento baseado na utilização. Para programas de aplicativos não isolados, para instâncias de contêiner ou para VMs completas. Você não mencionou contêineres nem nada, então presumo que eles não estejam em uso. Você também não mencionou a plataforma do sistema operacional, portanto, assuma o Linux.

Considere, por exemplo, clusters de marcapasso como no RHEL HA. Recursos em tal cluster podem ter utilização de recursos definida . Portanto, seus servidores grandes e pequenos têm requisitos de CPU e memória diferentes e são posicionados adequadamente. Como bônus, você pode se recuperar da falha do nó e migrar recursos para outro nó. No slide menos, os clusters de HA são difíceis de criar e precisam de testes para garantir que eles façam a coisa certa.

Se você tivesse um contêiner para implantar, o Kubernetes poderia gerenciá-lo em um cluster. Mais uma vez, um pouco de complexidade para obter esses recursos.

Você poderia reconsiderar a abordagem de nó bare-metal e fornecer a cada servidor sua própria VM. O hipervisor pode ser executado por você ou por algum provedor de nuvem. Em ambos os casos, encontre as contagens de vCPU e vRAM ideais para os diferentes tamanhos. O posicionamento nos nós é feito para você na nuvem, com um produto como o VMware DRS ou manual.

    
por 29.09.2018 / 14:24