Application Load Balancer

Balanceamento de carga de tráfego HTTP e HTTPS com o roteamento avançado de solicitações direcionado à disponibilização de aplicações modernas.

Por que usar o Application Load Balancer?

O Application Load Balancer opera no nível da solicitação (camada 7), roteando o tráfego para destinos como as instâncias do EC2, os contêineres, os endereços IP e as funções do Lambda, com base no conteúdo da solicitação. Ideal para o balanceamento de carga avançado de tráfego HTTP e HTTPS, o Application Load Balancer fornece roteamento avançado de solicitações direcionado à disponibilização de arquiteturas de aplicações modernas, incluindo microsserviços e aplicações baseadas em contêiner. O Application Load Balancer simplifica e aprimora a segurança da aplicação ao garantir que as cifras e os protocolos SSL/TLS mais recentes sejam usados ​​em todos os momentos.

Page Topics

Recursos

Recursos

O TLS mútuo é um protocolo para autenticação bidirecional entre clientes e servidores que usam identidades baseadas em certificados x509. Com esse atributo, o ALB autenticará os certificados do cliente e realizará verificações de revogação de certificados emitidos por Certificate Authorities(CAs – Autoridades de certificação) de terceiros ou Private Certificate Authority (ACM PCA – Autoridade de certificação privada). O balanceador de carga também enviará as informações do certificado do cliente por proxy para os destinos, que podem ser usadas para decisões de autorização pela aplicação. 

As Automatic Target Weights (ATW – Ponderações automáticas de destinos) usam um novo algoritmo de balanceamento de carga aleatório ponderado que melhora a disponibilidade das aplicações mesmo quando os destinos da aplicação estão comprometidos. O algoritmo analisa os códigos de status HTTP e as taxas de erro TCP/TLS para identificar alvos com taxas de erro mais altas do que os pares do mesmo grupo-alvo. Quando o ATW identifica destinos de baixa performance, esse atributo ajusta o volume de tráfego direcionado a cada destino com base na performance, ajudando o destino em dificuldades a se recuperar com êxito.

É possível balancear a carga de tráfego HTTP e HTTPS para destinos, como as instâncias do Amazon EC2, os microsserviços e os contêineres, com base nos atributos da solicitação (como cabeçalhos X-Forwarded-For).

Ao utilizar uma Amazon Virtual Private Cloud (VPC), você pode criar e gerenciar grupos de segurança associados ao Elastic Load Balancing para disponibilizar opções adicionais de rede e segurança. É possível configurar um Application Load Balancer voltado para a Internet ou criar um balanceador de carga sem endereços IP públicos com a finalidade de que ele atue como um balanceador de carga interno (não voltado para a Internet).

O ALB é compatível com a implementação de proteções Desync com base na biblioteca http_desync_guardian. Com esse novo atributo, as aplicações do cliente são protegidas contra vulnerabilidades HTTP devido ao Desync sem comprometer muito a disponibilidade e/ou a latência. Os clientes também têm a possibilidade de escolher o nível de tolerância que desejam para solicitações suspeitas com base na arquitetura da aplicação.

O Application Load Balancer (ALB) oferece suporte ao AWS Outposts, um serviço totalmente gerenciado que amplia a infraestrutura, os serviços e as ferramentas da AWS a praticamente qualquer datacenter, espaço de colocalização ou instalação on-premises para obter uma experiência híbrida verdadeiramente consistente. Os clientes podem provisionar ALBs em tipos de instâncias com suporte e o ALB aumentará a escala verticalmente de forma automática até a capacidade disponível no rack para atender a diversos níveis de carga de aplicações sem a necessidade de intervenção manual. Os clientes também podem receber notificações para ajudá-los a lidar com as necessidades de capacidade relacionadas ao balanceamento de carga. Os clientes podem usar o mesmo Console da AWS, as APIs e a CLI para provisionar e gerenciar ALBs no Outposts de forma semelhante à como fazem com os ALBs na região.

O Application Load Balancer é compatível com a terminação de HTTPS entre os clientes e o load balancer. Os Application Load Balancers também oferecem gerenciamento de certificados SSL por meio do AWS Identity and Access Management (IAM) e do AWS Certificate Manager para políticas de segurança predefinidas.

O HTTP/2 corresponde a uma nova versão do HyperText Transfer Protocol (HTTP) que usa uma única conexão multiplexada para permitir que várias solicitações sejam enviadas na mesma conexão. Ele também compacta os dados do cabeçalho antes de enviá-los em formato binário e oferece suporte a conexões SSL para os clientes.

O ALB pode rotear e balancear a carga de tráfego gRPC entre microsserviços ou entre clientes e serviços habilitados para gRPC. Isso permite a introdução fácil do gerenciamento de tráfego gRPC nas arquiteturas sem alterar nenhuma infraestrutura subjacente nos clientes ou serviços dos clientes. O gRPC usa HTTP/2 para efetuar o transporte e está se tornando o protocolo preferido para comunicações entre serviços em arquiteturas de microsserviços. Ele tem recursos como a serialização binária eficiente e o suporte para vários idiomas, além dos benefícios inerentes ao HTTP/2, como menor presença na rede, compactação e transmissão bidirecional, tornando-o melhor do que protocolos legados, como o REST.

Também é possível criar um receptor HTTPS, que usa conexões criptografadas (também conhecidas como transferências de carga de SSL). Esse recurso possibilita a criptografia de tráfego entre seu balanceador de carga e os clientes que iniciam sessões SSL ou TLS. O Application Load Balancer oferece suporte ao encerramento da sessão TLS do cliente. Isso possibilita que você realize a transferência de carga de TLS para tarefas de encerramento ao balanceador de carga e, ao mesmo tempo, preserve o endereço IP de origem para as aplicações de back-end. Você pode escolher entre políticas de segurança predefinidas para seus listeners TLS, a fim de atender aos padrões de conformidade e segurança. Pode ser usado o AWS Certificate Manager (ACM) ou AWS Identity and Access Management (IAM) para gerenciar os certificados do seu servidor.

Você pode usar a SNI para atender a vários sites seguros por meio de um único listener TLS. Se o nome do host no cliente corresponder a vários certificados, o balanceador de carga selecionará o melhor deles para ser usado com base em um algoritmo de seleção inteligente.

As sessões persistentes são um mecanismo para rotear solicitações do mesmo cliente para o mesmo destino. Os Application Load Balancers oferecem suporte a cookies baseados em duração e a cookies baseados em aplicações. O segredo para gerenciar sessões persistentes é determinar por quanto tempo seu balanceador de carga deverá rotear consistentemente a solicitação do usuário para o mesmo destino. As sessões persistentes são habilitadas no nível do grupo de destino. É possível usar uma combinação de persistência baseada em duração, persistência baseada em aplicações e nenhuma persistência para todos os seus grupos de destino.

Os Application Load Balancers oferecem suporte nativo à versão 6 do Internet Protocol (IPv6) em uma VPC. Dessa forma, os clientes podem se conectar ao Application Load Balancer por meio do IPv4 ou do IPv6.

O Application Load Balancer insere um novo cabeçalho HTTP com um identificador personalizado “X-Amzn-Trace-Id” em todas as solicitações enviadas ao balanceador de carga. O rastreamento de solicitação permite rastrear uma solicitação, ao usar o ID exclusivo, à medida que ela passa pelos diversos serviços que compõem a maior parte do tráfego dos seus sites e das suas aplicações distribuídas. É possível usar o identificador de monitoramento exclusivo para descobrir qualquer problema de desempenho ou atraso na pilha de aplicações com a mesma granularidade de uma solicitação individual.

O Application Load Balancer pode redirecionar uma solicitação recebida de um URL para outro. Isso inclui a capacidade de redirecionar solicitações HTTP para solicitações HTTPS, o que permite cumprir metas de conformidade para a navegação segura e, ao mesmo tempo, alcançar uma melhor classificação de pesquisa e obter uma pontuação mais alta de SSL/TLS para o site. Também é possível usar redirecionamentos para enviar os usuários a um site diferente, como de uma versão antiga de um aplicativo para a nova.

O Application Load Balancer pode controlar quais solicitações de cliente são atendidas pelos aplicativos. Isso permite responder a solicitações recebidas com códigos de erro HTTP e mensagens de erro personalizadas do próprio load balancer, sem enviar a solicitação para o aplicativo.

O WebSockets permite que um servidor troque mensagens em tempo real com usuários finais sem que eles precisem solicitar uma atualização (ou pesquisar por uma) ao servidor. O protocolo WebSockets disponibiliza canais de comunicação bidirecionais entre um cliente e um servidor por meio de uma conexão TCP de longa execução.

O Server Name Indication (SNI – Indicação de nome de servidor) é uma extensão do protocolo TLS quer permite que o cliente indique o nome de host a ser conectado no início do handshake do TLS. O load balancer pode apresentar vários certificados pelo mesmo listener seguro, o que permite oferecer suporte a diversos sites seguros usando um único listener seguro. Os Application Load Balancers também oferecem suporte a um algoritmo inteligente de seleção de certificado com SNI. Se o nome de host indicado por um cliente corresponder a vários certificados, o load balancer determinará o melhor certificado a usar considerando vários fatores, incluindo os recursos do cliente.

É possível balancear a carga de qualquer aplicativo hospedado na AWS ou no local usando os endereços IP dos back-ends do aplicativo como destinos. Isso permite fazer o balanceamento da carga para um back-end de aplicativo hospedado em qualquer endereço IP e em qualquer interface em uma instância. Cada aplicativo hospedado na mesma instância pode ter um grupo de segurança associado e usar a mesma porta. Você também pode usar endereços IP como destinos para efetuar o balanceamento de carga de aplicações hospedadas em locais on-premises (por meio do Direct Connect ou de uma conexão VPN), em VPCs emparelhadas e do EC2-Classic (usando o ClassicLink). A capacidade de balanceamento de carga entre recursos on-premises e da AWS ajuda você a realizar a migração para a nuvem, expandir para a nuvem ou fazer failover para a nuvem.

O Application Load Balancer é compatível com a invocação das funções do Lambda para atender a solicitações HTTP(S), permitindo que os usuários acessem aplicativos sem servidor de qualquer cliente HTTP, incluindo navegadores da Web. Você pode registrar as funções Lambda como destinos para um load balancer e utilizar o suporte a regras de roteamento baseado em conteúdo para rotear solicitações para funções Lambda diferentes. Você pode usar um Application Load Balancer como um endpoint HTTP comum para aplicativos que usam servidores e computação sem servidor. Você pode desenvolver um site completo usando funções do Lambda ou combinar instâncias do EC2, contêineres, servidores on-premises e funções do Lambda para criar aplicações.

Se a aplicação for composta por diversos serviços individuais, um Application Load Balancer poderá rotear uma solicitação para um serviço com base no conteúdo da solicitação, como campo Host, caminho do URL, cabeçalho HTTP, método HTTP, string de consulta ou endereço IP de origem.

Roteamento baseado em host: você pode rotear uma solicitação de cliente com base no campo Host do cabeçalho HTTP. Isso permite o roteamento para diversos domínios do mesmo balanceador de carga.

Roteamento baseado em caminho: você pode rotear uma solicitação de cliente com base no caminho do URL do cabeçalho HTTP.

Roteamento baseado em cabeçalho HTTP: você pode rotear uma solicitação de cliente com base no valor de qualquer cabeçalho HTTP padrão ou personalizado.

Roteamento baseado em método HTTP: você pode rotear uma solicitação de cliente com base em qualquer método HTTP padrão ou personalizado.

Roteamento baseado em parâmetros ou em strings de consulta: você pode rotear uma solicitação de cliente com base em strings de consulta ou em parâmetros de consulta.

Roteamento baseado em CIDR do endereço IP de origem: você pode rotear uma solicitação de cliente com base no CIDR do endereço IP de origem da solicitação.

O Application Load Balancer fornece suporte otimizado a contêineres com o balanceamento de carga para várias portas em uma única instância do Amazon EC2. A integração aprofundada com o Amazon Elastic Container Service (ECS) disponibiliza uma oferta de contêiner totalmente gerenciada. O ECS permite especificar uma porta dinâmica na definição de tarefas do ECS, fornecendo ao contêiner uma porta não utilizada quando ele é programado na instância do EC2. O programador do ECS adiciona automaticamente a tarefa ao balanceador de carga usando esta porta.

Você já pode usar o AWS WAF para proteger aplicativos web em Application Load Balancers. O AWS WAF é um firewall de aplicativos web que ajuda a proteger esses aplicativos contra exploits comuns na web que podem afetar a disponibilidade do aplicativo, comprometer a segurança ou consumir recursos em excesso.

O Application Load Balancer oferece suporte a um algoritmo Round-Robin para balanceamento de carga. Além disso, o Application Load Balancer oferece suporte a um modo de início lento com o algoritmo Round-Robin que permite adicionar novos destinos sem sobrecarregá-los com uma enxurrada de solicitações. Com o modo de início lento, os destinos são ativados antes de aceitarem a parte de solicitações que são cabíveis a eles com base em um período de aumento na quantidade especificado por você. O início lento é muito útil para aplicativos que dependem do cache e precisam de um período de ativação antes de poderem responder a solicitações com a performance ideal.

É possível transferir a carga da funcionalidade de autenticação das aplicações para o Application Load Balancer. O Application Load Balancer autenticará os usuários com segurança à medida que eles acessam as aplicações em nuvem. O Application Load Balancer é perfeitamente integrado ao Amazon Cognito, o que permite que usuários finais façam a autenticação por meio de provedores de identidade social, como Google, Facebook e Amazon, e por meio de provedores de identidade empresarial, como Microsoft Active Directory via SAML ou qualquer provedor de identidade (IdP) em conformidade com o OpenID Connect. Se você já tiver uma solução personalizada de IdP compatível com o OpenID Connect, o Application Load Balancer também poderá autenticar usuários empresariais ao estabelecer conexão diretamente com seu provedor de identidade.