Solucionar problemas Azure Load Balancer
O Azure Load Balancer opera na camada de transporte da pilha de rede. O Load Balancer anuncia um só endereço IP público ao qual todos os clientes se conectam. Em seguida, o Load Balancer as próprias regras de roteamento e de conversão de endereços para direcionar as solicitações TCP de entrada para um entre um conjunto de endereços de saída. Normalmente, cada endereço de saída é associado a uma VM (máquina virtual) diferente, cada uma executando uma instância do seu aplicativo.
O Load Balancer usa uma investigação de integridade para determinar a disponibilidade de cada VM no pool de back-end. O Load Balancer envia apenas solicitações para VMs que indicam que estão íntegras.
No cenário de exemplo, você obteve alertas indicando que o Load Balancer não pode direcionar solicitações para VMs no pool de back-end. Você suspeita de que uma alteração recente na configuração de rede pode estar causando o problema. Mas você precisa entender como as alterações de rede afetam a operação do Load Balancer.
Ao final desta unidade, você será capaz de:
- Descrever uma configuração típica do Load Balancer e os componentes envolvidos nos roteiros de solicitações para VMs.
- Explicar problemas comuns que podem fazer o Load Balancer falhar ao distribuir solicitações para VMs.
Como o Load Balancer funciona?
O Azure Load Balancer inclui muitos componentes:
- Um endereço IP de front-end
- Um pool de back-end de endereços de VM
- Uma ou mais regras de roteamento
- Uma investigação de integridade
- Uma coleção de VMs, normalmente em uma rede virtual
O diagrama a seguir mostra como os vários elementos usados pelo Load Balancer operam juntos.
Endereço IP de front-end e pool de back-end
O Load Balancer fornece uma conexão transparente de ponta a ponta de um cliente para um aplicativo executado em uma coleção de VMs. O Load Balancer armazena os endereços IP dessas VMs em um repositório comumente conhecido como um pool de back-end. O Load Balancer expõe o próprio endereço IP de front-end aos clientes. Quando um cliente envia uma solicitação para esse endereço, o Load Balancer seleciona o endereço IP de uma VM do pool de back-end. O Load Balancer então roteia a solicitação por esse endereço IP de back-end para a VM.
O cliente não está ciente do Load Balancer. O cliente vê um endereço IP ou nome DNS e envia solicitações para esse destino. Esse processo é o mesmo que seria seguido se o cliente estivesse se comunicando diretamente com a VM. Quando a solicitação chega à VM, o endereço do cliente original é preservado.
Além disso, o conteúdo das mensagens enviadas do cliente para a VM é opaco para o Load Balancer. O Load Balancer não examina o conteúdo de nenhuma mensagem nem os manipula. Ele trata as mensagens novamente para que elas sejam enviadas para a VM selecionada.
O Load Balancer seleciona o endereço IP de uma VM do pool de back-end usando um algoritmo projetado para distribuir solicitações de maneira uniforme. O Load Balancer gera um hash usando as seguintes informações:
- IP de origem e endereço da porta do cliente
- Endereço IP e porta de destino
- Protocolo de rede
O valor com hash é usado como uma chave para uma tabela que contém os endereços IP no pool de back-end.
Escalabilidade
Você pode iniciar mais instâncias de VM e adicionar seus endereços IP ao pool de back-end a qualquer momento. O Load Balancer inclui essas novas instâncias quando distribui solicitações do usuário.
O Load Balancer pode expor mais de um endereço IP de front-end público e pode ter vários pools de back-end. Esse esquema permite que você reutilize a mesma instância do Load Balancer para tratar solicitações de sistemas diferentes.
Regras de roteamento
Defina regras de balanceamento de carga para especificar como as solicitações direcionadas para cada endereço IP de front-end são mapeadas para um pool de back-end. Uma regra de balanceamento de carga também especifica o protocolo para correspondência e, opcionalmente, as portas de origem (cliente) e de destino. As solicitações de entrada que chegarem em um endereço IP de front-end que não correspondem aos requisitos de protocolo e porta são descartadas pelo Load Balancer. Uma regra de balanceamento de carga também pode configurar a persistência de sessão para que um determinado cliente possa ter suas solicitações encaminhadas para a mesma VM, permitindo que os aplicativos em execução em uma VM aproveitem o cache para armazenar informações específicas da sessão.
Investigações de integridade
O Load Balancer precisa determinar se cada VM referenciada pelo pool de back-end está disponível para lidar com solicitações. A disponibilidade é determinada pela adição de uma investigação de integridade. Uma investigação de integridade envia mensagens de ping regulares para uma porta que você especifica para as VMs no pool de back-end. Você fornece um serviço nas VMs que responde a essas mensagens de ping, com uma mensagem HTTP 200 (OK).
Quando a VM não responde após um número especificado de tentativas, o Load Balancer pressupõe que ela não está íntegra e a remove da lista de VMs que podem aceitar solicitações de usuário. Em seguida, a carga de trabalho é distribuída entre as VMs íntegras restantes. O Load Balancer continua a executar o ping de uma VM sem resposta. Se a VM começar a responder, ela será adicionada outra vez à lista de VMs íntegras e começará a receber solicitações de usuário novamente.
Se você não fornecer uma investigação de integridade, o Load Balancer não saberá se uma VM está íntegra. Em vez disso, ele presume que todas as VMs estão respondendo.
Rede virtual
As VMs referenciadas pelo pool de back-end são hospedadas em uma sub-rede da Rede Virtual do Azure. Você protege as VMs nessa rede configurando um NSG (grupo de segurança de rede). Um NSG implementa regras de segurança de entrada e saída que podem limitar o tráfego que entra na rede virtual e sai dela para um conjunto de pontos de extremidade bem definidos.
Por exemplo, as VMs no pool de back-end do Load Balancer geralmente permitem o tráfego de entrada na porta 80 (HTTP) e na porta 443 (HTTPS) que chega de fora da rede virtual. Porém, as VMs podem bloquear o tráfego que aparece em outras portas.
Sintomas e causas de falha com o Load Balancer
Surgem problemas quando o Load Balancer perde a conectividade com uma ou mais VMs no pool de back-end. Os sintomas típicos incluem:
- O aplicativo está inacessível.
- As VMs que executam o aplicativo estão inacessíveis.
- Os tempos de resposta são lentos.
- O tempo limite das solicitações do usuário foi atingido.
Pode haver vários motivos para essas falhas. Elas são mais comumente associadas a problemas de investigação e problemas de caminho de dados.
Problemas de investigação
Os problemas de investigação ocorrem quando uma ou mais VMs no pool de back-end falham ao responder às solicitações de investigação de integridade. Esses problemas podem ser o resultado de:
- Uma configuração de investigação incorreta, como URL ou porta errada.
- Uma VM que falha ao responder à investigação porque a porta necessária não está aberta.
Problemas de caminho de dados
Os problemas de caminho de dados ocorrem quando um Load Balancer não é capaz de rotear uma solicitação de cliente para o aplicativo executado em uma VM no pool de back-end. As possíveis causas incluem:
- Uma regra de NSG ou firewall está bloqueando as portas ou os endereços IP usados pelo aplicativo.
- Uma VM está inoperante ou não está respondendo. A VM pode estar desativada ou com falha ou pode haver um problema de segurança, como um certificado expirado no servidor.
- O aplicativo não está respondendo. As VMs podem estar sobrecarregadas, o aplicativo pode estar escutando em uma porta incorreta ou o aplicativo pode estar falhando.