Application Load Balancers - Elastic Load Balancing

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Application Load Balancers

Um load balancer serve como ponto único de contato para os clientes. Os clientes enviam solicitações para o load balancer e o load balancer as envia para os destinos, como instâncias do EC2. Para configurar o load balancer, você cria grupos de destino e, em seguida, registra os destinos nesses grupos. Você também pode criar listeners para verificar a solicitações de conexão de clientes, além de regras dos listeners para rotear solicitações dos clientes para os destinos em um ou mais grupos de destino.

Para obter mais informações, consulteComo Elastic Load BalancingnoElastic Load Balancing.

Sub-redes para o balanceador de carga

Ao criar um Application Load Balancer, você deve especificar um dos seguintes tipos de sub-redes: Zona de disponibilidade, Zona local ou Posto avançado.

Zonas de disponibilidade

Você deve selecionar pelo menos duas sub-redes da zona de disponibilidade. As seguintes restrições são aplicáveis:

  • Cada sub-rede deve ser de diferentes Zonas de disponibilidade (AZ).

  • Para garantir que o load balancer possa ser dimensionado corretamente, verifique se cada sub-rede da zona de disponibilidade do load balancer tem um bloco CIDR com pelo menos um/27bitmask (por exemplo,10.0.0.0/27) e pelo menos 8 endereços IP gratuitos por sub-rede. Seu load balancer usa esses endereços IP para estabelecer conexões com os destinos. Dependendo do seu perfil de tráfego, o balanceador de carga pode ser dimensionado mais alto e consumir até um máximo de 100 endereços IP distribuídos por todas as sub-redes habilitadas.

Zonas locais

Você pode especificar uma ou mais sub-redes de Zona Local. As seguintes restrições são aplicáveis:

  • Não é possível usar o AWS WAF com o load balancer.

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

Outposts

Você pode especificar uma única sub-rede do Posto Avançado. As seguintes restrições são aplicáveis:

  • Um Outpost deve estar instalado e configurado no datacenter no local. Você deve ter uma conexão de rede confiável entre o Outpost e seuAWSRegião : Para obter mais informações, consulte o Guia do usuário do AWS Outposts.

  • O load balancer requer duas instâncias no Outpost para os nós do load balancer. As instâncias compatíveis são exibidas na tabela abaixo. Inicialmente, as instâncias sãolargeinstâncias. O balanceador de carga é dimensionado conforme necessário, a partir delargeparaxlarge,xlargepara2xlarge, e2xlargepara4xlarge. Se você precisar de capacidade adicional, o balanceador de carga adiciona4xlargeinstâncias. Se você não tiver capacidade de instância suficiente ou endereços IP disponíveis para dimensionar o load balancer, o load balancer reporta um evento para oAWS Personal Health Dashboarde o estado do balanceador de carga éactive_impaired.

  • Você pode registrar destinos por ID de instância ou endereço IP. Se você registrar destinos noAWSRegião para o Posto Avançado, eles não são usados.

  • Os seguintes recursos não estão disponíveis: Funções Lambda como alvos,AWS WAFintegração, sessões adesivas, suporte à autenticação e integração com oAWS Global Accelerator.

Um Application Load Balancer pode ser implantado em instâncias c5/c5d, m5/m5d ou r5/r5d em um posto avançado. A tabela a seguir mostra o tamanho e o volume do EBS por tipo de instância que o load balancer pode usar em um Outpost:

Tipo e tamanho da instância Volume EBS (GB)
c5/c5d
grande 50
xlarge 50
2xlarge 50
4xlarge 100
m5/m5d
grande 50
xlarge 50
2xlarge 100
4xlarge 100
r5/r5d
grande 50
xlarge 100
2xlarge 100
4xlarge 100

Grupos de segurança do load balancer

Um security group atua como um firewall que controla o tráfego permitido de e para o load balancer. Você pode escolher as portas e os protocolos para permitir tráfego tanto de entrada quanto de saída.

As regras para os security groups associadas ao load balancer devem permitir tráfego em ambas as direções tanto no listener quanto nas portas de verificação de integridade. Sempre que você adicionar um listener a um load balancer ou atualizar a porta de verificação de integridade de um grupo de destino, será necessário revisar as regras do security group para garantir que elas permitam tráfego na nova porta em ambas as direções. Para obter mais informações, consulte Regras recomendadas.

Estado do load balancer

O load balancer pode estar em um dos seguintes estados:

provisioning

O load balancer está sendo configurado.

active

O load balancer está totalmente configurado e pronto para rotear o tráfego.

active_impaired

O load balancer está roteando tráfego, mas não tem os recursos necessários para dimensionar.

failed

O load balancer não pôde ser configurado.

Atributos do load balancer

A seguir estão os atributos do load balancer:

access_logs.s3.enabled

Indica se os logs de acesso armazenados no Amazon S3 estão habilitados. O padrão é false.

access_logs.s3.bucket

O nome do bucket do Amazon S3 para os logs de acesso. Esse atributo é necessário se os logs de acesso estiverem habilitados. Para obter mais informações, consulte Permissões do bucket.

access_logs.s3.prefix

O prefixo para a localização no bucket do Amazon S3.

deletion_protection.enabled

Indica se a proteção contra exclusão está habilitada. O padrão é false.

idle_timeout.timeout_seconds

O valor de tempo limite de inatividade, em segundos. O padrão é 60 segundos.

routing.http.desync_mitigation_mode

Determina como o load balancer lida com solicitações que podem representar risco de segurança para o seu aplicativo. Os valores possíveis são monitor, defensive e strictest. O padrão é defensive.

routing.http.drop_invalid_header_fields.enabled

Indica se os cabeçalhos HTTP com campos de cabeçalho que não são válidos são removidos pelo load balancer (true), ou encaminhado para destinos (false). O padrão é false. Elastic Load Balancing exige que os nomes de cabeçalho de mensagem estejam em conformidade com a expressão regular[-A-z0-9]+, que descreve todos os cabeçalhos de mensagens registradas na internet. Cada nome consiste em caracteres alfanuméricos ou hifens.

routing.http.x_amzn_tls_version_and_cipher_suite.enabled

Indica se os dois cabeçalhos (x-amzn-tls-versionex-amzn-tls-cipher-suite), que contêm informações sobre a versão TLS negociada e conjunto de cifras, são adicionadas à solicitação do cliente antes de enviá-la para o destino. Ox-amzn-tls-versiontem informações sobre a versão do protocolo TLS negociada com o cliente e ox-amzn-tls-cipher-suiteO cabeçalho tem informações sobre o pacote de criptografia negociado com o cliente. Ambos os cabeçalhos estão no formato OpenSSL. Os possíveis valores para o atributo sãotrueefalse. O padrão é false.

routing.http.xff_client_port.enabled

Indica se oX-Forwarded-ForDeve preservar a porta de origem que o cliente usou para conectar-se ao load balancer. Os valores possíveis são true e false. O padrão é false.

routing.http2.enabled

Indica se HTTP/2 está habilitado. O padrão é true.

waf.fail_open.enabled

Indica se deseja permitir umAWS WAFHabilitado load balancer para rotear solicitações para destinos se ele não conseguir encaminhar a solicitação paraAWS WAF. Os valores possíveis são true e false. O padrão é false.

Tipo de endereço IP

Você pode definir os tipos de endereços IP que os clientes podem usar com o load balancer voltado para a Internet. Os clientes devem usar endereços IPv4 com load balancers internos.

Veja a seguir os tipos de endereço IP:

ipv4

Os clientes devem se conectar ao load balancer usando endereços IPv4 (por exemplo, 192.0.2.1)

dualstack

Os clientes podem se conectar ao load balancer usando endereços IPv4 (por exemplo, 192.0.2.1) e endereços IPv6 (por exemplo, 2001:0db8:85a3:0:0:8a2e:0370:7334).

Ao habilitar o modo de pilha dupla para o load balancer, o Elastic Load Balancing ancer fornece um registro DNS AAAA para o load balancer. Os clientes que se comunicam com o load balancer usando endereços IPv4 resolvem o registro DNS A. Os clientes que se comunicam com o load balancer usando endereços IPv6 resolvem o registro DNS AAAA.

O load balancer se comunica com os destinos usando endereços IPv4, independentemente de como o cliente se comunica com o load balancer. Portanto, os destinos não precisam de endereços IPv6.

Para obter mais informações, consulte Tipos de endereço IP para o Application Load Balancer.

Tempo limite de inatividade da conexão

Para cada solicitação que um cliente faz por meio de um load balancer, o load balancer mantém duas conexões. A conexão front-end é entre um cliente e o load balancer. A conexão back-end está entre o load balancer e um destino. O load balancer tem um período de tempo limite ocioso configurado que se aplica às suas conexões. Se nenhum dado tiver sido enviado ou recebido até o período que o tempo limite de inatividade terminar, o load balancer fechará a conexão. Para garantir que operações demoradas, como uploads de arquivo, tenham tempo para serem concluídas, envie pelo menos 1 byte de dados antes de decorrer cada período de tempo limite de inatividade e aumente a duração do período do tempo limite de inatividade conforme o necessário.

Para conexões back-end, recomendamos que você habilite a opção de keep-alive do HTTP para as suas instâncias do EC2. Você pode habilitar a opção de keep-alive do HTTP nas configurações do servidor web para suas instâncias do EC2. Se você habilitar o keep-alive do HTTP, o load balancer poderá reutilizar as conexões back-end até que o tempo limite do keep-alive expire. Recomendamos também que você configure o tempo limite de inatividade do seu aplicativo como um valor maior do que o tempo limite de inatividade configurado para o load balancer.

Por padrão, o Elastic Load Balancing cer define o valor de tempo limite ocioso para o load balancer como 60 segundos. Use o procedimento a seguir para definir um valor de tempo limite ocioso diferente.

Para atualizar o valor do tempo limite de inatividade usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, escolha Load balancers.

  3. Selecione o load balancer.

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

  5. Na página Edit load balancer attributes (Editar atributos do load balancer), insira um valor para o Idle timeout (Tempo limite de inatividade), em segundos. O intervalo válido é 1-4000.

  6. Escolha Save (Salvar).

Para atualizar o valor do tempo limite de inatividade usando a AWS CLI

Use o comando modify-load-balancer-attributes com o atributo idle_timeout.timeout_seconds.

Deletion protection (Proteção contra exclusão)

Para evitar que seu load balancer seja excluído acidentalmente, você pode ativar a proteção contra exclusão. Por padrão, a proteção contra exclusão está desativada para seu load balancer.

Se você ativar a proteção contra exclusão para o load balancer, deverá desativá-la antes de excluir o load balancer.

Para habilitar a proteção contra exclusão usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, escolha Load balancers.

  3. Selecione o load balancer.

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

  5. Na página Edit load balancer attributes (Editar atributos do load balancer), selecione Enable (Habilitar) em Delete Protection (Proteção contra a exclusão) e escolha Save (Salvar).

  6. Escolha Save (Salvar).

Para desabilitar a proteção contra exclusão usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, escolha Load balancers.

  3. Selecione o load balancer.

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

  5. Na página Edit load balancer attributes (Editar atributos do load balancer), desmarque Enable (Habilitar) em Delete Protection (Proteção contra a exclusão) e escolha Save (Salvar).

  6. Escolha Save (Salvar).

Para habilitar ou desabilitar a proteção contra exclusão usando a AWS CLI

Use o comando modify-load-balancer-attributes com o atributo deletion_protection.enabled.

Modo de mitigação do desync

O modo de mitigação de dessincronização protege seu aplicativo contra problemas devido ao HTTP Desync. O balanceador de carga classifica cada solicitação com base em seu nível de ameaça, permite solicitações seguras e, em seguida, reduz o risco, conforme especificado pelo modo de mitigação especificado. Os modos de mitigação de dessincronização são monitorados, defensivos e mais rigorosos. O padrão é o modo defensivo, que fornece mitigação durável contra dessincronização HTTP, mantendo a disponibilidade do seu aplicativo. Você pode alternar para o modo mais restrito para garantir que seu aplicativo receba somente solicitações que estejam em conformidade com oRFC 7230.

A biblioteca http_desync_guardian analisa solicitações HTTP para evitar ataques HTTP Desync. Para obter mais informações, consulteHTTP Desync Guardianno github.

Classifications

As classificações são as seguintes. Para obter mais informações, consulte Razões de classificação.

  • Compatível — a solicitação está em conformidade com o RFC 7230 e não representa ameaças de segurança conhecidas.

  • Aceitável — a solicitação não está em conformidade com o RFC 7230, mas não representa ameaças de segurança conhecidas.

  • Ambígua — a solicitação não está em conformidade com o RFC 7230, mas representa um risco, pois vários servidores Web e proxies podem lidar com isso de forma diferente.

  • Grave — a solicitação representa um alto risco de segurança. O balanceador de carga bloqueia a solicitação, atende uma resposta 400 ao cliente e fecha a conexão do cliente.

Se uma solicitação não estiver em conformidade com o RFC 7230, o balanceador de carga incrementa oDesyncMitigationMode_NonCompliant_Request_CountMétrica do. Para obter mais informações, consulte Métricas Application Load Balancer.

Modes

A tabela a seguir descreve como os Application Load Balancers tratam solicitações com base no modo e na classificação.

Classificação Modo do monitor Modo defensivo Modo mais restrito
Compli Permitido Permitido Permitido
Aceito Permitido Permitido Bloqueado
Ambígua Permitido Permitido¹ Bloqueado
Grave Permitido Bloqueado Bloqueado

¹ Encaminha as solicitações, mas fecha as conexões cliente e destino. Você pode incorrer em cobranças adicionais se o load balancer receber um grande número de solicitações ambíguas no modo Defensivo. Isso ocorre porque o aumento do número de novas conexões por segundo contribui para as unidades de capacidade do Load Balancer (LCU) usadas por hora. Você pode usar oNewConnectionCountpara comparar como o balanceador de carga estabelece novas conexões no modo Monitor e no modo Defensivo.

Para atualizar o modo de mitigação de dessincronização usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, escolha Load balancers.

  3. Selecione o load balancer.

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

  5. para oModo de mitigação do desync, escolhaMonitor,Defensiva, ouMais rigoroso.

  6. Escolha Save (Salvar).

Para atualizar o modo de mitigação de dessincronização usando oAWS CLI

Usar amodify-load-balancer-attributescom o comandorouting.http.desync_mitigation_modeatributo definido comomonitor,defensive, oustrictest.

Application Load Balancers eAWS WAF

Você pode usarAWS WAFCom o Application Load Balancer para permitir ou bloquear solicitações baseadas nas regras de uma lista de controle de acesso (ACL) da web. Para obter mais informações, consulteTrabalhar com web ACLsnoAWS WAFGuia do desenvolvedor.

Para verificar se o load balancer se integra com o AWS WAF, selecione seu load balancer no AWS Management Console e selecione a guia Integrated services (Serviços integrados).

Por padrão, se o load balancer não conseguir obter uma resposta deAWS WAF, ele retorna um erro HTTP 500 e não encaminha a solicitação. Se você precisar que seu load balancer encaminhe solicitações para destinos, mesmo que ele não consiga entrar em contato comAWS WAF, você pode habilitar a opçãoAWS WAFfalha no atributo open.

Para habilitar oAWS WAFfalha ao abrir usando o console

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, em LOAD BALANCING, escolha Load balancers.

  3. Selecione o load balancer.

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

  5. para oAWS WAFfail open, escolhaHabilitar o.

  6. Escolha Save (Salvar).

Para habilitar oAWS WAFfalha ao abrir usando oAWS CLI

Usar amodify-load-balancer-attributescom o comandowaf.fail_open.enabledatributo definido comotrue.