PERF05-BP04 Utilizar o balanceamento de carga e o descarregamento da criptografia
Use balanceadores de carga para obter eficiência de desempenho ideal de seus recursos de destino e melhore a capacidade de resposta do seu sistema.
Resultado desejado: reduza o número de recursos de computação para atender o tráfego. Evite o desequilíbrio do consumo de recursos em seus destinos. Descarregue tarefas com uso intenso de computação para o balanceador de carga. Utilize a elasticidade e a flexibilidade da nuvem para melhorar o desempenho e otimizar a arquitetura.
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 para a internet sem um balanceador de carga.
Nível de exposição a riscos quando esta prática recomendada não é estabelecida: alto
Orientações para a implementação
Os balanceadores de carga atuam como ponto de entrada para a workload e, de lá, distribuem o tráfego para seus destinos de back-end, como contêineres ou instâncias de computaçã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).
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 a 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 HTTP2 sem precisar comportá-lo em seus destinos. Essa simples decisão pode melhorar o tempo de resposta da aplicação, já que o HTTP2 usa conexões TCP de forma mais eficiente.
Os balanceadores de carga também podem ser usados para tornar a arquitetura mais flexível distribuindo o tráfego por diferentes tipos de back-end, como contêineres e tecnologia sem servidor. Por exemplo, o Application Load Balancer pode ser configurado com regras de receptor que encaminham o tráfego para diferentes grupos de destino com base nos parâmetros da solicitação, como cabeçalho, método ou padrão.
Os requisitos de latência da workload também 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. Isso melhora a disponibilidade, embora possa adicionar um milissegundo de um dígito à latência de ida e volta.
Por fim, tanto o ALB como o NLB oferecem recursos de monitoramento como logs e métricas. Configurar o monitoramento corretamente pode ajudar a coletar informações de desempenho da aplicação. Por exemplo, é possível usar os logs de acesso do ALB para encontrar quais solicitações estão levando mais tempo para serem atendidas ou quais destinos de back-end estão causando problemas de desempenho.
Etapas da implementação
-
Escolha o balanceador de carga certo para a workload.
-
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 destino do NLB
) se quiser utilizar os recursos dos dois 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 da ALB, ou se quiser expor a workload HTTP em um AWS PrivateLink. -
Para ver uma comparação entre balanceadores de carga, consulte a comparação de produtos do ELB
.
-
-
Use o descarregamento de SSL/TLS.
-
Configure receptores HTTPS/TLS tanto com Application Load Balancer como com Network Load Balancer integrados ao AWS Certificate Manager
. -
Observe que algumas workloads podem exigir criptografia completa por motivos de conformidade. Nesse caso, é um requisito para habilitar a criptografia nos destinos.
-
Para consultar as práticas recomendadas de segurança, consulte SEC09-BP02 Aplicar criptografia a dados em trânsito.
-
-
Escolha o algoritmo de roteamento certo.
-
O algoritmo de roteamento pode fazer a diferença em como os destinos de back-end são bem-utilizados e, portanto, na forma em como afetam o desempenho. Por exemplo, o ALB fornece duas opções para algoritmos de roteamento:
-
Menos solicitações pendentes: 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.
-
Distribuição equilibrada: 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. Ela está desativada por padrão no NLB e no ALB é possível ativá-la por grupo de destino.
-
Ative a opção entre zonas para maior disponibilidade e flexibilidade. Por padrão, a opção entre zonas está ativada para o ALB e no NLB é possível ativá-la por grupo de destino.
-
-
Ative as manutenções de funcionamento de HTTP para as workloads HTTP.
-
Para workloads HTTP, ative a manutenção de funcionamento de HTTP nas configurações do servidor web para os destinos de back-end. 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 de como fazer isso para o Apache e o Nginx, consulte What are the optimal settings for using Apache or NGINX as a backend server for ELB?
(Quais são as configurações ideais para usar o Apache ou o NGINX como um servidor de back-end para o ELB?)
-
-
Use integrações do Elastic Load Balancing para melhor orquestração dos recursos de computação.
-
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 ser integrados ao Amazon ECS e ao Amazon EKS para workloads em contêineres.
-
-
Monitore o balanceador de carga para encontrar gargalos de desempenho.
-
Habilite 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_time
e oresponse_processing_time
. -
Os principais campos a considerar para o NLB são
connection_time
e otls_handshake_time
. -
Esteja pronto para consultar os logs quando precisar deles. É possível usar o Amazon Athena para consultar tanto os logs do ALB como os logs do NLB.
-
Crie alarmes para métricas relacionadas ao desempenho, como
TargetResponseTime
para o ALB.
-
Recursos
Práticas recomendadas relacionadas:
Documentos relacionados:
-
Improving Performance and Reducing Cost Using Availability Zone Affinity
(Melhorar o desempenho e reduzir os custos usando a afinidade de zona de disponibilidade) -
Step by step for Log Analysis with Amazon Athena
(Passo a passo para a análise de logs com o Amazon Athena) -
Monitor your Application Load Balancers (Monitorar os Application Load Balancers)
-
Monitor your Network Load Balancers (Monitorar os Network Load Balancers)
Vídeos relacionados:
-
AWS re:Invent 2018: [REPEAT 1] Elastic Load Balancing: Deep Dive and Best Practices (NET404-R1)
(AWS re:Invent 2018: [REPETIR 1] Elastic Load Balancing: aprofundamento e práticas recomendadas (NET404-R1)) -
AWS re:Invent 2021 - How to choose the right load balancer for your AWS workloads
(AWS re:Invent 2021: como escolher o balanceador de carga certo para suas workloads da AWS) -
AWS re:Inforce 2022 - How to use Elastic Load Balancing to enhance your security posture at scale (NIS203)
(AWS re:Inforce 2022: como usar o Elastic Load Balancing para melhorar seu procedimento de segurança em escala (NIS203)) -
AWS re:Invent 2019: Get the most from Elastic Load Balancing for different workloads (NET407-R2)
(AWS re:Invent 2019: aproveite o Elastic Load Balancing ao máximo para diferentes workloads (NET407-R2))
Exemplos relacionados:
-
CDK and CloudFormation samples for Log Analysis with Amazon Athena
(Amostras do CDK e do CloudFormation para análise de log com o Amazon Athena)