Implementar contenedores mediante Elastic Beanstalk - Recomendaciones de AWS

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.

Implementar contenedores mediante Elastic Beanstalk

Creada por Thomas Scott (AWS) y Jean-Baptiste Guillois () AWS

Repositorio de código: Cluster Sample App

Entorno: producción

Tecnologías: contenedores y microservicios CloudNative; Modernización

AWSservicios: AWS Elastic Beanstalk

Resumen

En la nube de Amazon Web Services (AWS), AWS Elastic Beanstalk admite Docker como plataforma disponible, de modo que los contenedores se puedan ejecutar con el entorno creado. Este patrón muestra cómo implementar contenedores mediante el servicio Elastic Beanstalk. La implementación de este patrón utilizará el entorno de servidor web basado en la plataforma Docker.

Para usar Elastic Beanstalk para implementar y escalar aplicaciones y servicios web, debe cargar el código y la implementación se gestiona automáticamente. También se incluyen el aprovisionamiento de capacidad, el equilibrio de carga, el escalado automático y la supervisión del estado de las aplicaciones. Cuando usa Elastic Beanstalk, puede tomar el AWS control total de los recursos que crea en su nombre. No se aplican cargos adicionales por utilizar Elastic Beanstalk. Solo paga por los AWS recursos que se utilizan para almacenar y ejecutar sus aplicaciones.

Este patrón incluye instrucciones para la implementación mediante la AWSinterfaz de línea de comandos CLI (EB) de Elastic Beanstalk y la consola de administración. AWS

Casos de uso

Los casos de uso de Elastic Beanstalk incluyen los siguientes: 

  • Implementar un entorno prototipo para hacer una demostración de una aplicación frontend. (Este patrón usa un Dockerfile como ejemplo).

  • Implemente y API gestione API las solicitudes de un dominio determinado.

  • Implemente una solución de orquestación mediante Docker-Compose (docker-compose.yml no se utiliza como ejemplo práctico en este patrón).

Requisitos previos y limitaciones

Requisitos previos 

  • Una AWS cuenta

  • AWSEB instalado CLI localmente

  • Instalación de Docker en un equipo local

Limitaciones

  • En el plan gratuito, hay un límite de 100 extracciones de Docker cada 6 horas por dirección IP.

Arquitectura

Pila de tecnología de destino

  • Instancias de Amazon Elastic Compute Cloud (AmazonEC2)

  • Grupo de seguridad

  • Equilibrador de carga de aplicación

  • Grupo de escalado automático

Arquitectura de destino

Arquitectura para implementar contenedores con Elastic Beanstalk.

Automatizar y escalar

AWSElastic Beanstalk puede escalar automáticamente en función del número de solicitudes realizadas. AWSLos recursos creados para un entorno incluyen un Application Load Balancer, un grupo de Auto Scaling y una o más instancias de AmazonEC2. 

El balanceador de carga se encuentra frente a las EC2 instancias de Amazon, que forman parte del grupo Auto Scaling. Amazon EC2 Auto Scaling inicia automáticamente EC2 instancias de Amazon adicionales para adaptarse al aumento de la carga de la aplicación. Si la carga de la aplicación disminuye, Amazon EC2 Auto Scaling detiene las instancias, pero mantiene al menos una instancia en ejecución.

Activadores de escalado automáticos

El grupo Auto Scaling del entorno de Elastic Beanstalk utiliza CloudWatch dos alarmas de Amazon para iniciar las operaciones de escalado. Los desencadenadores predeterminados adaptan su capacidad cuando el tráfico de la red saliente promedio de cada instancia es superior a 6 MB o inferior a 2 MB durante un periodo de cinco minutos. Para utilizar Amazon EC2 Auto Scaling de forma eficaz, configure los activadores adecuados para su aplicación, tipo de instancia y requisitos de servicio. Puede escalar en función de varias estadísticas, como la latencia, la E/S del disco, CPU la utilización y el recuento de solicitudes. Para obtener más información, consulte Límites de escalado automático.

Herramientas

AWSservicios

  • AWSLa interfaz de línea de comandos (AWSCLI) es una herramienta de código abierto que te ayuda a interactuar con AWS los servicios mediante comandos en el shell de la línea de comandos.

  • AWSLa interfaz de línea de comandos (EBCLI) de EB es un cliente de línea de comandos que puede usar para crear, configurar y administrar entornos de Elastic Beanstalk.

  • Elastic Load Balancing permite distribuir el tráfico entrante de las aplicaciones o de la red entre varios destinos. Por ejemplo, puede distribuir el tráfico entre instancias, contenedores y direcciones IP de Amazon Elastic Compute Cloud (AmazonEC2) en una o más zonas de disponibilidad.

Otros servicios

  • Docker agrupa el software en unidades estandarizadas denominadas contenedores que incluyen bibliotecas, herramientas del sistema, código y tiempo de ejecución.

Código

El código de este patrón está disponible en el repositorio de aplicaciones de muestra de GitHub clúster.

Epics

TareaDescripciónHabilidades requeridas

Clone el repositorio remoto.

  • Para clonar el repositorio, ejecute el comando git clone https://github.com/aws-samples/cluster-sample-app.git. < /p>

Desarrollador de aplicaciones, AWS administrador, AWS DevOps

Inicialice el proyecto Docker de Elastic Beanstalk.

  1. Cree un archivo llamado aws.json en la raíz.

  2. Añada el siguiente código al archivo aws.json:

    {    "AWSEBDockerrunVersion":"1",    "Image":{       "Name":"cluster-sample-app"    },    "Ports":[       {          "ContainerPort":80,          "HostPort":8080       }    ] }
  3. Ejecute el comando eb init -p docker en la raíz del proyecto.

Desarrollador de aplicaciones, AWS administrador, AWS DevOps

Ejecute el proyecto localmente.

  1. Ejecute el comando eb local run en la raíz del proyecto.

  2. Pruebe la aplicación navegando hasta http://localhost.

Desarrollador de aplicaciones, AWS administrador, AWS DevOps
TareaDescripciónHabilidades requeridas

Ejecute el comando de implementación

  1. Ejecute el comando eb create docker-sample-cluster-app en la raíz del proyecto.

Desarrollador de aplicaciones, AWS administrador, AWS DevOps

Acceda a la versión implementada.

Una vez finalizado el comando de implementación, acceda al proyecto mediante el comando eb open.

Desarrollador de aplicaciones, AWS administrador, AWS DevOps
TareaDescripciónHabilidades requeridas

Implemente la aplicación mediante el navegador.

  1. Abra la consola de .

  2. Vuelva a la consola de Elastic Beanstalk.

  3. Elija Create application (Crear aplicación).

  4. Para el Application Name (Nombre de la aplicación), introduzca Cluster-Sample-App.

  5. Elija Docker como plataforma.

  6. Seleccione Upload your code (Sube código).

  7. Elija su archivo.zip local (en la raíz del proyecto clonado) o un Amazon Simple Storage Service (Amazon S3) público. URL

Desarrollador de aplicaciones, administrador, AWS AWS DevOps

Acceda a la versión implementada.

Tras la implementación, acceda a la aplicación implementada y elija la que URL se proporciona.

Desarrollador de aplicaciones, AWS administrador, AWS DevOps

Recursos relacionados

Información adicional

Ventajas de utilizar Elastic Beanstalk

  • Aprovisionamiento automático de infraestructura

  • Administración automática de la plataforma subyacente

  • Parches y actualizaciones automáticos para dar soporte a la aplicación

  • Escalado automático de la aplicación

  • Posibilidad de personalizar el número de nodos

  • Posibilidad de acceder a los componentes de la infraestructura si es necesario

  • Facilidad de implementación en comparación con otras soluciones de implementación de contenedores