Grupos de destino para seus Application Load Balancers - Elastic Load Balancing

Grupos de destino para seus Application Load Balancers

Os grupos de destino roteiam solicitações para destinos registrados individuais, como instâncias do EC2, usando o protocolo e o número de porta que você especifica. Você pode registrar um destino com vários grupos de destino. Você pode configurar verificações de integridade em cada grupo de destino. As verificações de integridade são executadas em todos os destinos registrados a um grupo de destino especificado em uma regra de listeners para seu load balancer.

Cada grupo de destino é usado para rotear solicitações para um ou mais destinos registrados. Ao criar cada regra do listener, especifique um grupo de destino e condições. Quando uma condição da regra é atendida, o tráfego é encaminhado para o grupo de destino correspondente. Você pode criar grupos de destino diferentes para tipos de solicitações diferentes. Por exemplo, você pode criar um grupo de destino para solicitações gerais e outros grupos de destino para solicitações para os microsserviços do aplicativo. Você só pode usar cada grupo de destino com um balanceador de carga. Para obter mais informações, consulte Componentes do Application Load Balancer.

Você define as configurações de verificação de integridade para seu load balancer por grupo de destino. Cada grupo de destino usa as configurações de verificação de integridade padrão, a menos que você as substitua ao criar o grupo de destino ou as modifique posteriormente. Após especificar um grupo de destino em uma regra para um listener, o load balancer monitora continuamente a integridade de todos os destinos registrados com o grupo de destino que estiverem em uma Zona de disponibilidade habilitada para o load balancer. O load balancer roteia solicitações para os destinos registrados que são íntegros.

Configuração de roteamento

Por padrão, um load balancer roteia solicitações para seus destinos usando o protocolo e o número da porta que você especificou ao criar o grupo de destino. Como alternativa, você pode substituir a porta usada para rotear o tráfego para um destino quando registrá-lo no grupo de destino.

Os grupos de destino são compatíveis com os seguintes protocolos e portas:

  • Protocolos: HTTP, HTTPS

  • Ports (Portas): 1-65535

Se um grupo de destino estiver configurado com o protocolo HTTPS ou usar as verificações de integridade de HTTPS, as conexões TLS com os destinos usarão as configurações de segurança da política ELBSecurityPolicy-2016-08. O balanceador de carga estabelecerá conexões TLS com os destinos usando certificados instalados nos destinos. O load balancer não valida esses certificados. Portanto, é possível usar certificados autoassinados ou certificados que tenham expirado. Como o load balancer está em uma nuvem privada virtual (VPC), o tráfego entre o load balancer e os destinos é autenticado no nível do pacote e, portanto, não corre o risco de ataques man-in-the-middle ou de falsificações mesmo que os certificados nos destinos não sejam válidos.

Target type

Durante a criação de um grupo de destino, você especifica seu tipo de destino, que determina o tipo de destino especificado ao registrar destinos com esse grupo de destino. Depois de criar um grupo de destino, você não pode mudar o seu tipo de destino.

Os possíveis tipos de destino são os seguintes:

instance

Os destinos são especificados por ID de instância.

ip

Os destinos são endereços IP.

lambda

O destino é uma função Lambda.

Quando o tipo de destino é ip, você pode especificar os endereços IP de um dos seguintes blocos CIDR:

  • As sub-redes da VPC para o grupo de destino

  • 10.0.0.0/8 (RFC 1918)

  • 100.64.0.0/10 (RFC 6598)

  • 172.16.0.0/12 (RFC 1918)

  • 192.168.0.0/16 (RFC 1918)

Importante

Você não pode especificar publicamente endereços IP roteáveis.

Todos os blocos CIDR compatíveis permitem que você registre os seguintes destinos em um grupo de destino:

  • Instâncias em uma VPC emparelhada com a VPC do balanceador de carga (mesma região ou região diferente).

  • Recursos da AWS endereçáveis por endereço IP e porta (por exemplo, bancos de dados).

  • Recursos on-premises vinculados à AWS por meio do AWS Direct Connect ou de uma conexão Site-to-Site VPN.

nota

Para Application Load Balancers implantados em uma zona local, os destinos ip devem estar na mesma zona local para receber tráfego.

Para obter mais informações, consulte O que são as zonas locais da AWS?

Se você especificar destinos usando um ID de instância, o tráfego é roteado para instâncias usando o endereço IP privado especificado na interface de rede principal para a instância. Se você especificar destinos usando endereços IP, você pode rotear o tráfego para uma instância com qualquer endereço IP privado de uma ou mais interfaces de rede. Isso permite que vários aplicativos em uma instância usem a mesma porta. Cada interface de rede pode ter seu próprio security group.

Se o tipo de destino do seu grupo de destino for lambda, você poderá registrar uma única função Lambda. Quando o load balancer recebe uma solicitação para a função Lambda, ele invoca a função Lambda. Para obter mais informações, consulte Funções do Lambda como destino.

Você pode configurar o Amazon Elastic Container Service (Amazon ECS) como destino do seu Application Load Balancer. Para obter mais informações, consulte Criar um Application Load Balancer no Guia do usuário do Amazon Elastic Container Service para AWS Fargate.

Tipo de endereço IP

Ao criar um novo grupo de destino, você pode selecionar o tipo de endereço IP do seu grupo de destino. Isso controla a versão do IP usada para comunicação com os destinos e para a verificação do status de integridade deles.

Application Load Balancers são compatíveis com grupos de destino IPv4 e IPv6. A seleção padrão é IPv4.

Considerações
  • Todos os endereços IP de um grupo de destino devem ter o mesmo tipo de endereço IP. Por exemplo, você não pode registrar um destino IPv4 com um grupo de destino IPv6.

  • Os grupos de destino IPv6 só podem ser usados com balanceadores de carga dualstack.

  • Os grupos de destino IPv6 são compatíveis com destinos do tipo IP e instância.

Versão do protocolo

Por padrão, os Application Load Balancers enviam solicitações aos destinos usando HTTP/1.1. Você pode usar a versão do protocolo para enviar solicitações aos destinos usando HTTP/2 ou gRPC.

A tabela a seguir resume o resultado das combinações de protocolo de solicitação e versão de protocolo do grupo de destino.

Protocolo de solicitação Versão do protocolo Result
HTTP/1.1 HTTP/1.1 Bem-sucedida
HTTP/2 HTTP/1.1 Bem-sucedida
gRPC HTTP/1.1 Erro
HTTP/1.1 HTTP/2 Erro
HTTP/2 HTTP/2 Bem-sucedida
gRPC HTTP/2 Sucesso se os destinos forem compatíveis com gRPC
HTTP/1.1 gRPC Erro
HTTP/2 gRPC Sucesso se for uma solicitação POST
gRPC gRPC Bem-sucedida
Considerações sobre a versão do protocolo gRPC
  • O único protocolo de receptor compatível é HTTPS.

  • O único tipo de ação compatível com as regras do receptor é forward.

  • Só há compatibilidade com os tipos de destino instance e ip.

  • O balanceador de carga analisa as solicitações do gRPC e encaminha as chamadas do gRPC para os grupos de destino adequados com base no pacote, serviço e método.

  • O balanceador de carga é compatível streaming unário no lado do cliente, streaming no lado do servidor e streaming bidirecional.

  • Você deve fornecer um método de verificação de integridade personalizado com o formato /package.service/method.

  • É necessário especificar os códigos de status a serem usados ao verificar uma resposta bem-sucedida de um destino.

  • Não é possível usar funções do Lambda como destino.

Considerações sobre a versão do protocolo HTTP/2
  • O único protocolo de receptor compatível é HTTPS.

  • O único tipo de ação compatível com as regras do receptor é forward.

  • Só há compatibilidade com os tipos de destino instance e ip.

  • O balanceador de carga é compatível com streaming proveniente dos clientes. O balanceador de carga não é compatível com streaming para os destinos.

Destinos registrados

O seu load balancer serve como um ponto único de contato para clientes e distribui o tráfego de entrada nos destinos íntegros registrados. Você pode registrar cada destino com um ou mais grupos de destino.

Se a demanda da seu aplicativo aumentar, você pode registrar destinos adicionais com um ou mais grupos de destino, a fim de dar conta da demanda. O load balancer inicia as solicitações de roteamento para um destino recém-registrado assim que o processo de registro é concluído e o destino passa pelas verificações de integridade iniciais.

Se a demanda na seu aplicativo diminuir, ou se você precisar fazer manutenção nos seus destinos, você pode cancelar o registro dos destinos dos seus grupos de destino. Cancelar o registro de um destino o remove do seu grupo de destino, mas não afeta o destino de outra forma. O load balancer interrompe as solicitações de roteamento ao destino assim que o registro dele for cancelado. O destino entra no estado draining até que as solicitações em andamento tenham sido concluídas. Você pode registrar o destino com o grupo de destino novamente quando estiver pronto para retomar o recebimento de solicitações.

Se você estiver registrando destinos por ID de instância, poderá usar o balanceador de carga com um grupo do Auto Scaling. Depois que você anexar um grupo de destino a um grupo do Auto Scaling, o Auto Scaling registrará os destinos no grupo de destino para você quando ele os iniciar. Para obter mais informações, consulte Anexar um balanceador de carga ao seu grupo do Auto Scaling no Guia do usuário do Amazon EC2 Auto Scaling.

Limites
  • Não é possível registrar os endereços IP de outro Application Load Balancer na mesma VPC. Se o outro Application Load Balancer estiver em uma VPC emparelhada à VPC do balanceador de carga, você poderá registrar seus endereços IP.

  • Não será possível registrar instâncias por ID de instância se elas estiverem em uma VPC emparelhada com a VPC do balanceador de carga (mesma região ou região diferente). Você poderá registrar essas instâncias pelo endereço IP.

Atributos do grupo de destino

Os seguintes atributos do grupo de destino são compatíveis se o tipo de grupo de destino for instance ou ip:

deregistration_delay.timeout_seconds

A quantidade de tempo que o Elastic Load Balancing deve aguardar antes de cancelar o registro de um destino. O intervalo é de 0 a 3.600 segundos. O valor de padrão é de 300 segundos.

load_balancing.algorithm.type

O algoritmo de balanceamento de carga determina como o load balancer seleciona os destinos ao rotear as solicitações. O valor é round_robin ou least_outstanding_requests. O padrão é round_robin.

load_balancing.cross_zone.enabled

Indica se o balanceamento de carga entre zonas está habilitado. O valor é true, false ou use_load_balancer_configuration. O padrão é use_load_balancer_configuration.

slow_start.duration_seconds

O período, em segundos, durante o qual o load balancer envia a um destino recém-registrado uma parcela de tráfego com aumento linear ao grupo de destino. O intervalo é de 30 a 900 segundos (15 minutos). O padrão é 0 segundos (desativado).

stickiness.enabled

Indica se sticky sessions estão habilitadas. O valor é true ou false. O padrão é false.

stickiness.app_cookie.cookie_name

O nome do cookie da aplicação. O nome do cookie da aplicação não pode ter os seguintes prefixos:AWSALB, AWSALBAPP ou AWSALBTG. Esses prefixos são reservados para uso pelo balanceador de carga.

stickiness.app_cookie.duration_seconds

O período de expiração de cookie baseado em aplicação, em segundos. Após esse período, o cookie será considerado antigo. O valor mínimo é 1 segundo e o valor máximo é 7 dias (604.800 segundos). O valor padrão é de 1 dia (86.400 segundos).

stickiness.lb_cookie.duration_seconds

O período de expiração do cookie baseado em duração, em segundos. Após esse período, o cookie será considerado antigo. O valor mínimo é 1 segundo e o valor máximo é 7 dias (604.800 segundos). O valor padrão é de 1 dia (86.400 segundos).

stickiness.type

O tipo de perdurabilidade. Os valores possíveis são lb_cookie e app_cookie.

target_group_health.dns_failover.minimum_healthy_targets.count

O número mínimo de destinos que devem estar íntegros. Se o número de destinos íntegros for menor do que esse valor, marque a zona como não íntegra no DNS, para que o tráfego seja roteado somente para zonas íntegras. Os valores possíveis são off ou um número inteiro de 1 até o número máximo de destinos. Quando off, a falha de DNS inativo estará desabilitada, o que significa que cada grupo de destino contribui de modo independente para o failover de DNS. O padrão é 1.

target_group_health.dns_failover.minimum_healthy_targets.percentage

O percentual mínimo de destinos que devem estar íntegros. Se o percentual de destinos íntegros for inferior a esse valor, marque a zona como não íntegra no DNS, para que o tráfego seja roteado somente para zonas íntegras. Os valores possíveis são off ou um número inteiro de 1 até o número máximo de destinos. Quando off, a falha de DNS inativo estará desabilitada, o que significa que cada grupo de destino contribui de modo independente para o failover de DNS. O padrão é 1.

target_group_health.unhealthy_state_routing.minimum_healthy_targets.count

O número mínimo de destinos que devem estar íntegros. Se o número de destinos íntegros for menor do que desse valor, envie tráfego para todos os alvos, incluindo alvos não íntegros. O intervalo é de 1 ao número máximo de destinos. O padrão é 1.

target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage

O percentual mínimo de destinos que devem estar íntegros. Se a porcentagem de destinos íntegros for menor do que valor, envie tráfego para todos os alvos, incluindo alvos não íntegros. Os valores possíveis são off ou um número inteiro de 1 a 100. O padrão é off.

O seguinte atributo do grupo de destino é compatível se o tipo de grupo de destino for lambda:

lambda.multi_value_headers.enabled

Indica se os cabeçalhos da solicitação e resposta trocados entre o load balancer e a função Lambda incluem matrizes de valores ou strings. Os valores possíveis são true ou false. O valor padrão é false. Para obter mais informações, consulte Cabeçalhos de vários valores.

Algoritmo de roteamento

Por padrão, o algoritmo de roteamento de ida e volta é usado para rotear solicitações no nível do grupo de destino. Em vez disso, você pode especificar o algoritmo de roteamento de solicitações menos pendentes.

Pense em usar solicitações menos pendentes quando as solicitações ao seu aplicativo variarem em complexidade ou seus destinos variarem em capacidade de processamento. O algoritmo de ida e volta é uma boa opção quando as solicitações e os destinos são semelhantes ou quando você precisa distribuir as solicitações igualmente entre os destinos. Você pode comparar o efeito do algoritmo de ida e volta e o efeito das solicitações menos pendentes usando as seguintes métricas do CloudWatch: RequestCount, TargetConnectionErrorCount e TargetResponseTime.

Considerações
  • Não é possível habilitar as solicitações menos pendentes e o modo de início lento.

  • Se você habilitar as sessões persistentes, o algoritmo de roteamento do grupo de destino será substituído após a seleção inicial de destino.

  • Quando o balanceador de carga for compatível com HTTP/2 para destinos que sejam compatíveis apenas com HTTP/1.1, ele converterá a solicitação em várias solicitações HTTP/1.1. Portanto, a solicitação menos pendente tratará cada solicitação HTTP/2 como várias solicitações.

  • Quando você usa solicitações menos pendentes com o WebSockets, o destino é selecionado usando solicitações menos pendentes. O load balancer cria uma conexão com esse destino e envia todas as mensagens por essa conexão.

New EC2 experience
Para modificar o algoritmo de roteamento usando a nova experiência do EC2
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, selecione Grupos de destino.

  3. Escolha o nome do grupo de destino para abrir sua página de detalhes.

  4. Na guia Detalhes do grupo, na seção Atributos, escolha Editar.

  5. Na página Editar atributos, em Algoritmo de balanceamento de carga, escolha Ida e volta ou Solicitações menos pendentes.

  6. Escolha Save changes (Salvar alterações).

Old EC2 experience
Para modificar o algoritmo de roteamento usando a experiência antiga do EC2
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, selecione Grupos de destino.

  3. Selecione o grupo de destino.

  4. Na guia Descrição, selecione Editar atributos.

  5. Na página Edit attributes (Editar atributos), em Load balancing algorithm (Algoritmo de balanceamento de carga), escolha Round robin (Ida e volta) ou Least outstanding requests (Solicitações menos pendentes) e, em seguida, Save (Salvar).

Para modificar o algoritmo de roteamento usando a AWS CLI

Use o comando modify-target-group-attributes com o atributo load_balancing.algorithm.type.

Atraso do cancelamento do registro

O Elastic Load Balancing interrompe o envio de solicitações aos destinos cujo registro esteja sendo cancelado. Por padrão, o Elastic Load Balancing aguarda 300 segundos antes de concluir o processo de cancelamento do registro, o que pode ajudar na conclusão das solicitações em trânsito para o destino. Para alterar o tempo que o Elastic Load Balancing aguarda, atualize o valor de atraso de cancelamento de registro. .

O estado inicial de um destino que terá o registro cancelado é draining. Depois de decorrido o retardo de cancelamento do registro, processo será concluído e o estado do destino será unused. Se o destino for parte de um grupo do Auto Scaling, ele poderá ser encerrado e substituído.

Se um destino cujo registro esteja sendo cancelado não tiver solicitações em trânsito nem conexões ativas, o Elastic Load Balancing concluirá imediatamente o processo de cancelamento de registro, sem aguardar o término do tempo de espera. No entanto, mesmo que o cancelamento do registro de destino seja concluído, o status do destino será exibido como draining até que o tempo limite de atraso do cancelamento do registro termine. Depois que o tempo limite expirar, o destino passará para um estado unused.

Se cancelar o registro de um destino encerrar a conexão antes de o retardo de cancelamento do registro passar, o cliente receberá uma resposta de erro de nível 500.

New EC2 experience
Para atualizar o valor de atraso do cancelamento do registro usando a nova experiência do EC2
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, selecione Grupos de destino.

  3. Escolha o nome do grupo de destino para abrir sua página de detalhes.

  4. Na guia Detalhes do grupo, na seção Atributos, escolha Editar.

  5. Na página Editar atributos, altere o valor do Atraso do cancelamento do registro conforme o necessário.

  6. Escolha Save changes (Salvar alterações).

Old EC2 experience
Para atualizar o valor de atraso do cancelamento do registro usando a experiência antiga do EC2
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, selecione Grupos de destino.

  3. Selecione o grupo de destino.

  4. Na guia Descrição, selecione Editar atributos.

  5. Na página Editar atributos, altere o valor do Atraso no cancelamento do registro conforme o necessário e, em seguida, selecione Salvar.

Para atualizar o valor de atraso de cancelamento do registro usando a AWS CLI

Use o comando modify-target-group-attributes com o atributo deregistration_delay.timeout_seconds.

Modo de iniciação lenta

Por padrão, um destino começa a receber toda sua parte de solicitações assim que for registrado com um grupo de destino e enviar uma verificação de integridade inicial. Usar o modo de iniciação lenta oferece tempo para que os destinos aqueçam antes que o load balancer envie toda a parte de solicitações.

Com a iniciação lenta habilitada para um grupo de destino, os destinos entrarão no modo de iniciação lenta quando forem considerados íntegros pelo grupo de destino. Um destino sai do modo de iniciação lenta quando a duração da iniciação lenta configurada expira ou o destino se torna não íntegro. O load balancer aumenta linearmente o número de solicitações enviadas a um destino no modo de iniciação lenta. Assim que um destino íntegro deixa o modo de iniciação lenta, o balanceador de carga pode enviar uma parcela total de solicitações para esse destino.

Considerações
  • Quando você habilita a iniciação lenta para um grupo de destino, os destinos íntegros que já estão registrados no grupo não entram no modo de iniciação lenta.

  • Ao habilitar a iniciação lenta para um grupo de destino vazio e registrar destinos usando uma única operação de registro, esses destinos não entram no modo de iniciação rápida. Os destinos recém-registrados entram no modo de iniciação lenta somente quando há pelo menos um destino íntegro que não esteja no modo de iniciação lenta.

  • Se você cancelar o registro de um destino no modo de iniciação lenta, o destino sai do modo. Se você registrar o mesmo destino novamente, ele entrará no modo de iniciação lenta quando for considerado íntegro pelo grupo de destino.

  • Se um destino no modo de iniciação lenta se tornar não íntegro, o destino sairá do modo de iniciação lenta. Quando o destino se tornar íntegro, ele entrará novamente no modo de iniciação lenta.

  • Não é possível habilitar o modo de início lento e as solicitações menos pendentes.

New EC2 experience
Para atualizar o valor de duração da iniciação lenta usando a nova experiência do EC2
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, selecione Grupos de destino.

  3. Escolha o nome do grupo de destino para abrir sua página de detalhes.

  4. Na guia Detalhes do grupo, na seção Atributos, escolha Editar.

  5. Na página Editar atributos, altere o valor da Duração da iniciação lenta conforme necessário. Para desativar o modo de iniciação lenta, defina a duração para 0.

  6. Escolha Save changes (Salvar alterações).

Old EC2 experience
Para atualizar o valor de duração da iniciação lenta usando a experiência antiga do EC2
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, selecione Grupos de destino.

  3. Selecione o grupo de destino.

  4. Na guia Descrição, selecione Editar atributos.

  5. Na página Editar atributos, altere o valor da Duração da iniciação lenta conforme o necessário e, em seguida, selecione Salvar. Para desativar o modo de iniciação lenta, defina a duração para 0.

Para atualizar o valor de duração da iniciação lenta usando a AWS CLI

Use o comando modify-target-group-attributes com o atributo slow_start.duration_seconds.