Compartilhar via


Configuração de IP Flutuante do Azure Load Balancer

O balanceador de carga fornece várias funcionalidades para os aplicativos UDP e TCP.

IP flutuante

Alguns cenários de aplicativos preferem ou exigem o uso 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. Para reutilizar a porta de back-end em diversas regras, habilite o IP flutuante na definição da regra. A habilitação do IP flutuante permite mais flexibilidade.

Status de IP flutuante Resultado
IP flutuante habilidade O Azure altera o mapeamento de endereço IP para o endereço IP de front-end do Balanceador de carga
IP flutuante desabilitado O Azure expõe o endereço IP de instâncias da VM

Nos diagramas, você vê como o mapeamento do endereço IP funciona antes e após a habilitação do IP Flutuante: Este diagrama mostra o tráfego de rede por meio de um balancear de carga antes de habilitar o IP Flutuante.

Este diagrama mostra o tráfego de rede por meio de um balanceador de carga após habilitar o IP Flutuante.

Configure o IP Flutuante em uma regra do Load Balancer por meio do portal do Azure, API REST, CLI, PowerShell ou outro cliente. Além da configuração de regra, você também deve configurar o sistema operacional Convidado da máquina virtual para usar o IP flutuante.

Diagrama do tráfego do balanceador de carga para vários IPs de front-end com IP flutuante.

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
front-end verde 1 65.52.0.1 TCP 80
front-end roxo 2 65.52.0.2 TCP 80

Definimos duas regras de IP flutuantes:

Regra Front-end Mapa para pool de back-end
1 regra verde FIP1:80 back-end verde FIP1:80 (em VM1 e VM2)
2 regra roxa FIP2:80 back-end roxo 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
regra verde 1 65.52.0.1 TCP 80 mesmo que front-end (65.52.0.1) mesmo que front-end (80)
regra roxa 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. Para obter informações mais detalhadas sobre as configurações específicas do SO convidado necessárias para ativar o IP Flutuante, consulte Configuração do IP Flutuante do Azure Load Balancer na próxima seção.

Configuração do sistema operacional de convidado IP flutuante

Para funcionar, configure o Sistema Operacional Convidado para a máquina virtual receber todo o tráfego vinculado ao IP de front-end e à porta do balanceador de carga. A configuração da VM requer:

  • adicionar um adaptador de rede de loopback
  • configurando o loopback com o endereço IP de front-end do balanceador de carga
  • garantir que o sistema possa enviar/receber pacotes em interfaces que não têm o endereço IP atribuído a essa interface. Os sistemas Windows exigem interfaces de configuração para usar o modelo de "host fraco". Para sistemas Linux, esse modelo normalmente é usado por padrão.
  • configurar o firewall do host para permitir o tráfego na porta IP de front-end.

Observação

Os exemplos abaixo usam IPv4; para usar IPv6, substitua "ipv6" por "ipv4".

Windows Server

Expanda

Para cada VM no pool de back-end, execute os comandos a seguir em um prompt de comando do Windows no servidor.

Para obter a lista de nomes de interface que você tem em sua VM, digite este comando:

netsh interface ipv4 show interface 

Para a NIC da VM (gerenciado pelo Azure), digite este comando.

netsh interface ipv4 set interface "interfacename" weakhostreceive=enabled

(substitua "interfacename" pelo nome dessa interface)

Para cada interface de loopback que você adicionou, repita estes comandos:

netsh interface ipv4 add addr floatingipaddress floatingip floatingipnetmask
netsh interface ipv4 set interface floatingipaddress weakhostreceive=enabled  weakhostsend=enabled 

(substitua loopbackinterface pelo nome dessa interface de loopback e floatingip e floatingipnetmask pelos valores apropriados que correspondem ao IP de front-end do balanceador de carga)

Por fim, se o host convidado usar um firewall, certifique-se de configurar uma regra para que o tráfego possa alcançar a VM nas portas apropriadas.

Essa configuração de exemplo assume uma configuração IP de front-end do balanceador de carga de 1.2.3.4 e uma regra de balanceamento de carga para a porta 80:

netsh int ipv4 set int "Ethernet" weakhostreceive=enabled
netsh int ipv4 add addr "Loopback Pseudo-Interface 1" 1.2.3.4 255.255.255.0
netsh int ipv4 set int "Loopback Pseudo-Interface 1" weakhostreceive=enabled weakhostsend=enabled
netsh advfirewall firewall add rule name="http" protocol=TCP localport=80 dir=in action=allow enable=yes

Ubuntu

Expanda

Para cada VM no pool de back-end, execute os seguintes comandos por meio de uma sessão SSH.

Para obter a lista de nomes de interface que você tem em sua VM, digite este comando:

ip addr

Para cada interface de loopback, repita esses comandos, o que atribui o IP flutuante ao alias de loopback:

sudo ip addr add floatingip/floatingipnetmask dev lo:0

(substitua floatingip e floatingipnetmask pelos valores apropriados que correspondem ao IP de front-end do balanceador de carga)

Por fim, se o host convidado usar um firewall, certifique-se de configurar uma regra para que o tráfego possa alcançar a VM nas portas apropriadas.

Essa configuração de exemplo assume uma configuração IP de front-end do balanceador de carga de 1.2.3.4 e uma regra de balanceamento de carga para a porta 80. Este exemplo também pressupõe o uso de UFW (Firewall não compilado) no Ubuntu.

sudo ip addr add 1.2.3.4/24 dev lo:0
sudo ufw allow 80/tcp

Limitações

  • Com o IP Flutuante habilitado em uma regra de balanceamento de carga, seu aplicativo deve usar a configuração de IP primário do adaptador de rede para saída.
  • Se o seu aplicativo se associar ao endereço IP de front-end configurado na interface de loopback no SO convidado, a saída do Azure não reescreverá o fluxo de saída e o fluxo falhará. Examine os cenários de saída.
  • Você não pode usar IP Flutuante em configurações de IP secundárias para cenários de Balanceamento de Carga. Essa limitação não se aplica a balanceadores de carga públicos nos quais a configuração de IP secundária é IPv6, como parte de uma configuração de pilha dupla ou de arquiteturas que utilizam um Gateway da NAT para conectividade de saída.

Próximas etapas