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:
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.
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 |
---|---|---|---|
1 | 65.52.0.1 | TCP | 80 |
2 | 65.52.0.2 | TCP | 80 |
Definimos duas regras de IP flutuantes:
Regra | Front-end | Mapa para pool de back-end |
---|---|---|
1 | FIP1:80 | FIP1:80 (em VM1 e VM2) |
2 | FIP2:80 | 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 |
---|---|---|---|---|---|
1 | 65.52.0.1 | TCP | 80 | mesmo que front-end (65.52.0.1) | mesmo que front-end (80) |
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
- Saiba mais sobre como usar vários front-ends com o Azure Load Balancer.
- Aprenda sobre Conexões de saída do Azure Load Balancer.