Recursos do Network Load Balancer para implantações azul/verde do Amazon ECS
Para usar um Network Load Balancer com implantações azul/verde do Amazon ECS, você precisa configurar recursos específicos que permitam o roteamento de tráfego entre as revisões de serviço azul e verde. Esta seção explica os componentes necessários e suas configurações.
Quando sua configuração inclui um Network Load Balancer, o Amazon ECS adiciona um atraso de dez minutos aos seguintes estágios do ciclo de vida:
-
PRE_SCALE_UP
-
TEST_TRAFFIC_SHIFT
-
PRODUCTION_TRAFFIC_SHIFT
Esse atraso é responsável por problemas de tempo do Network Load Balancer que podem causar uma incompatibilidade entre os pesos de tráfego configurados e o roteamento real do tráfego no plano de dados.
Grupos de destino
Para implantações azul/verde com um Network Load Balancer, você precisa criar dois grupos de destino:
-
Um grupo de destino principal para a revisão do serviço azul (tráfego de produção atual)
-
Um grupo de destino alternativo para a revisão do serviço verde (nova revisão do serviço)
Ambos os grupos de destino devem ser configurados com as seguintes configurações:
-
Tipo de destino:
ip
(para Fargate ou EC2 com modo de redeawsvpc
) -
Protocolo:
TCP
(ou o protocolo que sua aplicação usa) -
Porta: a porta que sua aplicação escuta (normalmente
80
para HTTP) -
VPC: a mesma VPC das suas tarefas do Amazon ECS
-
Configurações de verificação de integridade: configuradas para verificar adequadamente a integridade da sua aplicação
Para verificações de integridade do TCP, o Network Load Balancer estabelece uma conexão TCP com o destino. Se a conexão for bem-sucedida, o destino será considerado íntegro.
Para verificações de integridade de HTTP/HTTPS, o Network Load Balancer envia uma solicitação HTTP/HTTPS ao destino e verifica a resposta.
Durante uma implantação azul/verde, o Amazon ECS registra automaticamente as tarefas com o grupo de destino apropriado com base no estágio de implantação.
exemplo Criação de grupos de destino para o Network Load Balancer
Os seguintes comandos da AWS CLI criam dois grupos de destino para uso com um Network Load Balancer em uma implantação 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
Network Load Balancer
É necessário criar um Network Load Balancer com a seguinte configuração:
-
Esquema: voltado para a internet ou interno, dependendo de suas necessidades
-
Tipo de endereço IP: IPv4
-
VPC: a mesma VPC das suas tarefas do Amazon ECS
-
Sub-redes: pelo menos duas sub-redes em diferentes zonas de disponibilidade
Diferentemente dos Application Load Balancers, os Network Load Balancers operam na camada de transporte (camada 4) e não usam grupos de segurança. Em vez disso, você precisa garantir que os grupos de segurança associados às tarefas do Amazon ECS permitam o tráfego do Network Load Balancer nas portas do receptor.
exemplo Criar um Network Load Balancer
O seguinte comando da AWS CLI cria um Network Load Balancer para ser usado em uma implantação azul/verde:
aws elbv2 create-load-balancer \ --name
my-network-load-balancer
\ --type network \ --subnetssubnet-12345678
subnet-87654321
Considerações sobre o uso do NLB com implantações azul/verde
Ao usar um Network Load Balancer para implantações azul/verde, considere o seguinte:
-
Operação da camada 4: os Network Load Balancers operam na camada de transporte (camada 4) e não inspecionam o conteúdo da camada da aplicação (camada 7). Isso significa que você não pode usar cabeçalhos ou caminhos HTTP para decisões de roteamento.
-
Verificações de integridade: as verificações de integridade do Network Load Balancer estão limitadas aos protocolos TCP, HTTP ou HTTPS. Para verificações de integridade do TCP, o Network Load Balancer apenas verifica se a conexão pode ser estabelecida.
-
Preservação da conexão: os Network Load Balancers preservam o endereço IP de origem do cliente, o que pode ser útil para fins de segurança e registro em log.
-
Endereços IP estáticos: os Network Load Balancers fornecem endereços IP estáticos para cada sub-rede, o que pode ser útil para listas de permissões ou quando os clientes precisam se conectar a um endereço IP fixo.
-
Tráfego de teste: como os Network Load Balancers não são compatíveis com o roteamento baseado em conteúdo, o tráfego de teste deve ser enviado para outra porta do tráfego de produção.
Receptores e regras
Para implantações azul/verde com um Network Load Balancer, você precisa configurar receptores:
-
Receptor de produção: processa o tráfego de produção (normalmente na porta 80 ou 443)
-
Inicialmente encaminha o tráfego para o grupo de destino principal (revisão de serviço azul)
-
Após a implantação, encaminha o tráfego para o grupo de destino alternativo (revisão de serviço verde)
-
-
Receptor de teste (opcional): processa o tráfego de teste para validar a revisão do serviço verde antes de mudar o tráfego de produção
-
Pode ser configurado em outra porta (por exemplo, 8080 ou 8443)
-
Encaminha o tráfego para o grupo de destino alternativo (revisão de serviço verde) durante o teste
-
Diferentemente dos Application Load Balancers, os Network Load Balancers não são compatíveis com regras de roteamento baseadas em conteúdo. Em vez disso, o tráfego é roteado com base na porta e no protocolo do receptor.
Os seguintes comandos da AWS CLI criam receptores de produção e teste para um Network Load Balancer:
Substitua os valores das user-input
pelos seus.
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
Configuração de serviço
Você deve ter permissões para permitir que o Amazon ECS gerencie recursos do balanceador de carga nos clusters em seu nome. Para obter mais informações, consulte Perfil do IAM da infraestrutura do Amazon ECS para balanceadores de carga.
Ao criar ou atualizar um serviço do Amazon ECS para implantações azul/verde com um Network Load Balancer, você precisa especificar a seguinte configuração:
Substitua os valores das user-input
pelos seus.
Os principais componentes dessa configuração são:
-
targetGroupArn
: o ARN do grupo de destino principal (revisão de serviço azul) -
alternateTargetGroupArn
: o ARN do grupo de destino alternativo (revisão de serviço verde) -
productionListenerArn
: o ARN do receptor para tráfego de produção -
testListenerArn
: (opcional) o ARN do receptor para tráfego de teste -
roleArn
: o ARN do perfil que permite ao Amazon ECS gerenciar recursos do Network Load Balancer -
strategy
: defina comoBLUE_GREEN
para habilitar implantações em azul/verde -
bakeTimeInMinutes
: o tempo de espera após a implantação da revisão do serviço verde antes de mudar o tráfego de produção
{ "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 } }
Fluxo de tráfego durante a implantação
Durante uma implantação azul/verde com um Network Load Balancer, o tráfego flui pelo sistema da seguinte forma:
-
Estado inicial: todo o tráfego de produção é roteado para o grupo de destino principal (revisão de serviço azul).
-
Implantação de revisão de serviço verde: o Amazon ECS implanta as novas tarefas e as registra no grupo de destino alternativo.
-
Tráfego de teste: se um receptor de teste estiver configurado, o tráfego de teste será roteado para o grupo de destino alternativo para validar a revisão do serviço verde.
-
Mudança de tráfego de produção: o Amazon ECS atualiza o receptor de produção para rotear o tráfego para o grupo de destino alternativo (revisão de serviço verde).
-
Tempo de incorporação: a duração em que as revisões de serviço azul e verde são executadas simultaneamente após a mudança do tráfego de produção.
-
Conclusão: após uma implantação bem-sucedida, a revisão do serviço azul é encerrada.
Se forem detectados problemas durante a implantação, o Amazon ECS pode reverter automaticamente roteando o tráfego de volta para o grupo de destino principal (revisão de serviço azul).