Cómo funcionan los contenedores en Amazon GameLift Servers - Amazon GameLift Servers

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.

Cómo funcionan los contenedores en Amazon GameLift Servers

Las flotas de contenedores de Amazon GameLift Servers están diseñadas para ofrecerle flexibilidad a la hora de implementar y escalar sus aplicaciones contenerizadas. Utiliza Amazon Elastic Container Service (Amazon ECS) para administrar la implementación y la ejecución de tareas de sus flotas de Amazon GameLift Servers. En este tema se describen los elementos estructurales básicos para ejecutar contenedores en una flota administrada por Amazon GameLift Servers, se ilustran las arquitecturas más habituales y se describen algunos conceptos básicos.

Acelere la incorporación con estas herramientas para contenedores administrados:
  • El kit básico para contenedores agiliza la integración y la configuración de flotas. Añade características esenciales de administración de sesiones de juego al servidor de juegos y utiliza plantillas preconfiguradas para crear una flota de contenedores y una canalización de implementación automatizada para el servidor de juegos. Tras la implementación, utilice la consola de Amazon GameLift Servers y las herramientas de la API para supervisar el rendimiento de la flota, administrar las sesiones de juego y analizar las métricas.

  • Los desarrolladores de Unreal Engine o Unity pueden utilizar los complementos de Amazon GameLift Servers para integrar el servidor de juegos y crear una flota de contenedores desde el entorno de desarrollo del motor de juegos. Los flujos de trabajo guiados del complemento ayudan a crear una solución rápida y sencilla con alojamiento en la nube mediante contenedores administrados. Luego básese en ellos para crear una solución de alojamiento personalizada para su juego.

Componentes de una flota de contenedores

Flota

Una flota de contenedores es un conjunto de instancias de Amazon EC2 para alojar servidores de juegos en contenedores. Amazon GameLift Servers administra estas instancias en su nombre. Al crear una flota, se configura la forma en que se implementa la arquitectura de contenedores con el software del servidor de juegos en cada instancia de la flota. Puede crear una flota de contenedores con instancias en una o múltiples ubicaciones geográficas. Puede usar las herramientas de escalado de Amazon GameLift Servers para escalar automáticamente la capacidad de una flota de contenedores para alojar sesiones de juego y jugadores.

Instancia

Una instancia Amazon EC2 es el servidor virtual que proporciona capacidad de computación para el alojamiento de juegos. Con Amazon GameLift Servers, puede elegir entre varios tipos de instancia. Cada tipo de instancia ofrece una combinación distinta de CPU, memoria, almacenamiento y capacidad de red.

Al crear una flota de contenedores, Amazon GameLift Servers los implementa en función del tipo de instancia que elija y de la configuración de la flota. Cada instancia de flota implementada es idéntica y ejecuta el software de servidor de juegos en contenedores de la misma manera. El número de instancias de una flota determina el tamaño de la flota y la capacidad de alojamiento de juegos.

Grupo de contenedores

Amazon GameLift Servers utiliza el concepto de grupo de contenedores para describir y administrar un conjunto de contenedores. Un grupo de contenedores es similar a una “tarea” o “pod” de contenedores. Dentro de cada grupo de contenedores, puede definir cómo se comportan los contenedores, configurar las dependencias y compartir los recursos de CPU y memoria disponibles.

Cada instancia de flota puede tener los siguientes tipos de grupos de contenedores:

  • Un grupo de contenedores de servidores de juegos administra los contenedores en los que se ejecuta la aplicación del servidor de juegos y el software de soporte. Una flota de contenedores debe tener un grupo de contenedores de este tipo para alojar a los jugadores y a las sesiones de juego. Un grupo de contenedores de servidores de juegos se puede replicar en una instancia de flota. La cantidad de réplicas de grupos de servidores de juegos por instancia de flota depende de los requisitos informáticos del software y de los recursos de computación disponibles en la instancia.

  • Un grupo de contenedores por instancia, que es opcional, le permite ejecutar software adicional en cada instancia de la flota. Son útiles para ejecutar servicios en segundo plano o programas de utilidades, por ejemplo, con fines de supervisión. El software del servidor de juegos no depende directamente de los procesos de un grupo por instancia. Solo se implementa una copia de un grupo de contenedores por instancia en cada instancia de la flota.

Cada grupo de contenedores de una flota de contenedores tiene un contenedor que se denomina “esencial”. Un contenedor esencial determina el ciclo de vida de un grupo de contenedores. Si un contenedor esencial produce un error, todo el grupo de contenedores se reinicia.

Contenedor

El contenedor es el elemento más básico de una arquitectura basada en contenedores. Incluye una imagen de contenedor con ejecutables de software y archivos dependientes. Defina un contenedor para configurar la forma en que el software se ejecuta e interactúa con Amazon GameLift Servers.

Amazon GameLift Servers define dos tipos de contenedores:

  • Un contenedor del servidor de juegos incluye todo lo que necesita para ejecutar los procesos del servidor de juegos y alojar sesiones de juego para los jugadores. Incluye la compilación del servidor de juegos y el software dependiente. Defina un contenedor de servidores de juegos para el grupo de contenedores de servidores de juegos de una flota. El contenedor de servidor de juegos se considera automáticamente esencial para el grupo de contenedores.

  • Un contenedor de soporte ejecuta software adicional para respaldar al servidor de juegos. Es similar al concepto de contenedor lateral. Le da la opción de ejecutar y escalar el software compatible junto con los servidores de juegos, pero administrándolo como contenedores independientes. En un grupo de contenedores de servidor de juegos, puede definir cero o más contenedores de soporte. En un grupo de contenedores por instancia, todos los contenedores son contenedores de soporte. Cualquier contenedor de soporte puede designarse como esencial.

Recurso de computación

Un recurso de computación constituye una copia de un grupo de contenedores de servidor de juegos en una instancia de flota.

Arquitecturas comunes

En el siguiente diagrama se ilustra la estructura de flota de contenedores más simple. En esta estructura, cada instancia de la flota mantiene una copia del grupo de contenedores de servidor del juego. El grupo de contenedores tiene un único contenedor de servidores de juegos que ejecuta un proceso de servidor de juegos. En este ejemplo, la flota de contenedores está configurada para colocar una copia del grupo de contenedores de servidores de juegos por instancia. Con esta arquitectura, cada instancia ejecuta un proceso de servidor de juegos.

Un ejemplo de una arquitectura de contenedores simple, con un único contenedor de servidores de juegos en el grupo de contenedores de servidores de juegos.

Este segundo diagrama ilustra una arquitectura de flota de contenedores más compleja. En esta estructura, la flota tiene un grupo de contenedores de servidores de juegos y un grupo de contenedores por instancia. El grupo de contenedores de servidores de juegos tiene contenedores separados para el proceso del servidor de juegos y un proceso de soporte. La flota está configurada para colocar tres copias del grupo de contenedores del servidor del juego en cada instancia de la flota. El grupo de contenedores por instancia nunca se replica. En este ejemplo, la flota de contenedores está configurada para colocar tres copias del grupo de contenedores del servidor de juegos por instancia. Con esta arquitectura, cada instancia ejecuta tres procesos del servidor de juegos.

Un ejemplo de una arquitectura de contenedores con varios contenedores en el grupo de contenedores del servidor de juegos y un contenedor en el grupo de contenedores por instancia.

Características principales

En esta sección se resume cómo Amazon GameLift Servers implementa algunos conceptos básicos de contenedor. Para obtener instrucciones sobre cómo trabajar con flotas de contenedores, consulte los temas correspondientes de esta guía.

Actualizaciones de flotas activas

Los contenedores administrados proporcionan soporte avanzado para ayudarle a administrar el ciclo de vida del software alojado y la arquitectura de contenedores. Puede actualizar las definiciones de sus contenedores, incluidas las imágenes de los contenedores, e implementar cambios en sus flotas actuales. Esta característica agiliza y facilita la iteración de los cambios en los contenedores durante el desarrollo. También proporciona características que le ayudan a crear, implementar y realizar un seguimiento de las actualizaciones de las versiones de software a lo largo del tiempo. Estas características incluyen:

  • Administre las actualizaciones de las definiciones y el control de versiones de grupos de contenedores. Puede actualizar prácticamente todas las propiedades de una definición de grupo de contenedores, incluidas las imágenes de los contenedores y los ajustes de configuración. Cada vez que actualiza un contenedor, Amazon GameLift Servers asigna automáticamente un número de versión a la actualización y, de forma predeterminada, mantiene todas las versiones. Puede acceder a cualquier versión específica y eliminar las versiones que desee. Al configurar una flota de contenedores, puede especificar qué versión y definición de un grupo de contenedores implementar.

  • Actualice las flotas de contenedores existentes con nuevas definiciones de grupos de contenedores y ajustes de configuración. Puede implementar actualizaciones de contenedores en las flotas que ya estén implementadas en las instancias de la flota. Puede realizar un seguimiento del estado de las implementaciones de actualizaciones en cada ubicación de la flota mediante la Consola de administración de AWS o el SDK y la CLI de AWS.

  • Configure cómo desea que se implementen las actualizaciones de flota en una flota activa.

    • Protección de la sesión de juego. Opte por proteger las instancias de flota con sesiones de juego activas hasta que finalicen las sesiones de juego (implementación segura). También puede sustituir las instancias de flota independientemente de la actividad de las sesiones de juego (implementación no segura). Utilice las implementaciones no seguras durante las fases de desarrollo y prueba para reducir el tiempo de implementación.

    • Porcentaje de buen estado mínimo. Especifique el porcentaje de tareas en buen estado que desea mantener durante la implementación. Esta característica le permite decidir cuántas instancias de la flota se ven afectadas durante una implementación. Un valor bajo prioriza la velocidad de implementación, mientras que un valor alto garantiza que la disponibilidad del servidor de juegos se mantenga en niveles altos durante toda la implementación.

    • Estrategia en caso de error de implementación. Decida qué acciones se deben adoptar en el caso de que se produzca un error en la implementación. Un error en la implementación significa que algunos de los contenedores actualizados no han superado las comprobaciones de estado y se consideran defectuosos. Puede configurar las implementaciones para que reviertan automáticamente todas las instancias de flota al estado de implementación anterior. Como alternativa, puede optar por mantener algunas de las instancias de flota defectuosas para utilizarlas en la depuración.

La posibilidad de actualizar las flotas activas es muy útil cuando se desea implementar una actualización en el software del servidor de juegos. Una vez que haya creado una nueva imagen de contenedor para el servidor de juegos, su implementación consiste en un proceso de dos pasos: primero, actualice la definición del grupo de contenedores con la nueva imagen y, segundo, actualice la flota de contenedores. Amazon GameLift Servers administra las demás tareas según sea necesario.

Embalaje de contenedores

Al desarrollar la estructura de contenedores para su implementación en una flota de contenedores, un objetivo común es optimizar el uso de la potencia informática disponible. Para lograr este objetivo, debe agrupar tantos grupos de contenedores de servidores de juegos como sea posible en cada instancia de flota.

Amazon GameLift Servers le ayuda a conseguirlo calculando el número máximo de grupos de contenedores de servidores de juegos por instancia, en función de la siguiente información:

  • El tipo de instancia de la flota y sus recursos de vCPU y memoria.

  • Los requisitos de vCPU y memoria para todos los contenedores del grupo de contenedores del servidor de juegos.

    Los requisitos de vCPU y memoria para todos los contenedores de un grupo de contenedores por instancia, si lo hay.

Al crear una flota de contenedores, puede usar el máximo calculado o puede especificar el número deseado. Como práctica recomendada, planifique experimentar con su software de servidor de juegos en contenedores para determinar los requisitos de recursos para un rendimiento óptimo del servidor de juegos.

Escalado de capacidad

La capacidad de flota mide el número de sesiones de juego que una flota puede alojar simultáneamente. También puede medir la capacidad en función del número de jugadores simultáneos que puede soportar una flota. Para aumentar o reducir la capacidad de alojamiento de una flota, debe añadir o eliminar instancias de la flota.

Una flota de contenedores está configurada para ejecutar un número específico de procesos simultáneos del servidor de juegos en cada instancia de la flota. (Puede calcularlo en (1) los grupos de contenedores de servidores de juegos por instancia y en (2) el número de procesos del servidor de juegos que se ejecutan en cada grupo de contenedores.) El número de servidores de juegos simultáneos por instancia indica cuál es el impacto de añadir o eliminar cada instancia de la flota. Por ejemplo, si tu flota de contenedores ejecuta un proceso de servidor de juego en cada grupo de contenedores de servidores de juegos y cada instancia de flota contiene 100 grupos de contenedores de servidores de juegos, aumentas o disminuyes la capacidad de tu flota para albergar sesiones de juego simultáneas en incrementos de 100. Si cada sesión de juego tiene 10 plazas para jugadores, aumentarás o disminuirás la capacidad de tu flota para alojar jugadores en incrementos de 1000.

Con las flotas de contenedores, puede utilizar cualquiera de los métodos de escalado de capacidad que ofrecen Amazon GameLift Servers. Entre ellos se incluyen:

  • Establezca la capacidad de la flota manualmente configurando el recuento de instancias de flota deseado.

  • Configure el escalado automático centrándose en el búfer deseado de instancias disponibles (seguimiento de objetivos). Este método mantiene automáticamente una cierta cantidad de recursos de alojamiento inactivos para que los jugadores entrantes puedan acceder rápidamente a las partidas. A medida que la demanda de los jugadores aumenta o disminuye, el tamaño de este búfer se ajusta continuamente.

  • Configura el escalado automático con reglas de escalado personalizadas (característica avanzada). Este método te permite escalar en función de las métricas de flota que elijas.

Conexiones cliente/servidor de juegos

Con las flotas administradas por Amazon GameLift Servers, los clientes de juegos se conectan directamente a los servidores de juegos alojados en la nube. Cuando un cliente de juego solicita unirse a una partida, Amazon GameLift Servers busca una sesión de juego y proporciona información de conexión (IP y puerto) al cliente de juego. Puede controlar el acceso externo a las instancias de la flota abriendo ciertos rangos de puertos (permisos de entrada) para la flota. Los permisos de entrada determinan qué puertos están abiertos al tráfico entrante. Puede cerrar rápidamente todos los puertos, limitarlos a unos pocos o abrir todos los puertos.

Las flotas de contenedores administradas requieren una configuración adicional que permita el acceso a los procesos que se ejecutan en un contenedor. Al crear una definición de contenedor, se especifica un conjunto de puertos, uno para cada proceso que requiere una conexión. Esto incluye:

  • Todos los procesos del servidor de juegos que se ejecutarán simultáneamente en el contenedor del servidor de juegos. Todos los procesos del servidor de juegos deben permitir que los clientes del juego se conecten una sesión de juego.

  • Cualquier proceso de un contenedor de soporte al que deba conectarse una fuente externa. Por ejemplo, puede conectarse de forma remota a una aplicación de prueba.

Cuando establece los ajustes de puerto del contenedor orientado al interior, Amazon GameLift Servers los utiliza para calcular los permisos de entrada externos a los que se pueden conectar los clientes de juego y otras aplicaciones. Amazon GameLift Servers también administra el mapeo entre los permisos de entrada y los puertos de contenedores individuales, lo que permite a los jugadores acceder a una sesión de juego en un contenedor. Este mapeo interno proporciona un nivel de seguridad al proteger los servidores de juegos del acceso directo a los puertos de los contenedores. Tienes la opción de personalizar la configuración de los puertos externos de la flota según sea necesario. Para obtener más información sobre cómo configurar manualmente los puertos de la flota de contenedores, consulteConfiguración de conexiones de red.

Puede modificar la configuración del puerto de una flota de contenedores en cualquier momento. Este cambio requiere la implementación de una actualización de la flota.

En el siguiente diagrama, se ilustra el papel de las conexiones de puertos en una flota de contenedores. Como se muestra, se configuran los puertos en contenedores individuales, y Amazon GameLift Servers utiliza esta información para configurar suficientes puertos en la instancia de la flota como para asignarlos a cada puerto de contenedores. Tanto los permisos de entrada de las instancias externas como los puertos de conexión internos de la flota los calcula Amazon GameLift Servers, a menos que elija configurarlos manualmente.

Ilustración de la configuración de los puertos de una flota de contenedores. Las asignaciones de puertos permiten que el tráfico externo se conecte a una instancia de flota y acceda a un contenedor individual de la instancia.

Registro del contenedor

En las flotas de contenedores administradas, se capturan los flujos de salida estándar (y de error estándar) de todos los contenedores. Esto incluye los registros de las sesiones de juego del servidor de juegos. Puede configurar una flota de contenedores para utilizar una de las siguientes opciones para administrar los flujos de salida:

  • Guarde la salida del contenedor como un flujo de registro de Amazon CloudWatch. Cada flujo de registro hace referencia al identificador de la flota y al contenedor. Si elige esta opción de registro para la flota, especifica un grupo de registros de CloudWatch, que organiza todos los flujos de registros de la flota. A continuación, puede utilizar las características de CloudWatch para buscar y analizar los datos de registro según sea necesario.

  • Almacene la salida del contenedor en un bucket de Amazon Simple Storage Service (Amazon S3). Puede ver, compartir o descargar el contenido según lo necesite.

  • Desactive el registro. En este escenario, la salida del contenedor no se guarda.

Amazon GameLift Servers envía los datos de registro de las flotas de contenedores administradas a los servicios de CloudWatch o Amazon S3 de su cuenta de AWS. Para ver sus datos, utilice la Consola de administración de AWS u otras herramientas. Para ello, inicie sesión en su cuenta de AWS y trabaje con los servicios individuales. Para ampliar el acceso limitado a Amazon GameLift Servers para emprender estas acciones, puede crear un rol de servicio para sus flotas de contenedores.

Puede modificar la configuración de registro de una flota de contenedores en cualquier momento. Este cambio requiere la implementación de una actualización de la flota.

Las flotas de contenedores y el agente Amazon GameLift Servers

Una arquitectura de contenedores de uso común ejecuta un único proceso en cada contenedor. En una flota de contenedores de Amazon GameLift Servers, el grupo de contenedores de servidores de juegos tiene un contenedor de servidores de juegos, que ejecuta un proceso de servidor de juegos. Con esta arquitectura, Amazon GameLift Servers administra el ciclo de vida del proceso de un único servidor de juego en cada grupo de contenedores de servidores de juegos de una instancia de flota.

Si opta por crear una arquitectura de contenedores que ejecute varios procesos de servidores de juegos en cada grupo de contenedores de servidores de juegos, necesitará una forma de administrar el ciclo de vida de todos los procesos. Esto incluye tareas como iniciar, cerrar y reemplazar los procesos según sea necesario, administrar el número deseado de procesos para que se ejecuten simultáneamente y gestionar los estados de fallo.

Puede optar por utilizar el agente de Amazon GameLift Servers para estas tareas. Para una flota de contenedores, el agente implementa instrucciones de tiempo de ejecución que especifican qué ejecutables se deben ejecutar (y cuántos), proporcionan los parámetros de lanzamiento y establecen reglas sobre la activación del servidor del juego. Por ejemplo, las instrucciones de tiempo de ejecución pueden indicar al agente que mantenga diez procesos del servidor de juegos para su uso en producción y un proceso del servidor de juegos con parámetros de lanzamiento especiales para las pruebas.

Para usar el agente con sus flotas de contenedores, añada el agente a la imagen del contenedor e incluya un conjunto de instrucciones de tiempo de ejecución. Para obtener más información sobre el agente de , consulte Uso el agente de Amazon GameLift Servers.