Actualizaciones de configuración del entorno continuas de Elastic Beanstalk - AWS Elastic Beanstalk

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.

Actualizaciones de configuración del entorno continuas de Elastic Beanstalk

Cuando un cambio de configuración requiere que se reemplacen las instancias, Elastic Beanstalk puede realizar la actualización en lotes para evitar tiempo de inactividad mientras se propaga el cambio. Durante una actualización continua, la capacidad solo se reduce por el tamaño de un solo lote, que puede configurar. Elastic Beanstalk deja un lote de instancias fuera de servicio, termina las instancias y después lanza un lote con la nueva configuración. Una vez que el nuevo lote empieza a servir solicitudes, Elastic Beanstalk pasa al siguiente lote.

Los lotes de actualizaciones de configuración continuas se pueden procesar periódicamente (actualización basada en el tiempo), con un retraso entre cada lote o en función del estado. En las actualizaciones continuas basadas en tiempo, puede configurar la cantidad de tiempo que Elastic Beanstalk debe esperar después de completar el lanzamiento de un lote de instancias antes de pasar al siguiente lote. Esta pausa permite que la aplicación arranque y empiece a atender solicitudes.

Con las actualizaciones continuas basadas en estado, Elastic Beanstalk espera a que las instancias de un lote superen las comprobaciones de estado antes de pasar al siguiente lote. El estado de una instancia lo determina el sistema de informes de estado, que puede ser básico o mejorado. Con el estado básico, un lote se considera en buen estado en el momento en que todas las instancias que contiene superan las comprobaciones de estado de Elastic Load Balancing (ELB).

Con los informes de estado mejorados, todas las instancias de un lote deben superar varias comprobaciones de estado consecutivas antes de que Elastic Beanstalk pase al siguiente lote. Además de las comprobaciones de estado de ELB, que únicamente comprueban las instancias, los informes de estado mejorados monitorizan los registros de la aplicación y el estado de otros recursos de su entorno. En un entorno de servidor web con informes de estado mejorados, todas las instancias deben superar 12 comprobaciones de estado a lo largo de dos minutos (18 comprobaciones de más de tres minutos para los entornos de trabajo). Si alguna instancia no supera una comprobación de estado, se restablece el contador.

Si un lote no pasa a tener un estado correcto durante el tipo de espera de la actualización continua (el valor predeterminado es de 30 minutos), la actualización se cancela. El tiempo de espera de la actualización continua es una opción de configuración disponible en el espacio de nombres aws:autoscaling:updatepolicy:rollingupdate. Si la aplicación no supera las comprobaciones de estado con el estado Ok pero está estable en otro nivel, puede definir la opción HealthCheckSuccessThreshold en el espacio de nombres aws:elasticbeanstalk:healthreporting:system para cambiar el nivel en el que Elastic Beanstalk considera que una instancia está en buen estado.

Si el proceso de actualización continua produce un error, Elastic Beanstalk inicia otra actualización continua para restaurar la configuración anterior. Una actualización continua puede producir un error debido a comprobaciones de estado no superadas o si el lanzamiento de nuevas instancias hace que se supere la cuota de su cuenta. Si, por ejemplo, alcanza la cuota de número de instancias de Amazon EC2, la actualización continua puede producir un error cuando intente aprovisionar un lote de nuevas instancias. En este caso, la restauración también produce un error.

Una restauración con error finaliza el proceso de actualización y deja su entorno en un estado Unhealthy. Los lotes sin procesar siguen ejecutando instancias con la configuración anterior, mientras que los lotes que se han ejecutado correctamente tienen la nueva configuración. Para corregir un entorno después de una restauración con error, primero resuelva el problema subyacente que ha causado el error de actualización y después inicie otra actualización del entorno.

Otro método consiste en implementar la nueva versión de la aplicación en un entorno diferente y después realizar un intercambio de CNAME para redirigir el tráfico sin tiempo de inactividad. Para obtener más información, consulte Implementaciones Blue/Green (azul/verde) con Elastic Beanstalk.

Actualizaciones continuas frente a implementaciones continuas

Las actualizaciones continuas se producen al cambiar la configuración que requieren las nuevas instancias de Amazon EC2 que se van a aprovisionar para su entorno. Entre estos cambios se incluyen cambios en el grupo de Auto Scaling, como el tipo de instancia y la configuración del par de claves, y cambios en la configuración de la VPC. En una actualización continua, cada lote de instancias se termina antes de aprovisionar un nuevo lote para reemplazarlo.

Las implementaciones continuas se producen siempre que implementa su aplicación y generalmente se pueden realizar sin reemplazar las instancias en su entorno. Elastic Beanstalk deja cada lote fuera de servicio, implementa la nueva versión de la aplicación y, a continuación, lo vuelve a poner en servicio.

La excepción es si cambia la configuración que requiere que las instancias se reemplacen al implementar un nueva versión de la aplicación. Por ejemplo, si cambia el valor del nombre de clave en un archivo de configuración de su paquete de código fuente y lo implementa en el entorno, activa una actualización continua. En lugar de implementar la nueva versión de la aplicación en cada lote de instancias existentes, se aprovisiona un nuevo lote de instancias con la nueva configuración. En este caso, no se produce una implementación independiente, porque las nuevas instancias se obtienen con la nueva versión de la aplicación.

Cada vez que se aprovisionan nuevas instancias como parte de un entorno, hay una fase de implementación en la que el código fuente de la aplicación se implementa en las nuevas instancias y se aplican las opciones de configuración que modifican el sistema operativo o el software de las instancias. Las opciones de comprobación de estado de la implementación (Ignore health check [Omitir comprobación de estado], Healthy threshold [Umbral de buen estado] y Command timeout [Tiempo de espera de comando]) también se aplican a las actualizaciones continuas basadas en estado y a las aplicaciones inmutables durante la fase de implementación.

Configuración de actualizaciones continuas

Puede habilitar y configurar las actualizaciones continuas en la consola de Elastic Beanstalk.

Para habilitar las actualizaciones continuas
  1. Abra la consola de Elastic Beanstalk y, en la lista Regions (Regiones), seleccione su Región de AWS.

  2. En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

  3. En el panel de navegación, elija Configuration (Configuración).

  4. En la categoría de configuración Rolling updates and deployments (Actualizaciones acumulativas e implementaciones), elija Edit (Editar).

  5. En la sección Configuration updates (Actualizaciones de configuración), para Rolling update type (Tipo de actualización continua), seleccione una de las opciones de Rolling (Continua).

    
            La sección de actualizaciones de configuración de la página modificar configuración de actualizaciones acumulativas e implementaciones
  6. Seleccione los ajustes Batch size (Tamaño de lote), Minimum capacity (Capacidad mínima) y Pause time (Tiempo de pausa).

  7. Para guardar los cambios, elija Aplicar en la parte inferior de la página.

La sección Configuration Updates (Actualizaciones de configuración) de la página Rolling updates and deployments (Actualizaciones acumulativas e implementaciones) contiene las siguientes opciones para las actualizaciones continuas:

  • Rolling update type (Tipo de actualización continua): Elastic Beanstalk espera una vez que termina de actualizar un lote de instancias antes de pasar al siguiente lote para permitir que dichas instancias finalicen el proceso de arranque y empiecen a servir tráfico. Puede elegir entre las siguientes opciones:

    • Rolling based on Health (Continua en función del estado): espere a que las instancias del lote actual estén en buen estado antes de poner las instancias en servicio e iniciar el siguiente lote.

    • Rolling based on Time (Continua en función del tiempo): especifique la cantidad de tiempo que se debe esperar entre el lanzamiento de nuevas instancias y su puesta en servicio antes de iniciar el siguiente lote.

    • Inmutable (Inmutable): aplique el cambio de configuración a un nuevo grupo de instancias a través de una actualización inmutable.

  • Batch size (Tamaño de lote): el número de instancias que se van a reemplazar en cada lote, comprendido entre 1 y 10000. De forma predeterminada, este valor es el tercio del tamaño mínimo del grupo de Auto Scaling redondeado al número entero superior más próximo.

  • Minimum capacity (Capacidad mínima): el número mínimo de instancias que se mantienen en ejecución mientras se actualizan otras instancias, comprendido entre 0 y 9999. El valor predeterminado es el tamaño mínimo del grupo de Auto Scaling o un tamaño inferior al tamaño máximo del grupo de Auto Scaling, el que sea menor.

  • Pause time (Pausa) (solo actualizaciones basadas en tiempo): la cantidad de tiempo que se debe esperar después de que se actualice un lote antes de pasar al siguiente lote para que su aplicación pueda empezar a recibir tráfico. Entre 0 segundos y 1 hora.

El espacio de nombres aws:autoscaling:updatepolicy:rollingupdate

También puede utilizar las opciones de configuración del espacio de nombres aws:autoscaling:updatepolicy:rollingupdate para configurar actualizaciones continuas.

Utilice la opción RollingUpdateEnabled para habilitar las actualizaciones continuas y RollingUpdateType para elegir el tipo de actualización. Se admiten los siguientes valores para RollingUpdateType:

  • Health: esperar a que las instancias del lote actual estén en buen estado antes de poner las instancias en servicio e iniciar el siguiente lote.

  • Time: especifique la cantidad de tiempo que se debe esperar entre el lanzamiento de nuevas instancias y su puesta en servicio antes de iniciar el siguiente lote.

  • Immutable: aplique el cambio de configuración a un nuevo grupo de instancias a través de una actualización inmutable.

Cuando habilite las actualizaciones continuas, defina las opciones MaxBatchSize y MinInstancesInService para configurar el tamaño de cada lote. Para las actualizaciones continuas basadas en tiempo y estado, también puede configurar PauseTime y Timeout, respectivamente.

Por ejemplo, para lanzar hasta cinco instancias a la vez, manteniendo al menos dos instancias en servicio, y esperar cinco minutos y 30 segundos entre los lotes, especifique las siguientes opciones y valores.

ejemplo .ebextensions/timebased.config
option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateEnabled: true MaxBatchSize: 5 MinInstancesInService: 2 RollingUpdateType: Time PauseTime: PT5M30S

Para habilitar las actualizaciones continuas basadas en estado, con un tiempo de espera de 45 minutos para cada lote, especifique las siguientes opciones y valores.

ejemplo .ebextensions/healthbased.config
option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateEnabled: true MaxBatchSize: 5 MinInstancesInService: 2 RollingUpdateType: Health Timeout: PT45M

Los valores Timeout y PauseTime deben especificarse en un formato de duración ISO8601: PT#H#M#S, donde cada # es el número de horas, minutos y segundos, respectivamente.

La CLI de EB y la consola de Elastic Beanstalk aplican los valores recomendados a las opciones anteriores. Debe eliminar estos ajustes si desea usar archivos de configuración para configurarlos. Para obtener más información, consulte Valores recomendados.