Como o Azure Load Balancer funciona

Concluído

O Azure Load Balancer opera na camada de transporte do modelo OSI. Essa funcionalidade de Camada 4 permite o gerenciamento de tráfego com base em propriedades específicas do tráfego. Propriedades incluindo, endereço de origem e destino, tipo de protocolo TCP ou UDP e número da porta.

O Load Balancer tem vários elementos que funcionam juntos para garantir a alta disponibilidade e o desempenho de um aplicativo:

  • IP de front-end
  • Regras do balanceador de carga
  • Pool de back-end
  • Investigações de integridade
  • Regras NAT de entrada
  • Portas de alta disponibilidade
  • Regras de saída

IP de front-end

O endereço IP de front-end é o endereço que os clientes usam para se conectar ao seu aplicativo Web. Um endereço IP de front-end pode ser público ou privado. Os balanceadores de carga do Azure podem ter vários IPs de front-end. A seleção de um endereço IP público ou privado determina qual tipo de balanceador de carga criar:

  • Endereço IP público: um balanceador de carga público: um balanceador de carga público mapeia o IP público e a porta do tráfego de entrada para o IP privado e a porta da VM. Você pode distribuir tipos específicos de tráfego entre vários serviços ou VMs aplicando regras de balanceamento de carga. Por exemplo, você pode difundir a carga de tráfego de solicitação da web em vários servidores web. O balanceador de carga mapeia o tráfego de resposta do IP privado e da porta da VM para o IP público e a porta do balanceador de carga. Em seguida, ele transmite a resposta de volta para o cliente solicitante.

  • Endereço IP privado: um balanceador de carga interno: um balanceador de carga interno distribui o tráfego para recursos que estão dentro de uma rede virtual. O Azure restringe o acesso aos endereços IP de front-end de uma rede virtual com balanceamento de carga. Os endereços IP de front-end e as redes virtuais nunca são expostos diretamente a um ponto de extremidade da Internet. Os aplicativos de linha de negócios internos são executados no Azure e acessados de dentro do Azure ou de recursos locais por meio de uma conexão VPN ou do ExpressRoute.

    Diagram that depicts how public and internal load balancers work in Azure Load Balancer.

Regras do balanceador de carga

Uma regra do balanceador de carga define como o tráfego é distribuído para o pool de back-end. A regra mapeia determinada combinação de porta e IP de front-end para um conjunto de endereços IP de back-end e combinação de portas.

Diagram that depicts how load balancer rules work in Azure Load Balancer.

O tráfego é gerenciado usando um hash de cinco tuplas composto pelos seguintes elementos:

  • IP de origem: o endereço IP do cliente solicitante.
  • Porta de origem: a porta do cliente solicitante.
  • IP de destino: o IP de destino da solicitação.
  • Porta de destino: a porta de destino da solicitação.
  • Tipo de protocolo: O tipo de protocolo especificado, TCP ou UDP.
  • Afinidade de sessão: Garante que o mesmo nó de pool sempre manipule o tráfego de um cliente.

O Load Balancer permite que você equilibre a carga de serviços em várias portas, vários endereços IP ou ambos. Você pode configurar diferentes regras de balanceamento de carga para cada IP de front-end. Há suporte para várias configurações de front-ends apenas com VMs de IaaS.

O balanceador de carga não pode aplicar regras diferentes com base no conteúdo de tráfego interno porque opera na Camada 4 (camada de transporte) do modelo OSI. Se você precisar gerenciar o tráfego com base em suas propriedades de Camada 7 (camada de aplicativo), precisará implantar uma solução como o Gateway de Aplicativo do Azure.

Pool de back-end

O pool de back-end é um grupo de VMs ou instâncias em um conjunto de dimensionamento de máquinas virtuais que responde à solicitação de entrada. Para dimensionar de maneira econômica para atender a grandes volumes de tráfego de entrada, as diretrizes de computação geralmente recomendam adicionar mais instâncias ao pool de back-end.

O Load Balancer implementa a reconfiguração automática para redistribuir a carga entre o número alterado de instâncias quando você escala ou reduz verticalmente as instâncias. Por exemplo, se você tiver adicionado mais duas instâncias de VMs ao pool de back-end, o Load Balancer reconfigurará a si mesmo para começar a balancear o tráfego para essas instâncias com base nas regras de balanceamento de carga já configuradas.

Investigações de integridade

Uma investigação de integridade é usada para determinar o status de integridade das instâncias no pool de back-end. Essa investigação de integridade determina se uma instância está íntegra e pode receber o tráfego. Você pode definir o limite não íntegro para suas investigações de integridade. Quando uma investigação não responde, o balanceador de carga interrompe o envio de novas conexões para as instâncias não íntegras. Uma falha de investigação não afeta as conexões existentes. A conexão continua até que:

  • O aplicativo encerra o fluxo.
  • O tempo limite ocioso é atingido.
  • A VM é desligada.

O Load Balancer permite que você configure diferentes tipos de investigação de integridade para os pontos de extremidade: TCP, HTTP e HTTPS.

  • Investigação personalizada de TCP: esta investigação depende do estabelecimento de uma sessão de TCP bem-sucedida em uma porta de investigação definida. Se o ouvinte especificado na VM existir, a investigação será bem-sucedida. Se a conexão for recusada, a investigação falhará. Você pode especificar Porta, Intervalo e Limite não íntegro.
  • Investigação personalizada de HTTP ou HTTPS: o balanceador de carga investiga regularmente seu ponto de extremidade (por padrão, a cada 15 segundos). A instância será íntegra se responder com um HTTP 200 dentro do período de tempo limite (padrão de 31 segundos). Qualquer status diferente de HTTP 200 faz com que a investigação falhe. Você pode especificar a porta (Porta), o URI para solicitar o status de integridade do back-end (URI), a quantidade de tempo entre as tentativas de investigação (Intervalo) e o número de falhas que devem ocorrer para que a instância seja considerada não íntegra (Limite não íntegro).

Persistência de sessão

Por padrão, o Load Balancer distribui o tráfego de rede igualmente entre várias instâncias da VM. Ele fornece permanência somente dentro de uma sessão de transporte. A persistência de sessão especifica como o tráfego de um cliente deve ser tratado. O comportamento padrão (Nenhum) é que qualquer VM íntegra pode lidar com solicitações sucessivas de um cliente.

A persistência de sessão também é conhecida como afinidade de sessão, afinidade de IP de origem ou afinidade de IP do cliente. Esse modo de distribuição usa um hash de duas tuplas (IP de origem e IP de destino) ou de três tuplas (IP de origem, IP de destino e tipo de protocolo) para rotear o tráfego para instâncias de back-end. Quando você usa a persistência de sessão, as conexões do mesmo cliente vão para a mesma instância de back-end no pool de back-end. Você pode configurar uma das seguintes opções de persistência de sessão:

  • Nenhum (padrão): especifica que qualquer VM íntegra pode lidar com a solicitação.
  • IP do cliente (2 tuplas): Especifica que a mesma instância de back-end pode lidar com solicitações sucessivas do mesmo endereço IP do cliente.
  • IP e protocolo do cliente (3 tuplas): Especifica que a mesma instância de back-end pode lidar com solicitações sucessivas da mesma combinação de protocolo e endereço IP do cliente.

Você pode alterar esse comportamento configurando uma das opções descritas nas seções a seguir.

Portas de alta disponibilidade

Uma regra de balanceador de carga configurada com é protocol - all and port - 0 chamada de regra de porta de HA (alta disponibilidade). Essa regra permite que uma só regra faça o balanceamento de carga de todos os fluxos TCP e UDP recebidos em todas as portas de um balanceador de carga padrão interno.

A decisão de balanceamento de carga é feita por fluxo. Essa ação se baseia na seguinte conexão de cinco tuplas:

  • Endereço IP de origem
  • Porta de origem
  • Endereço IP de destino
  • Porta de destino
  • Protocolo

As regras de balanceamento de carga de portas de HA o ajudam com cenários críticos, como alta disponibilidade e escala para NVAs (soluções de virtualização de rede) dentro de redes virtuais. O recurso pode ser útil quando um grande número de portas precisa do balanceamento de carga.

Diagram that shows how high availability ports work in Azure Load Balancer.

Regras NAT de entrada

As regras de balanceamento de carga podem ser usadas em combinação com regras NAT (Conversão de Endereços de Rede). Por exemplo, você pode usar o NAT do endereço público do balanceador de carga para TCP 3389 em uma VM específica. Essa combinação de regras permite acesso à área de trabalho remota de fora do Azure.

Diagram that shows how inbound NAT rules work in Azure Load Balancer.

Regras de saída

Uma regra de saída configura a SNAT (Conversão de Endereços de Rede de Origem) para todas as VMs ou instâncias identificadas pelo pool de back-end. Essa regra permite que as instâncias do back-end se comuniquem (saída) com a Internet ou com outros pontos de extremidade públicos.

Diagram that shows how outbound rules work in Azure Load Balancer.