PERF04-BP04 Usar o balanceamento de carga para distribuir o tráfego em vários recursos
Distribua o tráfego entre vários recursos e serviços para permitir que sua workload aproveite a elasticidade que a nuvem oferece. Também é possível usar o balanceamento de carga para descarregar a terminação de criptografia a fim de melhorar a performance, a confiabilidade e gerenciar e rotear o tráfego de maneira eficaz.
Antipadrões comuns:
-
Você não considera os requisitos da workload ao escolher o tipo de balanceador de carga.
-
Você não utiliza os recursos do balanceador de carga para otimização do desempenho.
-
A workload é exposta diretamente à internet sem um balanceador de carga.
-
Você roteia todo o tráfego da Internet por meio de balanceadores de carga existentes.
-
Você usa o balanceamento de carga TCP genérico e faz com que cada nó de computação lide com a criptografia SSL.
Benefícios de estabelecer esta prática recomendada: Um balanceador de carga lida com a carga variável do tráfego da sua aplicação em uma única Zona de Disponibilidade ou em várias Zonas de Disponibilidade e permite alta disponibilidade, ajuste de escala automático e melhor utilização de sua workload.
Nível de risco exposto se esta prática recomendada não for estabelecida: alto
Orientação para implementação
Os balanceadores de carga atuam como o ponto de entrada para sua workload, a partir do qual distribuem o tráfego para seus destinos de back-end, como instâncias de computação ou contêineres, para melhorar a utilização.
Escolher o tipo certo de balanceador de carga é a primeira etapa para otimizar sua arquitetura. Comece listando as características da workload, como protocolo (como TCP, HTTP, TLS ou WebSockets), o tipo de destino (como instâncias, contêineres ou tecnologia sem servidor), requisitos da aplicação (como conexões de execução longa, autenticação de usuários ou adesão) e posicionamento (como região, zona local, Outpost ou isolamento por zona).
A AWS fornece vários modelos para que suas aplicações usem o balanceamento de carga. O Application Load Balancer é o mais adequado para balanceamento de carga de tráfego HTTP e HTTPS, e oferece roteamento avançado de solicitação direcionado para a entrega de arquiteturas de aplicações modernas, inclusive microsserviços e contêineres.
O Network Load Balancer é o mais adequado para o balanceamento de carga de tráfego TCP que exija performance extrema. Ele é capaz de processar milhões de solicitações por segundo enquanto mantém latências ultrabaixas, e também é otimizado para lidar com padrões de tráfego súbitos e voláteis.
O Elastic Load Balancing
Depois de escolher o balanceador de carga certo, você pode começar a utilizar seus recursos para reduzir a quantidade de esforço que seu back-end precisa fazer para atender o tráfego.
Por exemplo, ao usar tanto o Application Load Balancer (ALB) como o Network Load Balancer (NLB), é possível realizar o descarregamento de criptografia SSL/TLS, que é uma oportunidade de evitar que o handshake TLS com uso intenso da CPU seja concluído pelos destinos e também melhorar o gerenciamento de certificados.
Ao configurar o descarregamento de SSL/TLS no balanceador de carga, ele se torna responsável pela criptografia do tráfego de e para os clientes enquanto entrega o tráfego não criptografado aos back-ends, liberando os recursos de back-end e melhorando o tempo de resposta para os clientes.
O Application Load Balancer também pode fornecer tráfego HTTP/2 sem precisar comportá-lo em seus destinos. Essa simples decisão pode melhorar o tempo de resposta da aplicação, já que o HTTP/2 usa conexões TCP de forma mais eficiente.
Os requisitos de latência da workload devem ser considerados ao definir a arquitetura. Como exemplo, se você tiver uma aplicação sensível à latência, poderá decidir usar o Network Load Balancer, que oferece latências extremamente baixas. Como alternativa, você pode decidir aproximar a workload dos clientes utilizando o Application Load Balancer em zonas locais da AWS
Outra consideração para workloads sensíveis à latência é o balanceamento de carga entre zonas. Com o balanceamento de carga entre zonas, cada nó do balanceador de carga distribui o tráfego entre os destinos registrados em todas as Zonas de Disponibilidade habilitadas.
Use o Auto Scaling integrado ao balanceador de carga. Um dos principais aspectos de um sistema com desempenho eficiente está relacionado ao dimensionamento correto dos recursos de back-end. Para fazer isso, é possível utilizar as integrações do balanceador de carga para os recursos de destino de back-end. Ao usar a integração do balanceador de carga com os grupos do Auto Scaling, os destinos serão adicionados ou removidos do balanceador de carga conforme exigido em resposta ao tráfego recebido. Os balanceadores de carga também podem se integrar com o Amazon ECS e o Amazon EKS para workloads em contêineres.
Etapas da implementação
-
Defina seus requisitos de balanceamento de carga, incluindo excelente volume, disponibilidade e escalabilidade de aplicações.
-
Escolha o tipo certo de balanceador de carga para sua aplicação.
-
Use o Application Load Balancer para workloads HTTP/HTTPS.
-
Use o Network Load Balancer para workloads que não são HTTP que executam TCP ou UDP.
-
Use uma combinação de ambos (ALB como alvo do NLB
) se você quiser aproveitar os recursos de ambos os produtos. Por exemplo, é possível fazer isso se você quiser usar os IPs estáticos do NLB junto com o roteamento baseado em cabeçalho HTTP do ALB, ou se quiser expor a workload HTTP em um AWS PrivateLink. -
Para uma comparação completa dos balanceadores de carga, consulte Comparação de produtos do ELB
.
-
-
Use o descarregamento de SSL/TLS, se possível.
-
Configure receptores HTTPS/TLS com o Application Load Balancer e o Network Load Balancer integrados com o AWS Certificate Manager
. -
Observe que algumas workloads podem exigir criptografia completa por motivos de conformidade. Nesse caso, é um requisito para permitir a criptografia nos destinos.
-
Para práticas recomendadas de segurança, consulte SEC09-BP02 Aplicar a criptografia em trânsito.
-
-
Escolha o algoritmo de roteamento certo (apenas ALB).
-
O algoritmo de roteamento pode fazer a diferença em como os destinos de back-end são bem-utilizados e, portanto, na forma como afetam o desempenho. Por exemplo, a ALB fornece duas opções para algoritmos de roteamento:
-
Solicitações menos urgentes: use para obter uma melhor distribuição de carga para seus destinos de back-end em casos nos quais as solicitações para a aplicação variam em complexidade ou os destinos variam na capacidade de processamento.
-
Round robin: use quando as solicitações e os destinos forem semelhantes, ou se você precisar distribuir as solicitações igualmente entre os destinos.
-
-
Considere isolamento por zona ou entre zonas.
-
Desative a opção entre zonas (isolamento por zona) para melhorias de latência e domínios com falha de zona. Ele está desativado por padrão no NLB e no ALB. Você pode desativá-lo por grupo-alvo.
-
Ative a opção entre zonas para maior disponibilidade e flexibilidade. Por padrão, a opção entre zonas está ativada para o ALB. No NLB, você pode ativá-la por grupo-alvo..
-
-
Ative as manutenções de funcionamento de HTTP para as workloads HTTP (apenas ALB). Com esse recurso, o balanceador de carga pode reutilizar as conexões de back-end até expirar o tempo limite da manutenção de funcionamento, melhorando a solicitação HTTP e o tempo de resposta, além de reduzir a utilização de recursos nos destinos de back-end. Para obter detalhes sobre como fazer isso para Apache e Nginx, consulte Quais são as configurações ideais para usar o Apache ou o NGINX como servidor de back-end para o ELB?
-
Ative o monitoramento do balanceador de carga.
-
Ative os logs de acesso para o Application Load Balancer e o Network Load Balancer.
-
Os principais campos a considerar para o ALB são
request_processing_time, orequest_processing_timee oresponse_processing_time. -
Os principais campos a considerar para o NLB são
connection_timee otls_handshake_time. -
Esteja pronto para consultar os logs quando precisar deles. Você pode usar o Amazon Athena para consultar tanto os logs do ALB e os logs do NLB.
-
Crie alarmes para métricas relacionadas ao desempenho, como
TargetResponseTimepara o ALB.
-
Recursos
Documentos relacionados:
Vídeos relacionados:
Exemplos relacionados: