

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á.

# Valide e solucione problemas de implantações de frotas de contêineres
<a name="containers-deployment-validation"></a>

Uma *implantação de frota*, chamada de *implantação* neste tópico, é o processo Amazon GameLift Servers usado para substituir os contêineres nas instâncias de uma frota de contêineres por contêineres que usam as novas configurações da frota, como uma nova versão de definição de grupo de contêineres. Em vez de substituir todos os contêineres em execução de uma só vez, uma implantação primeiro verifica se os novos contêineres podem hospedar sessões de jogo e, em seguida, substitui o restante gradualmente para detectar alterações incorretas antes que elas sejam implantadas em toda a frota. Uma frota de contêineres inicia uma implantação em três situações:
+ **Quando você cria uma frota com uma definição de grupo de contêineres.** Se sua [CreateContainerFleet](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateContainerFleet.html)solicitação incluir uma definição de grupo de contêineres do servidor de jogos, a criação da frota iniciará uma implantação que instala seus contêineres nas novas instâncias da frota. Se você criar uma frota sem uma definição de grupo de contêineres, nenhuma instância será implantada e a frota não terá implantação até que você adicione uma definição de grupo de contêineres do servidor de jogos.
+ **Quando você atualiza as definições do grupo de contêineres da frota ou outras configurações de contêineres.** [UpdateContainerFleet](https://docs.aws.amazon.com/gamelift/latest/apireference/API_UpdateContainerFleet.html)inicia uma implantação quando a atualização altera os contêineres que a frota executa, por exemplo, quando você especifica uma nova versão de definição de grupo de contêineres do servidor de jogos. Uma atualização que não altera nenhuma dessas configurações não inicia uma implantação. Para obter informações sobre quais configurações iniciam uma implantação, consulte[Atualizar um GameLift Servidores Amazon frota de contêineres gerenciada](containers-update-fleet.md).
+ **Quando você adiciona locais a uma frota ativa.** Amazon GameLift Serversinicia uma implantação nos novos locais usando as definições de grupo de contêineres configuradas da frota. Os locais existentes não são reimplantados. Você não pode adicionar locais enquanto outra implantação estiver em andamento.

Para ver os detalhes de uma implantação, chame [DescribeFleetDeployment](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeFleetDeployment.html), que retorna um [FleetDeployment](https://docs.aws.amazon.com/gamelift/latest/apireference/API_FleetDeployment.html)objeto. Ele inclui o ID, o status e a configuração da implantação, junto com as versões de definição do grupo de contêineres que estão sendo implantadas e as versões de reversão. A `DeploymentDetails.LatestDeploymentId` propriedade da frota identifica sua implantação mais recente.

**nota**  
As implantações se aplicam somente às frotas de contêineres gerenciadas.

## Configurar uma implantação
<a name="containers-deployment-validation-config"></a>

Uma implantação [DeploymentConfiguration](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeploymentConfiguration.html)é o conjunto de regras que controlam como a implantação ocorre em toda a frota e o que acontece se ela falhar. Para obter informações sobre os valores e padrões de cada configuração, consulte a Referência [DeploymentConfiguration](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeploymentConfiguration.html)da *Amazon GameLift ServersAPI*.

Você define a configuração de implantação ao chamar `UpdateContainerFleet` ou editar a frota no console. `CreateContainerFleet`não aceita uma configuração de implantação, portanto, a primeira implantação de uma frota sempre usa os valores padrão.

## Como GameLift Servidores Amazon valida uma implantação
<a name="containers-deployment-validation-howitworks"></a>

Quando uma implantação começa, Amazon GameLift Servers primeiro valida os grupos de contêineres do servidor do jogo em cada uma das localizações da frota. Ele opera os novos contêineres em uma pequena parte da capacidade existente da frota e verifica se eles estão saudáveis. Um novo grupo de contêineres de servidores de jogos fica *íntegro* quando um contêiner de servidor de jogos liga `ProcessReady()` para informar que está pronto para hospedar sessões de jogo.

Essa validação inicial verifica os grupos de contêineres do servidor do jogo. Se sua frota também usa uma definição de grupo de contêineres por instância, Amazon GameLift Servers atualize esses grupos depois de atualizar os grupos de servidores do jogo. Amazon GameLift Serversverifica os grupos por instância separadamente antes da conclusão da implantação; eles não usam a verificação do servidor do `ProcessReady()` jogo.

A validação falhará se um novo grupo de contêineres do servidor de jogos não ficar saudável antes de Amazon GameLift Servers parar de esperar. Para obter informações sobre motivos comuns e como investigá-los, consulte[Depurar uma implantação prejudicada](#containers-deployment-validation-debug).

Se a validação falhar, Amazon GameLift Servers aplica a implantação `ImpairmentStrategy` e define o status da implantação como `IMPAIRED` (para`MAINTAIN`) ou `ROLLBACK_IN_PROGRESS` (para`ROLLBACK`). Somente após o sucesso da validação em um local, os contêineres restantes que estão executando seus servidores de jogos lá são Amazon GameLift Servers substituídos.

### Quanto tempo leva a validação
<a name="containers-deployment-validation-timeouts"></a>

A validação demora mais quando a capacidade Amazon GameLift Servers usada para validação é hospedar sessões de jogos protegidas. A frota `NewGameSessionProtectionPolicy` determina a proteção padrão para novas sessões de jogo. Os valores válidos são `NoProtection` e `FullProtection`. A implantação `ProtectionStrategy` determina se a implantação respeita essa proteção. Os valores válidos são `WITH_PROTECTION` e `IGNORE_PROTECTION`.

Quando a frota está `NewGameSessionProtectionPolicy` configurada `FullProtection` e a implantação está `ProtectionStrategy` configurada para`WITH_PROTECTION`, Amazon GameLift Servers permite um tempo limite de validação maior para que as sessões de jogo protegidas terminem. Com qualquer outra combinação, ele usa um tempo limite menor.

**Importante**  
Se seus novos contêineres nunca ficarem íntegros e a frota usar `FullProtection` com uma `WITH_PROTECTION` implantação, a implantação poderá permanecer em `IN_PROGRESS` status até que as sessões de jogo protegidas terminem, antes que ela reporte uma falha. Para obter um sinal mais rápido, implante novas imagens de contêiner `IGNORE_PROTECTION` enquanto as testa ou cancele você mesmo a implantação. Para obter instruções sobre como cancelar uma implantação, consulte[Cancele uma implantação iniciando uma nova](#containers-deployment-validation-cancel).  
Se você protege sessões de jogo individuais com [UpdateGameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_UpdateGameSession.html)uma frota que `NewGameSessionProtectionPolicy` está`NoProtection`, Amazon GameLift Servers não estenda a espera por elas. Se essas sessões de jogo não terminarem a tempo, a validação poderá falhar mesmo que a nova configuração esteja funcionando.

## Acompanhe o status da implantação
<a name="containers-deployment-validation-status"></a>

Para rastrear uma implantação no [Amazon GameLift Serversconsole](https://console.aws.amazon.com/gamelift/), abra a frota e escolha a guia **Implantações.** Para rastreá-lo com o AWS Command Line Interface (AWS CLI), use [list-fleet-deployments](https://docs.aws.amazon.com/cli/latest/reference/gamelift/list-fleet-deployments.html)para encontrar uma ID de implantação e, em seguida, [describe-fleet-deployment](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-deployment.html)para obter os detalhes de uma única implantação.

Para obter informações sobre os valores do status de implantação e o que cada um significa, consulte [DeploymentStatus](https://docs.aws.amazon.com/gamelift/latest/apireference/API_FleetDeployment.html#gameliftservers-Type-FleetDeployment-DeploymentStatus)a *Referência da Amazon GameLift Servers API*.

## Depurar uma implantação prejudicada
<a name="containers-deployment-validation-debug"></a>

Uma implantação deficiente significa que os novos contêineres não ficaram íntegros durante a validação: nenhum contêiner do servidor de jogos chamado `ProcessReady()` antes Amazon GameLift Servers parou de esperar, geralmente porque um contêiner saiu ou falhou ao iniciar. A causa geralmente está na imagem do contêiner ou no servidor do jogo. Descubra por que o contêiner saiu ou por que o servidor do jogo nunca ficou pronto.

### Revise o registro de eventos da frota
<a name="containers-deployment-validation-debug-events"></a>

O registro de eventos da frota registra o que Amazon GameLift Servers foi observado durante a implantação. Visualize na guia **Eventos** da frota no console ou ligue [describe-fleet-events](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-events.html). Os códigos de evento a seguir são relevantes para uma implantação com falha:
+ `GAME_SERVER_CONTAINER_GROUP_CRASHED`e `PER_INSTANCE_CONTAINER_GROUP_CRASHED` — um grupo de contêineres saiu ou falhou ao iniciar. Quando Amazon GameLift Servers tem o código de saída do contêiner, ele inclui o código na mensagem do evento.
+ `GAME_SERVER_CONTAINER_GROUP_REPLACED_UNHEALTHY`e `INSTANCE_REPLACED_UNHEALTHY` — Amazon GameLift Servers substituiu um grupo de contêineres ou uma instância que não ficou íntegra. Eles podem se repetir em todos os locais da frota enquanto uma implantação está falhando.
+ `SERVER_PROCESS_MISCONFIGURED_CONTAINER_PORT`— um contêiner de servidor de jogos usou uma porta que não corresponde às portas declaradas na definição do grupo de contêineres.
+ `LOCATION_STATE_UPDATING`e `LOCATION_STATE_ACTIVE` — eles agrupam a implantação em cada local, o que ajuda você a alinhar outros eventos com a implantação que os produziu.
+ `COMPUTE_LOG_UPLOAD_FAILED`— a coleta de registros de um contêiner parou de funcionar, então os registros desse contêiner podem estar incompletos ou ausentes.

### Leia os registros do contêiner
<a name="containers-deployment-validation-debug-logs"></a>

Uma frota de contêineres `LogConfiguration` define Amazon GameLift Servers para onde envia a saída padrão de cada contêiner: `CLOUDWATCH` (o padrão)`S3`, ou`NONE`. Mantenha-o configurado `CLOUDWATCH` para `S3` que a saída do contêiner esteja disponível quando uma implantação falhar. Quando um contêiner falha antes que o servidor do jogo comece a ser executado, por exemplo, porque o ponto de entrada do contêiner se refere a um arquivo que não está na imagem, essa saída é o único registro da falha. Para obter informações sobre o registro de contêineres, consulte[Diferenças de registro: frotas gerenciadas EC2 versus frotas de contêineres](logging-server-messages-ec2-vs-containers.md).

### Conecte-se a um contêiner danificado
<a name="containers-deployment-validation-debug-connect"></a>

Se você implantou a estratégia de `MAINTAIN` deficiência, pode se conectar a um contêiner que o Amazon GameLift Servers guardou e inspecioná-lo diretamente. Use isso para verificar as permissões do arquivo, confirmar quais arquivos a imagem realmente contém e executar o executável do servidor do jogo manualmente para ver o que ele relata. Para obter instruções sobre como se conectar a um contêiner, consulte[Conecte-se a contêineres](containers-remote-access.md).

### Problemas comuns de implantação
<a name="containers-deployment-validation-debug-causes"></a>

Os sintomas a seguir são comuns em implantações com falha ou lentidão, juntamente com suas causas usuais.

**O contêiner começa e sai imediatamente, repetidamente.**  
Se o ponto de entrada do contêiner não puder ser executado, verifique o seguinte:  
+ Verifique se o script de inicialização e o executável do servidor do jogo estão marcados como executáveis na imagem.
+ Confirme se a arquitetura de CPU do executável corresponde ao tipo de instância da frota.
+ Verifique se a imagem contém o intérprete e as bibliotecas compartilhadas de que o executável precisa.
Para obter informações sobre como criar uma imagem que Amazon GameLift Servers possa ser executada, consulte[Crie uma imagem de contêiner para GameLift Servidores Amazon](containers-prepare-images.md).

**A implantação é lenta, mas nada está falhando.**  
Uma `WITH_PROTECTION` implantação espera que as sessões de jogo protegidas terminem, tanto durante a validação quanto quando substitui os contêineres da frota. Verifique as sessões de jogo ativas da frota antes de tratar uma missão longa como uma falha. Para obter informações sobre os tempos de espera da validação, consulte[Quanto tempo leva a validação](#containers-deployment-validation-timeouts).

## Cancele uma implantação iniciando uma nova
<a name="containers-deployment-validation-cancel"></a>

Para cancelar uma implantação e retornar a frota à configuração anterior, ligue `UpdateContainerFleet` ou edite a frota no console para iniciar uma nova implantação que reverta as alterações. O caso mais comum é uma nova versão de definição de grupo de contêineres, que é revertida pelo procedimento a seguir. Amazon GameLift Serversregistra as versões que a frota usou quando esteve ativa pela última vez na implantação em andamento como `RollbackGameServerBinaryArn` e`RollbackPerInstanceBinaryArn`, para que você não precise descobrir para qual versão voltar. Se a implantação também alterou outras configurações, como a configuração de log ou o intervalo de portas de conexão, redefina-as na mesma `UpdateContainerFleet` solicitação.

Antes de começar, configure o AWS CLI para sua conta e identifique a casa da frota Região da AWS. Esse procedimento requer uma implantação em andamento e uma versão anterior da definição do grupo de contêineres para restauração. Use `list-fleet-deployments` para encontrar o ID de implantação. Para instruções, consulte [Acompanhe o status da implantação](#containers-deployment-validation-status).

Nos comandos, {{fleet-id}} substitua pela ID da frota, {{deployment-id}} pela ID de implantação em andamento e {{fleet-home-region}} pela casa Região da AWS da frota.

**Para substituir uma implantação em andamento por uma versão anterior do contêiner (AWS CLI)**

1. Use o AWS CLI comando a seguir para obter a versão para a qual retornar:

   ```
   aws gamelift describe-fleet-deployment \
       --fleet-id {{fleet-id}} \
       --deployment-id {{deployment-id}} \
       --region {{fleet-home-region}}
   ```

   Na resposta, `RollbackGameServerBinaryArn` contém a versão de definição do grupo de contêineres do servidor de jogos que a frota usou quando esteve ativa pela última vez. Se a frota tiver um grupo de contêineres por instância, `RollbackPerInstanceBinaryArn` mantém essa versão.

1. Use o AWS CLI comando a seguir para iniciar uma nova implantação com essa versão. {{rollback-game-server-cgd-arn}}Substitua pelo `RollbackGameServerBinaryArn` valor da etapa 1. Se a frota tiver um grupo de contêineres por instância, passe também `--per-instance-container-group-definition-name` com o `RollbackPerInstanceBinaryArn` valor.

   ```
   aws gamelift update-container-fleet \
       --fleet-id {{fleet-id}} \
       --game-server-container-group-definition-name {{rollback-game-server-cgd-arn}} \
       --region {{fleet-home-region}}
   ```

1. Confirme se a implantação anterior relata o `CANCELLED` status e se a nova implantação reporta `COMPLETE` quando terminar.

**nota**  
Cancelar uma implantação dessa forma não é uma parada instantânea. A nova implantação passa pelas mesmas etapas de qualquer outra, incluindo a validação, portanto, a frota leva algum tempo para ser instalada. Uma versão em que a frota funcionava com sucesso antes geralmente é validada rapidamente.

## Tópicos relacionados
<a name="containers-deployment-validation-related"></a>

Para obter mais informações, consulte os tópicos a seguir.
+ [Atualizar um GameLift Servidores Amazon frota de contêineres gerenciada](containers-update-fleet.md)
+ [Conecte-se a contêineres](containers-remote-access.md)
+ [Crie uma imagem de contêiner para GameLift Servidores Amazon](containers-prepare-images.md)
+ [Diferenças de registro: frotas gerenciadas EC2 versus frotas de contêineres](logging-server-messages-ec2-vs-containers.md)
+ [Monitorar GameLift Servidores Amazon com a Amazon CloudWatch](monitoring-cloudwatch.md)
+ [Como os contêineres funcionam em GameLift Servidores Amazon](containers-howitworks.md)