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, consulte Como o Elastic Load Balancing funciona no Manual do usuário do Elastic Load Balancing.
Conteúdo
- Sub-redes para seu balanceador de carga
- Grupos de segurança do balanceador de carga
- Estado do load balancer
- Atributos do load balancer
- Tipo de endereço IP
- Conexões do balanceador de carga
- Balanceamento de carga entre zonas
- AWS WAF
- Nome DNS
- Criar um balanceador de carga
- Atualizar Zonas de disponibilidade
- Atualizar grupos de segurança
- Atualizar o tipo de endereço IP
- Editar atributos do balanceador de carga
- Marcar um balanceador de carga
- Excluir um balanceador de carga
- Exibir o mapa de recursos
- Iniciar uma mudança de zona
Sub-redes para seu balanceador de carga
Ao criar um Application Load Balancer, você deve habilitar as zonas que contêm seus destinos. Para habilitar uma zona, especifique uma sub-rede na zona. O Elastic Load Balancing cria um nó de balanceador de carga em cada zona que você especificar.
Considerações
-
O balanceador de carga será mais eficaz se você garantir que cada zona de disponibilidade habilitada tenha ao menos um destino registrado.
-
Se você registrar destinos em uma zona, mas não habilitá-la, esses destinos registrados não receberão tráfego do balanceador de carga.
-
Se você habilitar várias zonas para seu balanceador de carga, elas precisarão ser do mesmo tipo. Por exemplo, você não pode habilitar uma zona de disponibilidade e uma zona local.
-
Você pode especificar uma sub-rede que tenha sido compartilhada com você.
Os Application Load Balancers são compatíveis com os seguintes tipos de sub-redes.
Sub-redes de zona de disponibilidade
Você deve selecionar ao menos duas sub-redes de zona de disponibilidade. As seguintes restrições são aplicáveis:
-
Cada sub-rede deve estar em uma zona de disponibilidade diferente.
-
Para garantir que o balanceador de carga possa escalar corretamente, verifique se cada sub-rede da zona de disponibilidade do balanceador de carga tem um bloco CIDR com ao menos uma bitmask
/27
(por exemplo,10.0.0.0/27
) e pelo menos oito endereços IP livres por sub-rede. Esses oito endereços IP são necessários para permitir que o balanceador de carga aumente a escala horizontalmente, se for o caso. Seu load balancer usa esses endereços IP para estabelecer conexões com os destinos. Sem eles, seu Application Load Balancer pode ter dificuldades com as tentativas de substituição de nós, fazendo com que ele entre em um estado de falha.Obs.: se uma sub-rede do Application Load Balancer ficar sem endereços IP utilizáveis ao tentar escalar, o Application Load Balancer será executado com capacidade insuficiente. Durante esse período, os nós antigos continuarão a fornecer tráfego, mas a tentativa paralisada de escalonamento poderá causar erros 5xx ou tempos limite ao tentar estabelecer uma conexão.
Sub-redes de zona local
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.
-
Você não pode usar sessões persistentes ou persistência de aplicações.
Sub-redes de Outpost
Você pode especificar uma só sub-rede de Outpost. As seguintes restrições são aplicáveis:
-
Um Outpost deve estar instalado e configurado no data center on-premises. É necessário ter uma conexão de rede confiável entre o Outpost e a região da AWS. Para obter mais informações, consulte o Guia do usuário do AWS Outposts.
-
O balanceador de carga requer duas instâncias
large
no Outpost para os nós do balanceador de carga. Os tipos de instância compatíveis são apresentados na tabela a seguir. O balanceador de carga escala conforme necessário, redimensionando os nós um tamanho por vez (delarge
paraxlarge
, depois dexlarge
para2xlarge
e depois de2xlarge
para4xlarge
). Após escalar os nós para o maior tamanho de instância, se você precisar de capacidade adicional, o balanceador de carga adicionará instâncias4xlarge
como nós do balanceador de carga. Se você não tiver capacidade de instância suficiente ou endereços IP disponíveis para escalar o balanceador de carga, o balanceador de carga relatará um evento para o AWS Health Dashboarde o estado do balanceador de carga será active_impaired
. -
É possível registrar destinos por ID de instância ou por endereço IP. Se você registrar destinos na região da AWS para o Outpost, eles não serão usados.
-
Os seguintes recursos não estão disponíveis: funções do Lambda como destinos, integração com AWS WAF, sessões persistentes, compatibilidade com autenticação e integração com AWS Global Accelerator.
É possível implantar um Application Load Balancer em instâncias c5/c5d, m5/m5d ou r5/r5d em um Outpost. A tabela a seguir mostra o tamanho e o volume do EBS por tipo de instância que o balanceador de carga pode usar em um Outpost:
Tipo e tamanho de instância | Volume do 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 balanceador de carga
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 grupos de segurança que estão associados ao balanceador de carga devem permitir tráfego em ambas as direções tanto no receptor 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 ter 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 balanceador de carga está roteando o tráfego, mas não tem os recursos necessários para escalar.
failed
-
O load balancer não pôde ser configurado.
Atributos do load balancer
Você pode configurar seu Application Load Balancer editando os atributos. Para ter mais informações, consulte Editar atributos do balanceador de carga.
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 ter mais informações, consulte Habilitar logs de acesso.
access_logs.s3.prefix
-
O prefixo para o local no bucket do Amazon S3.
client_keep_alive.seconds
-
O valor da manutenção de atividade do cliente, em segundos. O padrão é 3.600 segundos.
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.
ipv6.deny_all_igw_traffic
-
Bloqueia o acesso do gateway da Internet (IGW) ao balanceador de carga, impedindo o acesso não intencional ao balanceador de carga interno por meio de um gateway da Internet. Ele está configurado como
false
para balanceadores de carga voltados para a Internet etrue
para balanceadores de carga internos. Esse atributo não impede o acesso à Internet não IGW (por exemplo, por meio de emparelhamento, do gateway de trânsito, do AWS Direct Connect ou da AWS VPN). routing.http.desync_mitigation_mode
-
Determina como o balanceador de carga processa solicitações que possam representar risco de segurança para a sua aplicação. Os valores possíveis são
monitor
,defensive
estrictest
. 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 sejam válidos serão removidos pelo balanceador de carga (
true
) ou roteados para destinos (false
). O padrão éfalse
. O Elastic Load Balancing exige que os nomes de cabeçalhos HTTP válidos estejam em conformidade com a expressão regular'[-A-Za-z0-9]+
, conforme descrito no Registro de nomes de campos HTTP. Cada nome consiste em caracteres alfanuméricos ou hifens. Selecionetrue
se quiser que os cabeçalhos HTTP que não estejam em conformidade com esse padrão sejam removidos das solicitações. routing.http.preserve_host_header.enabled
-
Indica se o Application Load Balancer deve preservar o cabeçalho
Host
na solicitação HTTP e enviá-lo para o destino sem nenhuma alteração. Os valores possíveis sãotrue
efalse
. O padrão éfalse
. routing.http.x_amzn_tls_version_and_cipher_suite.enabled
-
Indica se os dois cabeçalhos (
x-amzn-tls-version
ex-amzn-tls-cipher-suite
), que contêm informações sobre a versão negociada do TLS e o conjunto de cifras, serão adicionados à solicitação do cliente antes de enviá-la ao destino. O cabeçalhox-amzn-tls-version
tem informações sobre a versão do protocolo TLS negociada com o cliente e o cabeçalhox-amzn-tls-cipher-suite
tem informações sobre o pacote de criptografia negociado com o cliente. Ambos os cabeçalhos estão no formato OpenSSL. Os valores possíveis para o atributo sãotrue
efalse
. O padrão éfalse
. routing.http.xff_client_port.enabled
-
Indica se o cabeçalho
X-Forwarded-For
deve preservar a porta de origem que o cliente usou para se conectar ao balanceador de carga. Os valores possíveis sãotrue
efalse
. O padrão éfalse
. routing.http.xff_header_processing.mode
-
Permite que você modifique, preserve ou remova o cabeçalho
X-Forward-For
na solicitação HTTP antes que o Application Load Balancer envie a solicitação ao destino. Os valores possíveis sãoappend
,preserve
eremove
. O padrão éappend
.-
Se o valor for
append
, o Application Load Balancer adicionará o endereço IP do cliente (do último salto) ao cabeçalhoX-Forward-For
na solicitação HTTP antes de enviá-la aos destinos. -
Se o valor for
preserve
, o Application Load Balancer deverá preservar o cabeçalhoX-Forward-For
na solicitação HTTP e enviá-lo para o destino sem nenhuma alteração. -
Se o valor for
remove
, o Application Load Balancer removerá o cabeçalhoX-Forward-For
na solicitação HTTP e o enviará para o destino sem nenhuma alteração.
-
routing.http2.enabled
-
Indica se HTTP/2 está habilitado. O padrão é
true
. waf.fail_open.enabled
-
Indica se um balanceador de carga habilitado para AWS WAF pode ou não encaminhar solicitações para destinos se ele não conseguir encaminhar a solicitação para o AWS WAF. Os valores possíveis são
true
efalse
. O padrão éfalse
.
nota
O atributo routing.http.drop_invalid_header_fields.enabled
foi introduzido para oferecer proteção contra a dessincronização HTTP. O atributo routing.http.desync_mitigation_mode
foi adicionado para fornecer uma proteção mais abrangente contra a dessincronização HTTP para suas aplicações. Você não precisa usar os dois atributos e pode escolher qualquer um deles de acordo com os requisitos da sua aplicação.
Tipo de endereço IP
É possível definir os tipos de endereços IP que os clientes podem usar para acessar seus balanceadores de carga internos e voltados para a Internet.
Os Application Load Balancers são compatíveis com os seguintes tipos de endereços 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).
Considerações
-
O balanceador de carga se comunica com os destinos com base no tipo de endereço IP do grupo de destino.
-
Quando você habilita o modo dualstack para o balanceador de carga, o Elastic Load Balancing fornece um registro DNS AAAA para o balanceador de carga. 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 acesso aos balanceadores de carga dualstack internos por meio do gateway da Internet é bloqueado para impedir o acesso não intencional à Internet. No entanto, isso não impede o acesso à Internet que não seja IGW (por exemplo, por meio de emparelhamento, do gateway de trânsito, do AWS Direct Connect ou da AWS VPN).
-
dualstack-without-public-ipv4
-
Os clientes devem se conectar ao balanceador de carga usando endereços IPv6 (por exemplo, 2001:0db8:85a3:0:0:8a2e:0370:7334).
Considerações
-
A autenticação do Application Load Balancer só oferece suporte a IPv4 ao se conectar a um provedor de identidades (IdP) ou endpoint do Amazon Cognito. Sem um endereço IPv4 público, o balanceador de carga não pode concluir o processo de autenticação, resultando em erros HTTP 500.
-
Para obter mais informações sobre endereços IP, consulte Atualizar os tipos de endereço IP para o Application Load Balancer.
Conexões do balanceador de carga
Ao processar uma solicitação, o balanceador de carga mantém duas conexões: uma com o cliente e outra com o destino. A conexão entre o balanceador de carga e o cliente também é chamada de conexão frontend. A conexão entre o balanceador de carga e o destino também é chamada de conexão de backend.
Balanceamento de carga entre zonas
Com os Application Load Balancers, o balanceamento de carga entre zonas é habilitado por padrão e não pode ser alterado por balanceador de carga. Para mais informações, consulte a seção Balanceamento de carga entre zonas no Guia do usuário do Elastic Load Balancing.
É possível desativar o balanceamento de carga entre zonas por grupo de destino. Para ter mais informações, consulte Desativar o balanceamento de carga entre zonas.
Application Load Balancers e AWS WAF
Você pode usar o AWS WAF com seu Application Load Balancer para permitir ou bloquear solicitações com base nas regras de uma lista de controle de acesso da Web (ACL Web). Para obter mais informações, consulte Como trabalhar com ACLs Web no Guia do usuário do AWS WAF.
Por padrão, se o balanceador de carga não conseguir obter uma resposta do AWS WAF, ele retornará um erro HTTP 500 e não encaminhará a solicitação. Se precisar que seu balanceador de carga encaminhe solicitações aos destinos, mesmo que ele não consiga entrar em contato com o AWS WAF, você poderá habilitar a falha de abertura do AWS WAF. 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).
ACLs da Web predefinidas
Ao habilitar a integração do AWS WAF, você pode optar por criar automaticamente uma ACL da Web com regras predefinidas. A ACL da Web predefinida inclui três regras gerenciadas pela AWS que oferecem proteções contra as ameaças de segurança mais comuns.
-
AWSManagedRulesAmazonIpReputationList
: o grupo de regras da lista de reputação de IP da Amazon bloqueia endereços IP normalmente associados a bots ou outras ameaças. Para obter mais informações, consulte o grupo de regras gerenciadas da lista de reputação de IP da Amazon no Guia do desenvolvedor do AWS WAF. -
AWSManagedRulesCommonRuleSet
: O grupo de regras do conjunto de regras principais (CRS) fornece proteção contra a exploração de uma ampla gama de vulnerabilidades, incluindo algumas das vulnerabilidades comuns e de alto risco descritas em publicações do OWASP, como OWASP Top 10. Para obter mais informações, consulte Core rule set (CRS) managed rule group no Guia do desenvolvedor do AWS WAF. -
AWSManagedRulesKnownBadInputsRuleSet
: o grupo de regras de entradas nocivas conhecidas bloqueia padrões de solicitação conhecidos como inválidos e associados à exploração ou à descoberta de vulnerabilidades. Para obter mais informações, consulte Known bad inputs managed rule group no Guia do desenvolvedor do AWS WAF.
Como habilitar o AWS WAF usando o console
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/
. -
No painel de navegação, selecione Balanceador de carga.
-
Selecione o load balancer.
-
Na guia Integrações, expanda AWS Web Application Firewall (WAF) e escolha Associar uma ACL da Web do WAF.
-
Em ACL da Web, escolha Criar automaticamente ACL da Web predefinida ou selecione uma ACL da Web existente.
-
Em Ação de regra, escolha Bloquear ou Contar.
-
Selecione a opção Confirmar.
Para habilitar a falha na abertura do AWS WAF usando a AWS CLI
Use o comando modify-load-balancer-attributes com o atributo waf.fail_open.enabled
definido como true
.
Nome DNS
Cada Application Load Balancer recebe um nome padrão do Sistema de Nomes de Domínio (DNS) com a seguinte sintaxe: name
-id
.elb.region
.amazonaws.com. Por exemplo, my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com.
Se preferir usar um nome DNS que seja mais fácil de lembrar, é possível criar um nome de domínio personalizado e associá-lo ao nome DNS do Application Load Balancer. Quando um cliente faz uma solicitação usando esse nome de domínio personalizado, o servidor de DNS a resolverá para o nome DNS do Application Load Balancer.
Primeiro, registre um nome de domínio com um registrador de nomes de domínio credenciado. Em seguida, use o serviço de DNS, como o registrador de domínios, para criar um registro de DNS e rotear solicitações ao Application Load Balancer. Para obter mais informações, consulte a documentação do serviço DNS. Por exemplo, se você usar o Amazon Route 53 como serviço de DNS, criará um registro de alias que apontará para o Application Load Balancer. Para obter mais informações, consulte Rotear tráfego para um balanceador de carga ELB no Guia do desenvolvedor do Amazon Route 53.
O Application Load Balancer tem um endereço IP por zona de disponibilidade habilitada. Esses são os endereços IP dos nós do Application Load Balancer. O nome DNS do Application Load Balancer resulta nesses endereços. Por exemplo, vamos supor que o nome de domínio personalizado do Application Load Balancer seja example.applicationloadbalancer.com
. Use o comando dig ou nslookup a seguir para determinar os endereços IP dos nós do Application Load Balancer.
Linux ou Mac
$
dig +short
example.applicationloadbalancer.com
Windows
C:\>
nslookup
example.applicationloadbalancer.com
O Application Load Balancer tem registros DNS para os nós. É possível usar nomes DNS com a seguinte sintaxe para determinar os endereços IP dos nós do Application Load Balancer: az
.name
-id
.elb.region
.amazonaws.com.
Linux ou Mac
$
dig +short
us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com
Windows
C:\>
nslookup
us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com