Como os contêineres funcionam no Amazon GameLift Servers - Amazon GameLift Servers

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como os contêineres funcionam no Amazon GameLift Servers

As frotas de contêineres do Amazon GameLift Servers são projetadas para oferecer flexibilidade na forma como você implanta e escala seus aplicativos em contêineres. Ele usa o Amazon Elastic Container Service (Amazon ECS) para gerenciar implantação e execução de tarefas para suas frotas do Amazon GameLift Servers. Este tópico descreve os elementos estruturais básicos para a execução de contêineres em uma frota gerenciada pelo Amazon GameLift Servers, ilustra arquiteturas comuns e descreve alguns conceitos principais.

Acelere a integração com essas ferramentas para contêineres gerenciados:
  • O kit inicial de contêineres agiliza a integração e a configuração da frota. Ele adiciona atributos essenciais de gerenciamento de sessões de jogos ao seu servidor de jogos e usa modelos pré-configurados para criar uma frota de contêineres e um pipeline de implantação automatizado para seu servidor de jogos. Após a implantação, use o console do Amazon GameLift Servers e as ferramentas de API para monitorar o desempenho da frota, gerenciar sessões de jogo e analisar métricas.

  • Para desenvolvedores do Unreal Engine ou Unity, use os plug-ins do Amazon GameLift Servers para integrar seu servidor de jogos e criar uma frota de contêineres de dentro do ambiente de desenvolvimento do seu mecanismo de jogo. Os fluxos de trabalho guiados do plug-in ajudam você a criar uma solução rápida e simples com hospedagem baseada em nuvem usando contêineres gerenciados. Em seguida, desenvolva essa base para criar uma solução de hospedagem personalizada para seu jogo.

Componentes da frota de contêineres

Frota

Uma frota de contêineres é um conjunto de instâncias do Amazon EC2 para hospedar os servidores de jogos em contêineres. Essas instâncias são gerenciadas pelo Amazon GameLift Servers em seu nome. Ao criar uma frota, você configura como a arquitetura de contêiner com seu software de servidor de jogos é implantada em cada instância da frota. Você pode criar uma frota de contêineres com instâncias em uma ou várias localizações geográficas. Você pode usar ferramentas de escalabilidade do Amazon GameLift Servers para escalar automaticamente a capacidade de uma frota de contêineres para hospedar sessões de jogos e jogadores.

Instância

Uma instância do Amazon EC2 é o servidor virtual que fornece capacidade computacional para hospedagem de jogos. Com o Amazon GameLift Servers, você pode escolher entre uma variedade de tipos de instância. Cada tipo de instância oferece uma combinação diferente de capacidade de rede, CPU, memória e armazenamento.

Quando você cria uma frota de contêineres, o Amazon GameLift Servers implanta seus contêineres com base no tipo de instância escolhido e na configuração da sua frota. Cada instância de frota implantada é idêntica e executa seu software de servidor de jogos em contêineres da mesma forma. O número de instâncias em uma Frota determina o tamanho da frota e a capacidade de hospedagem de jogos.

Grupo de contêineres

O Amazon GameLift Servers usa o conceito de um grupo de contêineres para descrever e gerenciar um conjunto de contêineres. Um grupo de contêineres é semelhante a uma “tarefa” ou “pod” de contêineres. Em cada grupo de contêineres, você pode definir como os contêineres se comportam, configurar dependências e compartilhar os recursos de CPU e memória disponíveis.

Cada instância da frota pode ter os seguintes tipos de grupos de contêineres:

  • Um grupo de contêineres de servidores de jogos gerencia os contêineres que executam seu aplicativo de servidor de jogos e o software de suporte. Uma frota de contêineres deve ter um desse tipo de grupo de contêineres para hospedar sessões de jogo e jogadores. Um grupo de contêineres de servidores de jogos pode ser replicado em uma instância de frota. O número de réplicas de grupos de servidores de jogos por instância da frota depende dos requisitos de computação do seu software e dos recursos computacionais disponíveis na instância.

  • Um grupo de contêineres por instância, que é opcional, oferece a capacidade de executar software adicional em cada instância da frota. Eles são úteis para executar serviços em segundo plano ou programas utilitários, como para monitoramento. Seu software de servidor de jogos não depende diretamente dos processos em um grupo por instância. Somente uma cópia de um grupo de contêineres por instância é implantada em cada instância de frota.

Cada grupo de contêineres em uma frota de contêineres tem um contêiner designado como “essencial”. Um contêiner essencial determina o ciclo de vida do grupo de contêineres. Se o contêiner essencial falhar, todo o grupo de contêineres reinicia.

Contêiner

O contêiner é o elemento mais básico de uma arquitetura baseada em contêiner. Ele inclui uma imagem de contêiner com executáveis de software e arquivos dependentes. Defina um contêiner para configurar como o software é executado e interage com o Amazon GameLift Servers.

O Amazon GameLift Servers define dois tipos de contêineres:

  • Um contêiner de servidor de jogos inclui tudo o que você precisa para executar os processos do servidor de jogos e hospedar sessões de jogo para os jogadores. Inclui a criação do seu servidor de jogos e o software dependente. Defina um contêiner de servidor de jogos para o grupo de contêineres de servidores de jogos de uma frota. O contêiner do servidor de jogos é automaticamente considerado essencial para o grupo de contêineres.

  • Um contêiner de suporte executa software adicional para dar suporte ao seu servidor de jogos. É semelhante ao conceito de contêiner “sidecar”. Ele oferece a opção de executar e escalar o software de suporte junto com seus servidores de jogos, mas gerenciá-lo como contêineres separados. Em um grupo de contêineres de servidores de jogos, você pode definir zero ou mais contêineres de suporte. Em um grupo de contêineres por instância, todos os contêineres são contêineres de suporte. Qualquer contêiner de suporte pode ser designado como essencial.

Computação

Uma computação representa uma cópia de um grupo de contêineres de servidores de jogos em uma instância de frota.

Arquiteturas comuns

O diagrama a seguir mostra a estrutura mais simples da frota de contêineres. Nessa estrutura, cada instância da frota mantém uma cópia do grupo de contêineres do servidor de jogos. O grupo de contêineres tem um único contêiner de servidor de jogos que executa um processo de servidor de jogos. Neste exemplo, a frota de contêineres está configurada para colocar uma cópia do grupo de contêineres do servidor de jogos por instância. Com essa arquitetura, cada instância executa um processo de servidor de jogos.

Um exemplo de uma arquitetura de contêiner simples, com um único contêiner de servidor de jogos no grupo de contêineres de servidores de jogos.

Esse segundo diagrama ilustra uma arquitetura de frota de contêineres mais complexa. Nessa estrutura, a frota tem um grupo de contêineres de servidores de jogos e um grupo de contêineres por instância. O grupo de contêineres do servidor de jogos tem contêineres separados para o processo do servidor de jogos e um processo de suporte. A frota está configurada para colocar três cópias do grupo de contêineres do servidor de jogos em cada instância da frota. O grupo de contêineres por instância nunca é replicado. Neste exemplo, a frota de contêineres está configurada para colocar três cópias do grupo de contêineres do servidor de jogos por instância. Com essa arquitetura, cada instância executa três processos de servidor de jogos.

Um exemplo de arquitetura de contêiner com vários contêineres no grupo de contêineres do servidor de jogos e um contêiner no grupo de contêineres por instância.

Atributos principais

Esta seção resume como o Amazon GameLift Servers implementa alguns conceitos básicos de contêiner. Para obter instruções sobre como trabalhar com frotas de contêineres, consulte os tópicos relevantes neste guia.

Atualizações ativas da frota

Os contêineres gerenciados fornecem suporte avançado para ajudá-lo a gerenciar o ciclo de vida do seu software hospedado e da arquitetura de contêineres. Você pode atualizar suas definições de contêiner, incluindo imagens de contêiner, e implantar alterações em suas frotas existentes. Esse atributo torna mais rápido e fácil iterar as alterações em seus contêineres durante o desenvolvimento. Ele também fornece atributos para ajudá-lo a criar, implantar e monitorar suas atualizações de versão de software ao longo do tempo. Esses recursos incluem:

  • Gerenciar as atualizações e o controle de versão das definições de grupos de contêineres. Você pode atualizar quase todas as propriedades de uma definição de grupo de contêineres, incluindo imagens de contêineres e definições de configuração. Sempre que você atualiza um contêiner, o Amazon GameLift Servers automaticamente atribui um número de versão à atualização e, por padrão, mantém todas as versões. Você pode acessar qualquer versão específica e excluir as versões conforme desejado. Ao criar uma frota de contêineres, você pode especificar a definição e a versão do grupo de contêineres a implantar.

  • Atualize as frotas de contêineres existentes com novas definições e configurações de grupos de contêineres. Você pode implantar atualizações de contêineres em frotas que já estão implantadas em instâncias de frota. Você pode acompanhar o status das implantações de atualização em cada local da frota usando o Console de gerenciamento da AWS ou o AWS SDK e a CLI.

  • Configure como você deseja que as atualizações da frota sejam implantadas em uma frota ativa.

    • Proteção da sessão de jogo. Escolha proteger as instâncias da frota com sessões de jogo ativas até o final das sessões de jogo (implantação segura). Ou opte por substituir as instâncias da frota, independentemente da atividade da sessão de jogo (implantação insegura). Use implantações inseguras durante as fases de desenvolvimento e teste para reduzir o tempo de implantação.

    • Percentual mínimo de integridade. Especifique a porcentagem de tarefas íntegras que você deseja manter durante a implantação. Esse atributo permite que você decida quantas instâncias da frota são afetadas durante uma implantação. Um valor baixo prioriza a velocidade de implantação, enquanto um valor alto garante que a disponibilidade do servidor de jogos permaneça alta durante toda a implantação.

    • Estratégia de falha na implantação. Decida quais medidas tomar se uma implantação falhar. Uma falha na implantação significa que alguns dos contêineres atualizados falharam nas verificações de status e são considerados danificados. Você pode definir implantações para reverter automaticamente todas as instâncias da frota para o estado implantado anteriormente. Como alternativa, você pode optar por manter algumas das instâncias da frota danificadas para uso na depuração.

A capacidade de atualizar frotas ativas é muito útil quando você deseja implantar uma atualização no software do servidor de jogos. Depois de criar uma nova imagem de contêiner para seu servidor de jogos, implantá-la é um processo de duas etapas: primeiro, atualizar a definição do grupo de contêineres com a nova imagem e, segundo, atualizar a frota de contêineres. O Amazon GameLift Servers lida com todas as outras tarefas conforme necessário.

Embalagem de contêineres

Ao desenvolver sua estrutura de contêineres para implantação em uma frota de contêineres, um objetivo comum é otimizar o uso da capacidade de computação disponível. Para atingir esse objetivo, você deve incluir o maior número possível de grupos de contêineres de servidores de jogos em cada instância da frota.

O Amazon GameLift Servers ajuda você a fazer isso calculando o máximo de grupos de contêineres de servidores de jogos por instância, com base nas seguintes informações:

  • O tipo de instância da frota e seus recursos de vCPU e memória.

  • Os requisitos de vCPU e memória para todos os contêineres no grupo de contêineres do servidor de jogos.

    Os requisitos de vCPU e memória para todos os contêineres em um grupo de contêineres por instância, se houver um.

Ao criar uma frota de contêineres, você pode usar o máximo calculado ou especificar o número desejado. Como prática recomendada, planeje fazer experiências com seu software de servidor de jogos em contêineres para determinar os requisitos de recursos para um desempenho ideal do servidor de jogos.

Escalabilidade da capacidade

A capacidade da frota mede o número de sessões de jogo que uma frota pode hospedar simultaneamente. Você também pode medir a capacidade com base no número de jogadores simultâneos que uma frota pode suportar. Para aumentar ou diminuir a capacidade de hospedagem de uma frota, você adiciona ou remove instâncias da frota.

Uma frota de contêineres é configurada para executar um número específico de processos simultâneos do servidor de jogos em cada instância da frota. (Você pode calcular isso com base (1) nos grupos de contêineres do servidor de jogos por instância e (2) no número de processos do servidor de jogos que são executados em cada grupo de contêineres.) O número de servidores de jogos simultâneos por instância indica qual é o impacto de adicionar ou remover cada instância da frota. Por exemplo, se sua frota de contêineres executa 1 processo de servidor de jogos em cada grupo de contêineres de servidores de jogos e cada instância de frota contém 100 grupos de contêineres de servidores de jogos, você aumenta ou diminui a capacidade da sua frota de hospedar sessões de jogo simultâneas em incrementos de 100. Se cada sessão de jogo tiver 10 vagas para jogadores, você aumenta ou diminui a capacidade da sua frota de hospedar jogadores em incrementos de 1000.

Com frotas de contêineres, você pode usar qualquer um dos métodos de escalonamento de capacidade fornecidos pelo Amazon GameLift Servers. Isso inclui:

  • Definir a capacidade da frota manualmente definindo a contagem de instâncias da frota desejada.

  • Configurar o escalonamento automático visando o buffer desejado de instâncias disponíveis (rastreamento de metas). Esse método mantém automaticamente uma certa quantidade de recursos de hospedagem ociosos para que os novos jogadores possam entrar nos jogos rapidamente. Conforme a demanda dos jogadores aumenta ou diminui, o tamanho desse buffer é ajustado continuamente.

  • Configurar o escalonamento automático com regras de escalabilidade personalizadas (atributo avançado). Esse método permite que você escale com base nas métricas de frota que você escolher.

Conexões entre o cliente/servidor de jogos

Com frotas gerenciadas pelo Amazon GameLift Servers, os clientes de jogos se conectam diretamente aos seus servidores de jogos hospedados na nuvem. Quando um cliente de jogo pede para entrar em um jogo, o Amazon GameLift Servers encontra uma sessão de jogo e fornece informações de conexão (IP e porta) ao cliente do jogo. Você pode controlar o acesso externo às instâncias da frota abrindo determinados intervalos de portas (permissões de entrada) para a frota. As permissões de entrada determinam quais portas estão abertas para o tráfego de entrada. Você pode desligar rapidamente todas as portas, limitar a algumas ou abrir todas as portas.

As frotas de contêineres gerenciados exigem uma configuração adicional que permita o acesso aos processos que estão sendo executados em um contêiner. Ao criar uma definição de contêiner, você especifica um conjunto de portas, uma para cada processo que usa uma conexão. Isso inclui:

  • Todos os processos do servidor de jogos que serão executados simultaneamente no contêiner do servidor de jogos. Todos os processos do servidor de jogos devem permitir que os clientes do jogo se conectem para participar de uma sessão de jogo.

  • Qualquer processo em um contêiner de suporte ao qual uma fonte externa precise se conectar. Por exemplo, você poderia se conectar remotamente a um aplicativo de teste.

Ao definir as configurações da porta de contêiner voltada para o interior, o Amazon GameLift Servers as usa para calcular as permissões de entrada externas às quais os clientes do jogo e outros aplicativos podem se conectar. O Amazon GameLift Servers também gerencia o mapeamento entre permissões de entrada e portas de contêiner individuais que dá aos jogadores acesso a uma sessão de jogo em um contêiner. Esse mapeamento interno fornece uma camada de segurança ao proteger seus servidores de jogos do acesso direto às portas do contêiner. Você tem a opção de personalizar as configurações de portas externas de uma frota, conforme necessário. Para obter mais informações sobre como configurar portas de frotas de contêineres manualmente, consulte Configurar conexões de rede.

É possível modificar as configurações de porta de uma frota de contêineres a qualquer momento. Essa alteração exige a implantação de uma atualização de frota.

O diagrama a seguir mostra o papel das conexões de portas em uma frota de contêineres. Conforme mostrado, você define portas em contêineres individuais e o Amazon GameLift Servers usa essas informações para configurar portas suficientes na instância da frota para mapear para cada porta de contêiner. Tanto as permissões de entrada da instância externas quanto as portas de conexão internas são calculadas pelo Amazon GameLift Servers para sua frota, a menos que você opte por configurá-las manualmente.

Uma ilustração das configurações de porta de uma frota de contêineres. Os mapeamentos de portas permitem que o tráfego externo se conecte a uma instância da frota e tenha acesso a um contêiner individual na instância.

Registro de contêineres

Em frotas de contêineres gerenciadas, os fluxos de saída padrão (e erro padrão) são capturados para todos os contêineres. Isso inclui os logs de sessão de jogo do seu servidor de jogos. Você pode configurar uma frota de contêineres para usar uma das várias opções para lidar com fluxos de saída:

  • Salve a saída do contêiner como um fluxo de logs do Amazon CloudWatch. Cada fluxo de logs faz referência ao ID da frota e ao contêiner. Se você escolher essa opção de registro para a frota, você especifica um grupo de logs do CloudWatch, que organiza todos os fluxos de log da frota. Em seguida, você pode usar os atributos do CloudWatch para pesquisar e analisar dados de log conforme necessário.

  • Salve a saída do contêiner em um bucket de armazenamento do Amazon Simple Storage Service (Amazon S3). Você pode visualizar, compartilhar ou baixar o conteúdo conforme necessário.

  • Desativar o registro. Nesse cenário, a saída do contêiner não é salva.

O Amazon GameLift Servers envia dados de log de frotas de contêineres gerenciados para os serviços CloudWatch ou Amazon S3 em sua conta da AWS. Para visualizar seus dados, use o Console de gerenciamento da AWS ou outras ferramentas fazendo login em sua conta da AWS e trabalhando com os serviços individuais. Você estende o acesso limitado ao Amazon GameLift Servers para realizar essas ações criando um perfil de serviço para suas frotas de contêineres.

É possível modificar a configuração de registro de uma frota de contêineres a qualquer momento. Essa alteração exige a implantação de uma atualização de frota.

Frotas de contêineres e o Atendente do Amazon GameLift Servers

Uma arquitetura de contêiner comumente usada executa um único processo em cada contêiner. Em uma frota de contêineres do Amazon GameLift Servers, o grupo de contêineres de servidores de jogos tem um contêiner de servidores de jogos que executa um processo de servidor de jogos. Com essa arquitetura, o Amazon GameLift Servers gerencia o ciclo de vida do processo de um único servidor de jogos em cada grupo de contêineres de servidores de jogos em uma instância de frota.

Se você optar por criar uma arquitetura de contêiner que execute vários processos de servidores de jogos em cada grupo de contêineres de servidores de jogos, precisará de uma forma de gerenciar o ciclo de vida de todos os processos. Isso inclui tarefas como iniciar, encerrar e substituir processos conforme necessário, gerenciar o número desejado de processos a serem executados simultaneamente e lidar com estados de falha.

Você pode optar por usar o Atendente do Amazon GameLift Servers para essas tarefas. Para uma frota de contêineres, o Atendente implementa instruções de runtime que especificam quais executáveis executar (e quantos), fornecem parâmetros de inicialização e definem regras para a ativação do servidor de jogos. Por exemplo, instruções de runtime podem instruir que o Atendente mantenha dez processos de servidor de jogos para uso em produção e um processo de servidor de jogos com parâmetros de inicialização especiais para teste.

Para usar o Atendente com suas frotas de contêineres, adicione o Atendente à imagem do contêiner e inclua um conjunto de instruções de runtime. Para obter mais informações sobre o agente do , consulte Trabalhar com o Amazon GameLift Servers Agent.