O Application Load Balancer (ALB) oferece suporte ao balanceamento de carga entre zonas para evitar gargalos de recursos em uma única zona de disponibilidade. No entanto, em cenários sensíveis à latência, como negociações financeiras quantitativas e comunicações em tempo real, esse recurso pode introduzir latência adicional. Você pode desativar o balanceamento de carga entre zonas para garantir que o ALB distribua tráfego apenas para servidores backend na mesma zona de disponibilidade. Essa abordagem evita a transferência de dados entre zonas, reduzindo a latência e melhorando a capacidade de resposta da aplicação.
Como funciona
Por padrão, as instâncias do ALB utilizam o balanceamento de carga entre zonas. O ALB distribui as solicitações recebidas para serviços backend implantados em todas as zonas selecionadas na região especificada. Ao desativar esse recurso para um grupo de servidores, o ALB balanceia as cargas dentro de cada zona individualmente.
Antes de desativar o balanceamento de carga entre zonas, verifique se cada zona de disponibilidade utilizada pela instância do ALB possui recursos de servidor backend suficientes para evitar interrupções no serviço.
Recurso principal
Redução de latência: a distribuição de tráfego na mesma zona de disponibilidade reduz a latência de transferência de dados entre zonas e melhora a velocidade de resposta da aplicação.
Casos de uso
Esse recurso é ideal para cenários de baixa latência:
-
Negociações financeiras: em negociações quantitativas de alta frequência, a baixa latência permite o processamento rápido de transações e reduz o risco de falhas ou timeouts.
-
Comunicações em tempo real: em aplicações como videoconferência e mensagens instantâneas, a baixa latência garante uma experiência fluida para o usuário.
-
Internet das Coisas (IoT): em cenários como coleta de dados em tempo real, a baixa latência garante análise e resposta oportunas, melhorando a eficiência e a precisão geral do sistema.
Limitações
-
Apenas instâncias do ALB dos tipos Standard e com WAF habilitado permitem desativar o balanceamento de carga entre zonas. Esse recurso não está disponível para instâncias básicas do ALB.
-
Com o balanceamento de carga entre zonas desativado, não é possível ativar a persistência de sessão.
-
Não é possível desativar o balanceamento de carga entre zonas para grupos de servidores baseados em IP que possuem Remote IP ativado.
-
Essa configuração não se aplica a grupos de servidores do tipo Function Compute.
Cenário de exemplo
Uma empresa possui uma aplicação de alta disponibilidade implantada na região China (Hangzhou) com o balanceamento de carga entre zonas ativado por padrão. Devido a uma mudança nos requisitos de negócio, a aplicação agora exige menor latência.
Para atender a esse novo requisito, a empresa desativa o balanceamento de carga entre zonas. Essa configuração faz com que a instância do ALB roteie tráfego apenas para servidores backend na mesma zona de disponibilidade, reduzindo a latência e melhorando a velocidade da aplicação.
Pré-requisitos
-
Você criou uma instância do ALB Standard na região China (Hangzhou) e selecionou várias zonas de disponibilidade durante a criação, por exemplo, Zone H e Zone K. Para mais informações, consulte Criar e gerenciar uma instância do ALB.
-
Você adicionou as instâncias ECS ECS01 e ECS02 ao grupo de servidores. A ECS01 está na Zona de Disponibilidade H e a ECS02 está na Zona de Disponibilidade K, e um serviço de aplicação está implantado em ambas as instâncias.
-
Você configurou listeners para a instância e associou o grupo de servidores criado. Para mais informações, consulte Adicionar um listener HTTP, Adicionar um listener HTTPS ou Adicionar um listener QUIC.
-
Você registrou um nome de domínio, concluiu o registro ICP e configurou um registro CNAME para que o nome de domínio aponte para a instância do ALB.
Procedimento
Etapa 1: Desativar o balanceamento de carga entre zonas
Este tópico demonstra como desativar o balanceamento de carga entre zonas para um grupo de servidores existente. Você também pode desativar esse recurso durante a criação do grupo de servidores.
-
Na página Server Groups, localize o grupo de servidores de destino e clique no ID dele.
-
Na página Details, na seção Basic Information, clique em Modify Basic Information.
-
Na caixa de diálogo Modify Basic Information, clique em Advanced Settings, desative a opção Cross-zone Load Balancing e clique em Save.
(Opcional) Etapa 2: Verificar o roteamento de tráfego
Essa verificação é apenas para demonstração. Em produção, acesse o serviço pelo nome de domínio e teste a latência conforme descrito na Etapa 3.
Na página Instance Details da instância de destino, na seção Zone, copie os endereços IP elásticos (EIPs) da Zone H e da Zone K.
-
Use um navegador para acessar o EIP da Zona de Disponibilidade H, por exemplo,
http://<elastic IP address>. Atualize o navegador várias vezes. Você só conseguirá acessar o servidor backend ECS01 na Zona de Disponibilidade H.A página exibe
Hello World ! This is ECS01. -
Use um navegador para acessar o EIP da Zona de Disponibilidade K, por exemplo,
http://<elastic IP address>. Atualize o navegador várias vezes. Você só conseguirá acessar o servidor backend ECS02 na Zona de Disponibilidade K.Hello World ! This is ECS02.
Etapa 3: Testar a latência
Os resultados dos testes podem variar conforme a região e as zonas de disponibilidade. Os resultados a seguir são apenas para fins de demonstração. Seus resultados reais podem variar.
-
Crie uma instância ECS voltada para a internet (ECS03) na região Alemanha (Frankfurt) para usar como cliente de teste. Se você já tiver um servidor de teste, pule esta etapa.
-
Faça logon no cliente de teste (ECS03) e execute o comando a seguir para testar a latência.
curl http://www.example.com -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n"Descrição dos parâmetros:
-
time_connect: O tempo de conexão. Tempo, em segundos, desde o início da solicitação até o estabelecimento da conexão TCP.
-
time_starttransfer: O tempo até o primeiro byte (TTFB). Tempo, em segundos, desde o envio da solicitação pelo cliente até o recebimento do primeiro byte de resposta do servidor backend.
-
time_total: O tempo total. É o tempo, em segundos, desde o envio da solicitação pelo cliente até a conclusão da resposta pelo servidor backend.
Tempo de resposta com o balanceamento de carga entre zonas ativado:
[ecs-assist-user@xxx ~]$ curl http://xxx -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" Hello World ! This is ECS02. time_connect: 0.170654 time_starttransfer: 0.347200 time_total: 0.347234 [ecs-assist-user@xxx ~]$ curl http://xxx -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" Hello World ! This is ECS01. time_connect: 0.178056 time_starttransfer: 0.357358 time_total: 0.357397Tempo de resposta com o balanceamento de carga entre zonas desativado:
[ecs-assist-user@xxx ~]$ curl http://xxx -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" Hello World ! This is ECS01. time_connect: 0.152544 time_starttransfer: 0.307768 time_total: 0.307797Os resultados do teste mostram que a desativação do balanceamento de carga entre zonas reduz o tempo de conexão, o TTFB e o tempo total.
-
Perguntas frequentes
Por que erros 503 são retornados?
Esse erro ocorre quando a zona de disponibilidade que recebe uma solicitação não possui servidores backend disponíveis no grupo de servidores associado. Como o ALB não consegue encaminhar a solicitação, a instância retorna um erro 503.
Por que a persistência de sessão não é compatível?
A persistência de sessão exige o roteamento de solicitações entre zonas de disponibilidade, por exemplo, da zona A para um servidor específico na zona B. A desativação do balanceamento de carga entre zonas impede esse roteamento, tornando os dois recursos incompatíveis.
Qual é o status de integridade dos servidores entre zonas?
Com o balanceamento de carga entre zonas desativado, o ALB realiza verificações de integridade apenas na mesma zona de disponibilidade. Um servidor backend em uma zona de disponibilidade diferente terá o status de verificação de integridade como Unused.
Referências
-
Para informações sobre as regiões e zonas compatíveis com o ALB, consulte Regiões e zonas.
-
Se encontrar problemas durante a configuração, consulte Perguntas frequentes sobre o ALB.
-
Se encontrar problemas de verificação de integridade, consulte Solucionar problemas de verificação de integridade do ALB.
-
CreateServerGroup: criar um grupo de servidores.
-
UpdateServerGroupServersAttribute: atualizar configurações de servidores backend.
-
ListServerGroups: consultar grupos de servidores.
-
GetListenerHealthStatus: consultar o status de verificação de integridade.