Recursos de equilibrador de carga de aplicación para implementaciones azul/verde - Amazon Elastic Container Service

Recursos de equilibrador de carga de aplicación para implementaciones azul/verde

Para utilizar los equilibradores de carga de aplicación con las implementaciones azul/verde de Amazon ECS, debe configurar recursos específicos que permitan el enrutamiento del tráfico entre las revisiones de servicio azul y verde.

Limitaciones

Las siguientes limitaciones se aplican actualmente a las implementaciones azul/verde con equilibradores de carga de aplicación:

  • Las implementaciones azul/verde no se admiten cuando se utilizan oyentes de equilibrador de carga de aplicación que tienen varios tipos de acciones configurados con acciones que no son de remisión. Si las reglas de oyentes del equilibrador de carga de aplicación contienen una combinación de acciones de remisión y no remisión (como acciones de redireccionamiento, respuesta fija o autenticación), la implementación fallará.

Grupos de destino

Para las implementaciones azul/verde con Elastic Load Balancing, debe crear dos grupos de destino:

  • Un grupo de destino principal para la revisión de servicio azul (tráfico de producción actual)

  • Un grupo de destino alternativo para la revisión de servicio verde (nueva versión)

Ambos grupos de destino deben configurarse con los siguientes ajustes:

  • Tipo de destino: IP (para Fargate o EC2 con modo de red awsvpc)

  • Protocolo: HTTP (o el protocolo que utilice su aplicación)

  • Puerto: el puerto en el que escucha su aplicación (normalmente 80 para HTTP)

  • VPC: la misma VPC que sus tareas de Amazon ECS

  • Configuración de comprobación de estado: configurada para comprobar correctamente el estado de la aplicación

Durante una implementación azul/verde, Amazon ECS registra automáticamente las tareas con el grupo de destino adecuado en función de la etapa de implementación.

ejemplo Creación de grupos de destino para un equilibrador de carga de aplicación

Los siguientes comandos de la CLI crean dos grupos de destino para usarlos con un equilibrador de carga de aplicación en una implementación azul/verde:

aws elbv2 create-target-group \ --name blue-target-group \ --protocol HTTP \ --port 80 \ --vpc-id vpc-abcd1234 \ --target-type ip \ --health-check-path / \ --health-check-protocol HTTP \ --health-check-interval-seconds 30 \ --health-check-timeout-seconds 5 \ --healthy-threshold-count 2 \ --unhealthy-threshold-count 2 aws elbv2 create-target-group \ --name green-target-group \ --protocol HTTP \ --port 80 \ --vpc-id vpc-abcd1234 \ --target-type ip \ --health-check-path / \ --health-check-protocol HTTP \ --health-check-interval-seconds 30 \ --health-check-timeout-seconds 5 \ --healthy-threshold-count 2 \ --unhealthy-threshold-count 2

Equilibrador de carga de aplicación

Debe crear un equilibrador de carga de aplicación con la siguiente configuración:

  • Esquema: con acceso a Internet o interno, según sus necesidades

  • Tipo de dirección IP: IPv4

  • VPC: la misma VPC que sus tareas de Amazon ECS

  • Subredes: al menos dos subredes en diferentes zonas de disponibilidad

  • Grupos de seguridad: un grupo de seguridad que permita el tráfico en los puertos de oyentes

El grupo de seguridad adjunto al equilibrador de carga de aplicación debe tener una regla de salida que permita el tráfico al grupo de seguridad adjunto a las tareas de Amazon ECS.

ejemplo Creating an Application Load Balancer (Crear un equilibrador de carga de aplicación)

El siguiente comando de la CLI crea un equilibrador de carga de aplicación para su uso en una implementación azul/verde:

aws elbv2 create-load-balancer \ --name my-application-load-balancer \ --type application \ --security-groups sg-abcd1234 \ --subnets subnet-12345678 subnet-87654321

Oyentes y reglas

En el caso de las implementaciones azul/verde, debe configurar los oyentes en su equilibrador de carga de aplicación:

  • Oyente de producción: gestiona el tráfico de producción (normalmente en los puertos 80 o 443)

    • Inicialmente remite el tráfico hacia el grupo de destino principal (revisión de servicio azul)

    • Tras la implementación, remite el tráfico al grupo de destino alternativo (revisión de servicio verde)

  • Oyente de prueba (opcional): gestiona el tráfico de prueba para validar la revisión de servicio verde antes de transferir el tráfico de producción

    • Se puede configurar en un puerto diferente (por ejemplo, 8080 o 8443)

    • Remite el tráfico al grupo de destino alternativo (revisión de servicio verde) durante la fase de prueba

Durante una implementación azul/verde, Amazon ECS actualiza automáticamente las reglas de oyente para que enruten el tráfico hacia el grupo de destino adecuado en función de la etapa de implementación.

ejemplo Creación de un oyente de producción

El siguiente comando de la CLI crea un oyente de producción en el puerto 80 que remite el tráfico al grupo de destino principal (azul):

aws elbv2 create-listener \ --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456 \ --protocol HTTP \ --port 80 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/abcdef123456
ejemplo Creación de un oyente de prueba

El siguiente comando de la CLI crea un oyente de prueba en el puerto 8080 que remite el tráfico al grupo de destino alternativo (verde):

aws elbv2 create-listener \ --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456 \ --protocol HTTP \ --port 8080 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
ejemplo Creación de una regla de oyente para el enrutamiento basado en rutas

El siguiente comando de la CLI crea una regla que remite el tráfico de una ruta específica al grupo de destino verde para llevar a cabo pruebas:

aws elbv2 create-rule \ --listener-arn arn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012 \ --priority 10 \ --conditions Field=path-pattern,Values='/test/*' \ --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
ejemplo Creación de una regla de oyente para el enrutamiento basado en encabezados

El siguiente comando de la CLI crea una regla que remite el tráfico con un encabezado específico al grupo de destino verde para llevar a cabo pruebas:

aws elbv2 create-rule \ --listener-arn arn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012 \ --priority 20 \ --conditions Field=http-header,HttpHeaderConfig='{Name=X-Environment,Values=[test]}' \ --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012

Configuración del servicio

Debe tener permisos para autorizar a Amazon ECS que en su nombre administre los recursos del equilibrador de carga en sus clústeres. Para obtener más información, consulte Rol de IAM de infraestructura de Amazon ECS para los equilibradores de carga.

Al crear o actualizar un servicio de Amazon ECS para las implementaciones azul/verde con Elastic Load Balancing, debe especificar la siguiente configuración.

Sustituya las entradas del usuario por sus valores.

Los componentes clave de esta configuración son:

  • targetGroupArn: el ARN del grupo de destino principal (revisión de servicio azul).

  • alternateTargetGroupArn: el ARN del grupo de destino alternativo (revisión de servicio verde).

  • productionListenerRule: el ARN de la regla de oyente para el tráfico de producción.

  • roleArn: el ARN del rol que permite que Amazon ECS administre los recursos de Elastic Load Balancing.

  • strategy: configúrelo en BLUE_GREEN para habilitar las implementaciones azul/verde.

  • bakeTimeInMinutes: el tiempo durante el cual las revisiones de servicio azul y verde se ejecutan simultáneamente después de que se haya transferido el tráfico de producción.

  • TestListenerRule: el ARN de la regla de oyente para el tráfico de prueba. Se trata de un parámetro opcional.

{ "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/primary-target-group/abcdef123456", "containerName": "container-name", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/alternate-target-group/ghijkl789012", "productionListenerRule": "arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/load-balancer-name/abcdef123456/listener/ghijkl789012/rule/mnopqr345678", "roleArn": "arn:aws:iam::123456789012:role/ecs-elb-role" } } ], "deploymentConfiguration": { "strategy": "BLUE_GREEN", "maximumPercent": 200, "minimumHealthyPercent": 100, "bakeTimeInMinutes": 5 } }

Flujo de tráfico durante la implementación

Durante una implementación azul/verde con Elastic Load Balancing, el tráfico fluye por el sistema de la siguiente manera:

  1. Estado inicial: todo el tráfico de producción se enruta al grupo de destino principal (revisión de servicio azul).

  2. Implementación de la revisión de servicio verde: Amazon ECS implementa las nuevas tareas y las registra en el grupo de destino alternativo.

  3. Tráfico de prueba: si se configura un oyente, el tráfico de prueba se enruta al grupo de destino alternativo para validar la revisión de servicio verde.

  4. Transferencia de tráfico de producción: Amazon ECS actualiza la regla de oyentes de producción para enrutar el tráfico al grupo de destino alternativo (revisión de servicio verde).

  5. Tiempo de incorporación: el tiempo durante el cual las revisiones de servicio azul y verde se ejecutan simultáneamente después de que se haya transferido el tráfico de producción.

  6. Finalización: tras una implementación correcta, se da por finalizada la revisión de servicio azul.

Si se detectan problemas durante la implementación, Amazon ECS puede revertirlos automáticamente enrutando nuevamente el tráfico al grupo de destino principal (revisión de servicio azul).