Recursos del equilibrador de carga de red para las implementaciones azul/verde de Amazon ECS
Para usar un equilibrador de carga de red 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. En esta sección se explican los componentes necesarios y su configuración.
Cuando su configuración incluye un equilibrador de carga de red, Amazon ECS agrega un retraso de 10 minutos a las siguientes etapas del ciclo de vida:
-
PRE_SCALE_UP
-
TEST_TRAFFIC_SHIFT
-
PRODUCTION_TRAFFIC_SHIFT
Este retraso explica los problemas de tiempo de ejecución del equilibrador de carga de red que pueden provocar una discordancia entre las ponderaciones de tráfico configuradas y el enrutamiento de tráfico real en el plano de datos.
Grupos de destino
Para las implementaciones azul/verde con un equilibrador de carga de red, 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 revisión del servicio)
Ambos grupos de destino deben configurarse con los siguientes ajustes:
-
Tipo de destino:
ip
(para Fargate o EC2 con modo de redawsvpc
) -
Protocolo:
TCP
(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
Para las comprobaciones de estado del TCP, el equilibrador de carga de red establece una conexión TCP con el destino. Si la conexión se realiza correctamente, se considera que el destino está en buen estado.
Para las comprobaciones de estado de HTTP/HTTPS, el equilibrador de carga de red envía una solicitud HTTP/HTTPS al destino y verifica la respuesta.
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 el equilibrador de carga de red
Los siguientes comandos de la AWS CLI crean dos grupos de destino para usarlos con un equilibrador de carga de red en una implementación azul/verde:
aws elbv2 create-target-group \ --name
blue-target-group
\ --protocol TCP \ --port 80 \ --vpc-idvpc-abcd1234
\ --target-type ip \ --health-check-protocol TCP aws elbv2 create-target-group \ --namegreen-target-group
\ --protocol TCP \ --port 80 \ --vpc-idvpc-abcd1234
\ --target-type ip \ --health-check-protocol TCP
Equilibrador de carga de red
Debe crear un equilibrador de carga de red 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
A diferencia de los equilibradores de carga de aplicaciones, los equilibradores de carga de red funcionan en la capa de transporte (capa 4) y no utilizan grupos de seguridad. En su lugar, debe asegurarse de que los grupos de seguridad asociados a sus tareas de Amazon ECS permitan el tráfico del equilibrador de carga de red en los puertos de oyente.
ejemplo Creación de un Network Load Balancer
El siguiente comando de la AWS CLI crea un equilibrador de carga de red para utilizarlo en una implementación azul/verde:
aws elbv2 create-load-balancer \ --name
my-network-load-balancer
\ --type network \ --subnetssubnet-12345678
subnet-87654321
Consideraciones acerca del uso de equilibradores de carga de red con las implementaciones azul/verde
Cuando use un equilibrador de carga de red para implementaciones azul/verde, tenga en cuenta lo siguiente:
-
Funcionamiento de la capa 4: los equilibradores de carga de red funcionan en la capa de transporte (capa 4) y no inspeccionan el contenido de la capa de aplicación (capa 7). Esto significa que no puede usar encabezados o rutas HTTP para tomar decisiones respecto al enrutamiento.
-
Comprobaciones de estado: las comprobaciones de estado de un equilibrador de carga de red se limitan a los protocolos TCP, HTTP o HTTPS. Para las comprobaciones de estado de TCP, el equilibrador de carga de red solo verifica que se pueda establecer la conexión.
-
Conservación de la conexión: los equilibradores de carga de red conservan la dirección IP de origen del cliente, lo que puede resultar útil por motivos de seguridad y registro.
-
Direcciones IP estáticas: los equilibradores de carga de red proporcionan direcciones IP estáticas para cada subred, lo que puede resultar útil para su inclusión en listas blancas o cuando los clientes necesitan conectarse a una dirección IP fija.
-
Tráfico de prueba: dado que los equilibradores de carga de red no admiten el enrutamiento basado en el contenido, el tráfico de prueba debe enviarse a un puerto diferente al del tráfico de producción.
Oyentes y reglas
Para las implementaciones azul/verde con un equilibrador de carga de red, debe configurar oyentes:
-
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
-
A diferencia de los equilibradores de carga de aplicación, los equilibradores de carga de red no admiten reglas de enrutamiento basadas en el contenido. En su lugar, el tráfico se enruta en función del puerto y el protocolo del oyente.
Los siguientes comandos de la AWS CLI crean oyentes de producción y de prueba para un equilibrador de carga de red:
Sustituya las entradas del usuario
por sus valores.
aws elbv2 create-listener \ --load-balancer-arn
arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/net/my-network-lb/1234567890123456
\ --protocol TCP \ --port 80 \ --default-actions Type=forward, TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/1234567890123456
aws elbv2 create-listener \ --load-balancer-arnarn:aws:elasticloadbalancing:region:123456789012:loadbalancer/net/my-network-lb/1234567890123456
\ --protocol TCP \ --port 8080 \ --default-actions Type=forward, TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/1234567890123456
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 implementaciones azul/verde con un equilibrador de carga de red, 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) -
productionListenerArn
: el ARN del oyente para el tráfico de producción -
testListenerArn
: (opcional) el ARN del oyente para el tráfico de prueba -
roleArn
: el ARN del rol que permite que Amazon ECS administre los recursos del equilibrador de carga de red -
strategy
: se configura enBLUE_GREEN
para habilitar las implementaciones azul/verde -
bakeTimeInMinutes
: el tiempo que se debe esperar después de que se implemente la revisión de servicio verde antes de transferir el tráfico de producción
{ "loadBalancers": [ { "targetGroupArn": "
arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/1234567890123456
", "containerName": "container-name", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/1234567890123456
", "productionListenerArn": "arn:aws:elasticloadbalancing:region:123456789012:listener/net/my-network-lb/1234567890123456/1234567890123456
", "testListenerArn": "arn:aws:elasticloadbalancing:region:123456789012:listener/net/my-network-lb/1234567890123456/2345678901234567
", "roleArn": "arn:aws:iam::123456789012:role/ecs-nlb-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 un equilibrador de carga de red, el tráfico fluye por el sistema de la siguiente manera:
-
Estado inicial: todo el tráfico de producción se enruta al grupo de destino principal (revisión de servicio azul).
-
Implementación de la revisión de servicio verde: Amazon ECS implementa las nuevas tareas y las registra en el grupo de destino alternativo.
-
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.
-
Transferencia de tráfico de producción: Amazon ECS actualiza el oyente de producción para enrutar el tráfico al grupo de destino alternativo (revisión de servicio verde).
-
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.
-
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).