

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Valide y solucione los problemas de los despliegues de flotas de contenedores
<a name="containers-deployment-validation"></a>

El *despliegue de una flota*, denominado *despliegue* en este tema, es el proceso que se Amazon GameLift Servers utiliza para reemplazar los contenedores de las instancias de una flota de contenedores por contenedores que utilizan la nueva configuración de la flota, como una nueva versión de definición de grupos de contenedores. En lugar de reemplazar todos los contenedores en funcionamiento a la vez, un despliegue primero verifica que los nuevos contenedores pueden albergar sesiones de juego y, a continuación, reemplaza el resto gradualmente para atrapar los cambios incorrectos antes de que se desplieguen en toda la flota. Una flota de contenedores inicia su despliegue en tres situaciones:
+ **Al crear una flota con una definición de grupo de contenedores.** Si su [CreateContainerFleet](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateContainerFleet.html)solicitud incluye una definición de grupo de contenedores de servidores de juegos, la creación de la flota inicia una implementación que instala los contenedores en las nuevas instancias de la flota. Si creas una flota sin una definición de grupo de contenedores, no se despliega ninguna instancia y la flota no se despliega hasta que añadas una definición de grupo de contenedores de servidores de juegos.
+ **Al actualizar las definiciones de grupos de contenedores de la flota u otros ajustes de contenedores.** [UpdateContainerFleet](https://docs.aws.amazon.com/gamelift/latest/apireference/API_UpdateContainerFleet.html)inicia un despliegue cuando la actualización cambia los contenedores que gestiona la flota, por ejemplo, cuando se especifica una nueva versión de definición de grupo de contenedores para servidores de juegos. Una actualización que no modifique ninguno de estos ajustes no iniciará un despliegue. Para obtener información sobre los ajustes que inician una implementación, consulte[Actualizar un GameLift Servidores Amazon flota de contenedores gestionada](containers-update-fleet.md).
+ **Al añadir ubicaciones a una flota activa.** Amazon GameLift Serversinicia un despliegue en las nuevas ubicaciones utilizando las definiciones de grupos de contenedores configuradas en la flota. Las ubicaciones existentes no se redistribuyen. No puedes añadir ubicaciones mientras hay otra implementación en curso.

Para ver los detalles de una implementación, llama a [DescribeFleetDeployment](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeFleetDeployment.html), que devuelve un [FleetDeployment](https://docs.aws.amazon.com/gamelift/latest/apireference/API_FleetDeployment.html)objeto. Incluye el identificador de despliegue, el estado y la configuración, junto con las versiones de definición de grupos de contenedores que se están implementando y las versiones de reversión. La `DeploymentDetails.LatestDeploymentId` propiedad de la flota identifica su despliegue más reciente.

**nota**  
Los despliegues se aplican únicamente a las flotas de contenedores gestionadas.

## Configure un despliegue
<a name="containers-deployment-validation-config"></a>

El de una implementación [DeploymentConfiguration](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeploymentConfiguration.html)es el conjunto de reglas que controlan cómo se desarrolla la implementación en toda la flota y qué sucede si falla. Para obtener información sobre los valores y los valores predeterminados de cada configuración, consulta la *referencia [DeploymentConfiguration](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeploymentConfiguration.html)de la Amazon GameLift Servers API*.

La configuración de despliegue se establece al llamar `UpdateContainerFleet` o editar la flota en la consola. `CreateContainerFleet`no acepta una configuración de despliegue, por lo que el primer despliegue de una flota siempre utiliza los valores predeterminados.

## Cómo GameLift Servidores Amazon valida una implementación
<a name="containers-deployment-validation-howitworks"></a>

Cuando se inicia un despliegue, Amazon GameLift Servers primero valida los grupos de contenedores de servidores del juego en cada una de las ubicaciones de la flota. Utiliza los nuevos contenedores en una pequeña parte de la capacidad actual de la flota y comprueba que estén en buen estado. Un nuevo grupo de contenedores de servidores de juegos está en *buen estado* cuando un contenedor de servidores de juegos llama `ProcessReady()` para informar que está listo para albergar sesiones de juego.

Esta validación inicial comprueba los grupos de contenedores de servidores de juegos. Si tu flota también usa una definición de grupo de contenedores por instancia, Amazon GameLift Servers actualiza esos grupos después de actualizar los grupos de servidores de juegos. Amazon GameLift Serverscomprueba los grupos de instancias por separado antes de que finalice la implementación; no utilizan la verificación del servidor del `ProcessReady()` juego.

La validación falla si un nuevo grupo de contenedores de servidores de juegos no funciona correctamente antes de que Amazon GameLift Servers deje de esperar. Para obtener información sobre los motivos más comunes y cómo investigarlos, consulte[Depure una implementación defectuosa](#containers-deployment-validation-debug).

Si la validación falla, Amazon GameLift Servers aplica la implementación `ImpairmentStrategy` y establece el estado de la implementación en `IMPAIRED` (para`MAINTAIN`) o `ROLLBACK_IN_PROGRESS` (para`ROLLBACK`). Solo después de que la validación se realice correctamente en una ubicación, se Amazon GameLift Servers reemplazarán los contenedores restantes en los que se ejecutan los servidores de juegos en esa ubicación.

### ¿Cuánto tarda la validación
<a name="containers-deployment-validation-timeouts"></a>

La validación tarda más tiempo cuando la capacidad que se Amazon GameLift Servers utiliza para la validación aloja sesiones de juego protegidas. La flota `NewGameSessionProtectionPolicy` determina la protección predeterminada para las nuevas sesiones de juego. Los valores válidos son `NoProtection` y `FullProtection`. El despliegue `ProtectionStrategy` determina si el despliegue respeta esa protección. Los valores válidos son `WITH_PROTECTION` y `IGNORE_PROTECTION`.

Cuando la flota se ha `NewGameSessionProtectionPolicy` configurado `FullProtection` y el despliegue se ha `ProtectionStrategy` establecido en`WITH_PROTECTION`, Amazon GameLift Servers se prolonga el tiempo de espera de validación para que finalicen las sesiones de juego protegidas. Con cualquier otra combinación, utiliza un tiempo de espera más corto.

**importante**  
Si tus nuevos contenedores nunca se ponen en buen estado y la flota los utiliza `FullProtection` con un `WITH_PROTECTION` despliegue, el despliegue puede permanecer en su `IN_PROGRESS` estado hasta que finalicen las sesiones de juego protegidas antes de que se produzca un error. Para obtener una señal más rápida, despliega nuevas imágenes de contenedores `IGNORE_PROTECTION` mientras las pruebas o cancela el despliegue tú mismo. Para obtener instrucciones sobre cómo cancelar un despliegue, consulte[Cancele un despliegue iniciando uno nuevo](#containers-deployment-validation-cancel).  
Si proteges sesiones de juego individuales con [UpdateGameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_UpdateGameSession.html)una flota `NewGameSessionProtectionPolicy` cuya `NoProtection` flota Amazon GameLift Servers no prolonga su espera. Si esas sesiones de juego no terminan a tiempo, la validación puede fallar aunque la nueva configuración funcione.

## Realiza un seguimiento del estado de despliegue
<a name="containers-deployment-validation-status"></a>

Para realizar un seguimiento de un despliegue en la [Amazon GameLift Serversconsola](https://console.aws.amazon.com/gamelift/), abre la flota y selecciona la pestaña **Despliegues.** Para rastrearlo con la tecla AWS Command Line Interface (AWS CLI), utilice esta opción [list-fleet-deployments](https://docs.aws.amazon.com/cli/latest/reference/gamelift/list-fleet-deployments.html)para buscar un ID de despliegue y, a continuación, [describe-fleet-deployment](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-deployment.html)para ver los detalles de un único despliegue.

Para obtener información sobre los valores del estado de la implementación y lo que significa cada uno de ellos, consulta [DeploymentStatus](https://docs.aws.amazon.com/gamelift/latest/apireference/API_FleetDeployment.html#gameliftservers-Type-FleetDeployment-DeploymentStatus)la *referencia de la Amazon GameLift Servers API*.

## Depure una implementación defectuosa
<a name="containers-deployment-validation-debug"></a>

Un despliegue deficiente significa que los nuevos contenedores no se han mantenido en buen estado durante la validación: ningún contenedor del servidor del juego al que se haya llamado `ProcessReady()` antes Amazon GameLift Servers dejó de esperar, a menudo porque un contenedor salió o no se pudo iniciar. La causa suele estar en la imagen del contenedor o en el servidor del juego. Descubre por qué salió el contenedor o por qué el servidor del juego nunca informó que estaba listo.

### Revisa el registro de eventos de la flota
<a name="containers-deployment-validation-debug-events"></a>

El registro de eventos de la flota registra lo Amazon GameLift Servers observado durante el despliegue. Véalo en la pestaña **Eventos** de la flota en la consola o llame por teléfono [describe-fleet-events](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-fleet-events.html). Los siguientes códigos de evento son relevantes para un despliegue fallido:
+ `GAME_SERVER_CONTAINER_GROUP_CRASHED`y`PER_INSTANCE_CONTAINER_GROUP_CRASHED`: un grupo de contenedores salió o no se pudo iniciar. Cuando Amazon GameLift Servers tiene el código de salida del contenedor, lo incluye en el mensaje del evento.
+ `GAME_SERVER_CONTAINER_GROUP_REPLACED_UNHEALTHY`y`INSTANCE_REPLACED_UNHEALTHY`: Amazon GameLift Servers reemplazó un grupo de contenedores o una instancia que no estaba en buen estado. Estos problemas pueden repetirse en todas las ubicaciones de la flota mientras se produce un error en el despliegue.
+ `SERVER_PROCESS_MISCONFIGURED_CONTAINER_PORT`— el contenedor de un servidor de juegos utilizaba un puerto que no coincidía con los puertos declarados en la definición del grupo de contenedores.
+ `LOCATION_STATE_UPDATING`y`LOCATION_STATE_ACTIVE`: agrupan el despliegue en cada ubicación, lo que te ayuda a alinear otros eventos con el despliegue que los produjo.
+ `COMPUTE_LOG_UPLOAD_FAILED`— la recopilación de registros de un contenedor dejó de funcionar, por lo que es posible que los registros de ese contenedor estén incompletos o falten.

### Lea los registros del contenedor
<a name="containers-deployment-validation-debug-logs"></a>

`LogConfiguration`Los conjuntos de una flota de contenedores Amazon GameLift Servers a dónde se envía la salida estándar de cada contenedor: `CLOUDWATCH` (predeterminado)`S3`, o`NONE`. Manténgalo configurado para `CLOUDWATCH` `S3` que la salida de contenedores esté disponible cuando falle un despliegue. Si un contenedor falla antes de que el servidor de juegos comience a funcionar, por ejemplo, porque el punto de entrada del contenedor hace referencia a un archivo que no aparece en la imagen, este resultado es el único registro del error. Para obtener información sobre el registro de contenedores, consulte[Diferencias de registro: flotas gestionadas EC2 y flotas de contenedores](logging-server-messages-ec2-vs-containers.md).

### Conectarse a un contenedor averiado
<a name="containers-deployment-validation-debug-connect"></a>

Si utilizaste la estrategia de `MAINTAIN` deterioro, puedes conectarte a un contenedor que Amazon GameLift Servers guardara e inspeccionarlo directamente. Utilízalo para comprobar los permisos de los archivos, confirmar qué archivos contiene realmente la imagen y ejecutar manualmente el ejecutable del servidor del juego para ver de qué informa. Para obtener instrucciones sobre cómo conectarse a un contenedor, consulte[Conéctese a contenedores](containers-remote-access.md).

### Problemas comunes de implementación
<a name="containers-deployment-validation-debug-causes"></a>

Los siguientes síntomas son comunes en las implementaciones lentas o fallidas, junto con sus causas habituales.

**El contenedor arranca y sale inmediatamente, una y otra vez.**  
Si el punto de entrada del contenedor no puede funcionar, compruebe lo siguiente:  
+ Comprueba que el script de inicio y el ejecutable del servidor del juego estén marcados como ejecutables en la imagen.
+ Confirma que la arquitectura de la CPU del ejecutable coincide con el tipo de instancia de la flota.
+ Comprueba que la imagen contenga el intérprete y las bibliotecas compartidas que necesita el ejecutable.
Para obtener información sobre cómo crear una imagen que Amazon GameLift Servers se pueda ejecutar, consulte[Cree una imagen de contenedor para GameLift Servidores Amazon](containers-prepare-images.md).

**La implementación es lenta, pero no falla nada.**  
Un `WITH_PROTECTION` despliegue espera a que finalicen las sesiones de juego protegidas, tanto durante la validación como cuando reemplaza los contenedores de la flota. Comprueba las sesiones de juego activas de la flota antes de considerar un despliegue prolongado como un error. Para obtener información sobre los tiempos de espera para la validación, consulte[¿Cuánto tarda la validación](#containers-deployment-validation-timeouts).

## Cancele un despliegue iniciando uno nuevo
<a name="containers-deployment-validation-cancel"></a>

Para cancelar un despliegue y devolver la flota a su configuración anterior, llama `UpdateContainerFleet` o edita la flota en la consola para iniciar un nuevo despliegue que anule los cambios. El caso más común es una nueva versión de definición de grupo de contenedores, que se revierte con el siguiente procedimiento. Amazon GameLift Serversregistra las versiones que utilizó la flota la última vez que estuvo activa en el despliegue en curso `RollbackGameServerBinaryArn` y`RollbackPerInstanceBinaryArn`, de esta forma, no tendrá que decidir a qué versión volver. Si la implementación también modificó otros ajustes, como la configuración del registro o el rango de puertos de conexión, vuelve a configurarlos en la misma `UpdateContainerFleet` solicitud.

Antes de empezar, configúrela AWS CLI para su cuenta e identifique el lugar de origen de la flota Región de AWS. Este procedimiento requiere una implementación en curso y una versión anterior de la definición del grupo de contenedores para restaurarlo. `list-fleet-deployments`Utilícelo para buscar el ID de despliegue. Para obtener instrucciones, consulte [Realiza un seguimiento del estado de despliegue](#containers-deployment-validation-status).

En los comandos, {{fleet-id}} sustitúyalo por el identificador de tu flota, {{deployment-id}} por el identificador de despliegue en curso y {{fleet-home-region}} por el de origen Región de AWS de la flota.

**Para reemplazar un despliegue en curso por una versión de contenedor anterior (AWS CLI)**

1. Use el siguiente AWS CLI comando para obtener la versión a la que desea volver:

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

   En la respuesta, `RollbackGameServerBinaryArn` contiene la versión de definición del grupo de contenedores del servidor del juego que usó la flota la última vez que estuvo activa. Si la flota tiene un grupo de contenedores por instancia, `RollbackPerInstanceBinaryArn` conserva esa versión.

1. Use el siguiente AWS CLI comando para iniciar una nueva implementación con esa versión. {{rollback-game-server-cgd-arn}}Sustitúyalo por el `RollbackGameServerBinaryArn` valor del paso 1. Si la flota tiene un grupo de contenedores por instancia, `--per-instance-container-group-definition-name` añada también el `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 que la implementación anterior informe sobre el `CANCELLED` estado y que la nueva implementación informe `COMPLETE` cuando finalice.

**nota**  
Cancelar una implementación de esta manera no es una interrupción inmediata. El nuevo despliegue sigue los mismos pasos que cualquier otro, incluida la validación, por lo que la flota tarda algún tiempo en liquidarse. Por lo general, una versión que la flota utilizaba correctamente se valida rápidamente.

## Temas relacionados
<a name="containers-deployment-validation-related"></a>

Para obtener más información, consulte los siguientes temas.
+ [Actualizar un GameLift Servidores Amazon flota de contenedores gestionada](containers-update-fleet.md)
+ [Conéctese a contenedores](containers-remote-access.md)
+ [Cree una imagen de contenedor para GameLift Servidores Amazon](containers-prepare-images.md)
+ [Diferencias de registro: flotas gestionadas EC2 y flotas de contenedores](logging-server-messages-ec2-vs-containers.md)
+ [Monitorizar GameLift Servidores Amazon con Amazon CloudWatch](monitoring-cloudwatch.md)
+ [Cómo funcionan los contenedores en GameLift Servidores Amazon](containers-howitworks.md)