Vários front-ends para o Azure Load Balancer

O Azure Load Balancer permite que você equilibre a carga de serviços em várias portas, vários endereços IP ou ambos. Você pode usar um balanceador de carga público ou interno para balancear o tráfego em um conjunto de serviços, como conjuntos de dimensionamento de máquinas virtuais ou VMs (máquinas virtuais).

Este artigo descreve os conceitos básicos do balanceamento de carga em vários endereços IP usando a mesma porta e protocolo. Se você pretende expor serviços em um endereço IP, encontre instruções simplificadas para configurações do balanceador de carga público ou interno. A adição de vários front-ends é um complemento a uma única configuração de front-end. Com os conceitos deste artigo, você pode expandir uma configuração simplificada quanto quiser.

Quando você define um Azure Load Balancer, uma configuração de pool de front-end e back-end são conectadas à regra de balanceamento de carga. A investigação de integridade referenciada pela regra de balanceamento de carga é usada para determinar a integridade de uma VM em uma determinada porta e protocolo. Com base nos resultados da investigação de integridade, novos fluxos são enviados para VMs no pool de back-end. O front-end é definido usando uma tupla de 3 composta por um endereço IP (público ou interno), um protocolo de transporte (UDP ou TCP) e um número de porta da regra de balanceamento de carga. O pool de back-end é uma coleção de configurações de IP de Máquinas Virtuais (parte do recurso NIC) que referenciam o pool de back-end do Load Balancer.

A tabela a seguir contém alguns exemplos de configurações de front-end:

Front-end Endereço IP protocolo porta
1 65.52.0.1 TCP 80
2 65.52.0.1 TCP 8080
3 65.52.0.1 UDP 80
4 65.52.0.2 TCP 80

A tabela mostra quatro configurações de front-ends diferentes. Os front-ends 1, 2 e 3 usam o mesmo endereço IP, mas a porta ou o protocolo é diferente para cada front-end. Os front-ends 1 e 4 são um exemplo de vários front-ends, onde o mesmo protocolo de front-end e porta são reutilizados em vários IPs de front-end.

O Azure Load Balancer fornece flexibilidade na definição de regras de balanceamento de carga. Uma regra de balanceamento de carga declara como um endereço e porta no front-end são mapeados para o endereço de destino e porta no back-end. A reutilização de portas de back-end nas regras depende do tipo de regra. Cada tipo de regra tem requisitos específicos que podem afetar a configuração do host o design da investigação. Há dois tipos de regras:

  1. A regra padrão sem reutilização de porta de back-end.
  2. A regra de IP Flutuante onde as portas de back-end são reutilizadas.

O Azure Load Balancer permite que você misture os dois tipos de regra na mesma configuração de balanceador de carga. O balanceador de carga pode usá-los simultaneamente para uma determinada VM ou qualquer combinação, se você concordar com as restrições da regra. O tipo de regra que você escolhe depende dos requisitos de seu aplicativo e da complexidade do suporte a essa configuração. Você deve avaliar quais tipos de regras são melhores para seu cenário. Vamos explorar esses cenários ainda mais, começando com o comportamento padrão.

Tipo de regra 1: nenhuma reutilização de porta de back-end

Diagram of Load Balancer traffic with no backend port reuse.

Nesse cenário, os front-ends são configurados da seguinte maneira:

Front-end Endereço IP protocolo porta
green frontend 1 65.52.0.1 TCP 80
purple frontend 2 65.52.0.2 TCP 80

O IP da instância de back-end (BIP) é o endereço IP do serviço de back-end no pool de back-end, cada VM expõe o serviço desejado em uma porta exclusiva no IP da instância de back-end. Esse serviço é associado ao front-end IP (FIP) por meio de uma definição de regra.

Definimos duas regras:

Regra Mapear front-end Para pool de back-end
1 green frontend FIP1:80 green backend BIP1:80, green backend BIP2:80
2 VIP FIP2:80 purple backend BIP1:81, purple backend BIP2:81

O mapeamento completo no Azure Load Balancer agora é o seguinte:

Regra Endereço IP de front-end protocolo porta Destino porta
green rule 1 65.52.0.1 TCP 80 Endereço IP BIP 80
purple rule 2 65.52.0.2 TCP 80 Endereço IP BIP 81

Cada regra deve produzir um fluxo com uma combinação exclusiva de endereço IP de destino e porta de destino. Várias regras de balanceamento de carga podem fornecer fluxos para o mesmo IP da instância de back-end em portas diferentes variando a porta de destino do fluxo.

As investigações de integridade são sempre direcionadas para o IP da instância de back-end de uma VM. É necessário garantir que a investigação reflita a integridade da VM.

Tipo de regra 2: reutilização de porta de back-end usando o IP Flutuante

O Azure Load Balancer oferece a flexibilidade para reutilizar a porta de front-end em várias configurações de front-end. Além disso, alguns cenários de aplicativos preferem ou exigem a utilização da mesma porta por várias instâncias do aplicativo em uma única VM no pool de back-end. Exemplos comuns de reutilização de porta incluem clusters de alta disponibilidade, dispositivos virtuais de rede e exposição de vários pontos de extremidade TLS sem nova criptografia.

Se você quiser reutilizar a porta de back-end em várias regras, habilite o IP Flutuante na definição da regra de balanceamento de carga.

IP flutuante é a terminologia do Azure para uma parte do que é conhecido como DSR (Retorno de Servidor Direto). O DSR é formado por duas partes: uma topologia de fluxo e um esquema de mapeamento de endereço IP. Em um nível de plataforma, o Azure Load Balancer sempre opera em uma topologia de fluxo de DSR, independentemente de o IP Flutuante estar habilitado ou não. Isso significa que a parte de saída de um fluxo é sempre reescrita corretamente para fluir diretamente de volta para a origem.

Com o tipo de regra padrão, o Azure expõe um esquema de mapeamento de endereço IP de balanceamento de carga tradicional para facilitar o uso. A habilitação do IP Flutuante altera o esquema de mapeamento de endereço IP a fim de permitir mais flexibilidade.

Diagram of load balancer traffic for multiple frontend IPs with floating IP.

Para este cenário, todas as VMs no pool de back-end têm três interfaces de rede:

  • IP de back-end: uma NIC Virtual associada à VM (configuração de IP do recurso NIC do Azure).
  • Front-end 1 (FIP1): uma interface de loopback no SO Convidado que está configurado com o endereço IP do FIP1.
  • Front-end 2 (FIP2): uma interface de loopback no SO Convidado que está configurado com o endereço IP do FIP2.

Vamos supor a mesma configuração de front-end que no cenário anterior:

Front-end Endereço IP protocolo porta
green frontend 1 65.52.0.1 TCP 80
purple frontend 2 65.52.0.2 TCP 80

Definimos duas regras de IP flutuantes:

Regra Front-end Mapa para pool de back-end
1 green rule FIP1:80 green backend FIP1:80 (em VM1 e VM2)
2 purple rule FIP2:80 purple backend FIP2:80 (em VM1 e VM2)

A tabela a seguir mostra o mapeamento completo no balanceador de carga:

Regra Endereço IP de front-end protocolo porta Destino porta
green rule 1 65.52.0.1 TCP 80 mesmo que front-end (65.52.0.1) mesmo que front-end (80)
purple rule 2 65.52.0.2 TCP 80 mesmo que front-end (65.52.0.2) mesmo que front-end (80)

O destino do fluxo de entrada agora é o endereço IP de front-end na interface de loopback na VM. Cada regra deve produzir um fluxo com uma combinação exclusiva de endereço IP de destino e porta de destino. A reutilização de porta é possível na mesma VM ao variar o endereço IP de destino para o endereço IP de front-end do fluxo. O serviço é exposto ao balanceador de carga vinculando-o à porta e endereço IP de front-end da respectiva interface de loopback.

Observe que a porta de destino não muda no exemplo. Em cenários de IP flutuante, o Azure Load Balancer também oferece suporte à definição de uma regra de balanceamento de carga para alterar a porta de destino de back-end e diferenciar da porta de destino do front-end.

O tipo de regra de IP Flutuante é a base de vários padrões de configuração do balanceador de carga. Um exemplo que está disponível no momento é a configuração Configurar um ou mais ouvintes do grupo de disponibilidade Always On. Ao longo do tempo, documentaremos mais esses cenários.

Observação

Para obter informações mais detalhadas sobre as configurações específicas do sistema operacional Convidado necessárias para habilitar o IP Flutuante, veja Configuração de IP flutuante do Azure Load Balancer.

Limitações

  • Há suporte para várias configurações de front-end somente com VMs de IaaS e conjuntos de dimensionamento de máquinas virtuais.
  • Com a regra de IP flutuante, seu aplicativo deve usar a configuração de IP primário para fluxos SNAT de saída. Se o seu aplicativo se associar ao endereço IP de front-end configurado na interface de loopback no SO Convidado, o SNAT de saída do Azure não reescreverá o fluxo de saída e o fluxo falhará. Examine os cenários de saída.
  • No momento, não há suporte para o IP flutuante em configurações de IP secundárias.
  • Endereços IP públicos têm um efeito sobre a cobrança. Para saber mais, confira Preços de endereço IP
  • Limites de assinatura são aplicados. Para saber mais, confira Limites de serviço .

Próximas etapas

  • Consulte Conexões de saída para entender o efeito de vários front-ends no comportamento da conexão de saída.