Qual é a diferença entre balanceamento de carga de aplicações, redes e gateways?
Qual é a diferença entre balanceamento de carga de aplicações, redes e gateways?
O Application Load Balancer (ALB), o Network Load Balancer (NLB) e o Gateway Load Balancer (GLB) são três tipos de balanceadores de carga usados na nuvem. O balanceamento de carga é o processo de distribuir o tráfego de rede igualmente em um grupo de recursos que oferecem suporte a uma aplicação. Aplicações modernas processam milhões de usuários simultaneamente. Esses volumes de alto tráfego exigem muitos servidores de recursos com dados duplicados. Para redirecionar o tráfego da aplicação, os ALBs examinam o conteúdo solicitado, como cabeçalhos HTTP ou IDs de sessão SSL. Os NLBs examinam endereços IP e outras informações de rede para redirecionar o tráfego de maneira ideal. Os GLBs atuam como um gateway de rede transparente (um único ponto de entrada e saída para todo o tráfego) e distribuem o tráfego enquanto escalam seus dispositivos virtuais de acordo com a demanda.
Como eles funcionam: ALB vs. NLB vs. GLB
ALBs, NLBs e GLBs fornecem funções diferentes. Por causa disso, eles funcionam de maneiras ligeiramente diferentes e incluem componentes distintos.
Como funciona um Application Load Balancer
Os ALBs distribuem o tráfego de entrada em vários destinos, como instâncias do EC2. Por exemplo, uma aplicação de comércio eletrônico tem um diretório de produtos, um carrinho de compras e funções de checkout. O ALB envia solicitações de produtos de navegação para servidores que contêm imagens e vídeos, mas não precisam manter conexões abertas. Em comparação, ele envia solicitações de carrinho de compras para servidores que mantêm muitas conexões de clientes e salvam dados do carrinho por um longo tempo.
O ALB tem um componente receptor que verifica as solicitações de conexão dos clientes. Você pode definir regras para um receptor que determinam como o balanceador de carga encaminha as solicitações para seus destinos registrados. Um grupo-alvo classifica os alvos registrados em grupos. Você pode definir regras para rotear o tráfego comum para um grupo inteiro. Por exemplo, você pode criar um grupo-alvo para solicitações gerais e outros grupos-alvo para solicitações aos microsserviços da sua aplicação.
O diagrama a seguir mostra como um ALB funciona.
Como funciona um Network Load Balancer
Os NLBs distribuem o tráfego com base nas condições da rede. Por exemplo, se você tiver vários servidores de banco de dados com dados duplicados, o NLB roteia o tráfego com base em endereços IP predeterminados do servidor ou na disponibilidade do servidor.
O NLB monitora a integridade de seus alvos registrados e direciona o tráfego apenas para alvos saudáveis. Depois que o balanceador de carga recebe uma solicitação de conexão, ele seleciona um alvo do grupo de destino para a regra padrão. Ele tenta abrir uma conexão TCP com o destino selecionado na porta especificada na configuração do receptor. Cada conexão TCP individual é roteada para um único destino durante toda a vida útil da conexão. Da mesma forma, você também pode rotear um fluxo UDP de forma consistente para um único destino ao longo de sua vida útil.
Como funciona um Gateway Load Balancer
Com um GLB, você pode implantar, gerenciar e escalar dispositivos virtuais, como detecção e prevenção de intrusões, firewalls e sistemas de inspeção profunda de pacotes. Ele cria um único ponto de entrada e saída para todo o tráfego de dispositivos e dimensiona seus dispositivos virtuais de acordo com a demanda. Você também pode usá-lo para trocar tráfego entre os limites da nuvem privada virtual (VPC).
No GLB, você estabelece regras usando tabelas de rotas. Dependendo das regras que você configurou, ele seleciona diferentes grupos-alvo para os quais encaminhar o tráfego. Ele recebe pacotes IP e encaminha o tráfego para grupos-alvo específicos.
Principais diferenças: ALB vs. NLB vs. GLB
ALBs, NLBs e GLBs operam em diferentes camadas de sua comunicação de rede. Um ALB opera na camada 7 do OSI e permite a manipulação e o roteamento do tráfego no nível da aplicação. Um NLB opera na camada 4 para gerenciamento de tráfego em nível de rede com base em portas e endereços IP. Um GLB funciona nas camadas 3 e 7, fornecendo serviços de balanceamento e roteamento no nível da rede, juntamente com a funcionalidade de gateway.
Aqui estão outras diferenças importantes entre ALBs, NLBs e GLBs.
Tipos de alvo
O tipo de destino é o endpoint para o qual cada um desses balanceadores de carga direciona o tráfego. Um ALB funciona com endereços IP, instâncias e tipos de destino do AWS Lambda. Os NLBs funcionam com IPs e instâncias e também podem rotear o tráfego para um ALB para solicitações mais complexas. Os GLBs funcionam com IPs e tipos de destino de instância.
Leia sobre instâncias na computação em nuvem
Comportamento do proxy
A ação que um balanceador de carga executa ao receber uma solicitação do cliente depende de uma das duas coisas:
- Se o balanceador de carga agir como um proxy e, em seguida, encerrar a conexão do cliente
- Se ele encaminhar a solicitação sem encerrar o fluxo
O encerramento do fluxo permite que os balanceadores de carga executem funções adicionais de gerenciamento de tráfego, como encerramento de SSL, persistência de sessão e roteamento baseado em conteúdo.
Um ALB encerra a conexão do cliente e, em seguida, estabelece uma nova conexão, atuando como um proxy. Um NLB também encerra a conexão do cliente e cria uma nova em nome do cliente. No entanto, um GLB não atua como proxy nem encerra a conexão; ele encaminha o tráfego diretamente.
Protocolos
Esses balanceadores de carga oferecem suporte a diferentes protocolos para lidar com tipos específicos de tráfego e executar funções avançadas. Os ALBs oferecem suporte aos protocolos HTTP, HTTPS e gRPC para tráfego baseado na web. Um NLB oferece suporte aos protocolos TCP, UDP e TLS, que abrangem distribuições de tráfego em nível de rede. Finalmente, um GLB abrange o roteamento baseado em IP, lidando com qualquer protocolo baseado em IP.
algoritmos
Esses balanceadores de carga usam diferentes tipos de algoritmos para distribuir o tráfego uniformemente para seus alvos. Um ALB usa um algoritmo round-robin por padrão, roteando o tráfego um após o outro. No entanto, um NLB usa um algoritmo de hash de fluxo para que o tráfego seja roteado para alvos específicos de uma maneira predeterminada. Um GLB usa pesquisas na tabela de roteamento para determinar para onde rotear o tráfego.
Quando usar: ALB vs. NLB vs. GLB
Um ALB é uma boa opção quando você precisa de roteamento e gerenciamento de tráfego flexíveis em nível de aplicação. É melhor com microsserviços, ambientes conteinerizados e aplicações da Web. Seus atributos, como encerramento de SSL, persistência de sessão e roteamento baseado em conteúdo, permitem que ele ofereça assistência em cenários complexos de roteamento.
Um NLB é ideal para balanceamento escalável em nível de rede de alta performance, baixa latência e escalável. As aplicações que distribuem tráfego na camada de transporte usam NLBs, especialmente considerando sua confiabilidade. Sistemas de jogos, serviços de streaming de mídia e os principais sistemas de IoT usam NLBs.
Um GLB é ideal quando você está se equilibrando no nível do gateway de rede. Por exemplo, um GLB funciona bem se você gerencia o tráfego entre ambientes na nuvem e on-premises ou em diferentes regiões. Como combina o balanceamento das camadas OSI 3 e 4, ele pode rotear o tráfego entre regiões e redes distintas. Como ele suporta roteamento baseado em IP, ele pode distribuir o tráfego entre gateways virtuais, oferecendo alta escalabilidade e disponibilidade.
Resumo das diferenças: ALB vs. NLB vs. GLB
Application Load Balancer (ALB) |
Network Load Balancer (NLB) |
Gateway Load Balancer (GLB) |
|
Camada OSI |
Funciona na camada 7, a camada de aplicação. |
Funciona na camada 4, a camada de transporte. |
Funciona na camada de rede, camada 3 e camada 7. |
Tipos de alvo |
Funciona com tipos de destino IP, instância e lambda. |
Funciona com tipos de destino IP, instância e ALB. |
Funciona com tipos de destino de IP e instância. |
Comportamento do proxy |
Encerra a conexão. |
Encerra a conexão. |
Não encerra o fluxo. |
Protocolos |
Suporta protocolos HTTP, HTTPS e gRPC. |
Suporta protocolos TCP, UDP e TLS. |
Suporta roteamento baseado em IP. |
algoritmos |
Round-robin. |
Hash de fluxo. |
Pesquisa da tabela de roteamento. |
Como a AWS pode ajudar com seus requisitos de balanceamento de carga?
O Elastic Load Balancing (ELB) é um serviço de balanceamento de carga totalmente gerenciado. Ele distribui automaticamente o tráfego de entrada de aplicações para vários destinos e dispositivos virtuais na Amazon Web Services (AWS) e em recursos on-premises. Além disso, ele oferece suporte ao balanceamento de carga entre zonas em todas as regiões da AWS. Você pode usar o ELB para configurar ALB, NLB ou GLB de acordo com seus requisitos.
O ALB é um componente do ELB. O ELB também oferece suporte a NLB, GLB e Classic Load Balancer. Esses balanceadores de carga são pontos de contato do cliente e ajudam a melhorar a escalabilidade das aplicações com gerenciamento seguro. Você pode escolher um ou vários balanceadores de carga e configurá-los ao configurar o ELB para seu ambiente de nuvem.
Comece a usar o balanceamento de carga na AWS criando uma conta hoje mesmo.