Configuração de IP flutuante do Azure Load Balancer
O balanceador de carga fornece vários recursos para aplicativos UDP e TCP.
IP Flutuante
Alguns cenários de aplicativo preferem ou exigem o uso da mesma porta por várias instâncias de aplicativo em uma única VM no pool de back-end. Exemplos comuns de reutilização de portas incluem clustering para alta disponibilidade, dispositivos virtuais de rede e exposição de vários pontos de extremidade TLS sem recriptografia. Se quiser reutilizar a porta de back-end em várias regras, habilite o IP flutuante na definição da regra. Ativar o IP flutuante permite mais flexibilidade.
Estado do IP flutuante | Resultado |
---|---|
IP flutuante ativado | O Azure altera o mapeamento do endereço IP para o endereço IP Frontend do Balanceador de Carga |
IP flutuante desativado | O Azure expõe o endereço IP das instâncias de VM |
Nos diagramas, você vê como o mapeamento de endereços IP funciona antes e depois de habilitar o IP flutuante:
Você configura o IP flutuante em uma regra de balanceador de carga por meio do portal do Azure, REST API, CLI, PowerShell ou outro cliente. Além da configuração da regra, você também deve configurar o SO convidado da máquina virtual para usar o IP flutuante.
O tipo de regra IP flutuante é a base de vários padrões de configuração do balanceador de carga. Um exemplo atualmente disponível é a configuração Configurar um ou mais ouvintes do grupo de disponibilidade Always On. Com o tempo, documentaremos mais desses cenários.
Configuração do SO convidado IP flutuante
Para funcionar, você configura o SO convidado para que a máquina virtual receba todo o tráfego vinculado ao IP frontend e à porta do balanceador de carga. A configuração da VM requer:
- Adicionando uma interface de rede de loopback
- configurando o loopback com o endereço IP do frontend do balanceador de carga
- garantindo que o sistema possa enviar/receber pacotes em interfaces que não tenham o endereço IP atribuído a essa interface. Os sistemas Windows requerem a configuração de interfaces para utiilizar o modelo de "anfitrião fraco". Para sistemas Linux, este modelo é normalmente utilizado por predefinição.
- configurando o firewall do host para permitir o tráfego na porta IP do frontend.
Nota
Todos os exemplos abaixo usam IPv4; para usar IPv6, substitua "ipv6" por "ipv4".
Windows Server
Expandir
Para cada VM no pool de back-end, execute os seguintes comandos 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 (gerenciada pelo Azure), digite este comando.
netsh interface ipv4 set interface <interfacename> weakhostreceive=enabled
(substitua "interfacename" pelo nome desta interface)
Para cada interface de loopback adicionada, repita estes comandos:
netsh interface ipv4 add addr <loopbackinterfacename> floatingip floatingipnetmask
netsh interface ipv4 set interface <loopbackinterfacename> weakhostreceive=enabled weakhostsend=enabled
(substitua loopbackinterfacename pelo nome dessa interface de loopback e floatingip e floatingipnetmask pelos valores apropriados que correspondem ao IP frontend do balanceador de carga)
Por fim, se o host convidado usar um firewall, verifique se uma regra foi configurada para que o tráfego possa chegar à VM nas portas apropriadas.
Este exemplo de configuração pressupõe uma configuração IP frontend 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
Expandir
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 estes comandos, que atribuem 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 frontend do balanceador de carga)
Por fim, se o host convidado usar um firewall, verifique se uma regra foi configurada para que o tráfego possa chegar à VM nas portas apropriadas.
Este exemplo de configuração pressupõe uma configuração IP frontend do balanceador de carga 1.2.3.4 e uma regra de balanceamento de carga para a porta 80. Este exemplo também assume o uso de UFW (Uncomplicated Firewall) 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 IP primária da interface de rede para saída.
- Se seu aplicativo se ligar 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á. Analise os cenários de saída.
- Não é possível 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 em que a configuração IP secundária é IPv6, uma parte de uma configuração de pilha dupla, ou a arquiteturas que utilizam um gateway NAT para conectividade de saída.
Próximos passos
- Saiba mais sobre como usar vários frontends com o Azure Load Balancer.
- Saiba mais sobre as conexões de saída do Balanceador de Carga do Azure.