Resolução de problemas com o Balanceador de Carga do Azure

Concluído

O Balanceador de Carga do Azure funciona na camada de transporte da pilha da rede. O Balanceador de Carga anuncia um único endereço IP público ao qual todos os clientes se podem ligar. Em seguida, o Balanceador de Carga utiliza as próprias regras de encaminhamento e de tradução de endereços para direcionar os pedidos TCP recebidos para um conjunto de endereços de saída. Normalmente, cada endereço de saída é associado a uma máquina virtual (VM) diferente. Cada VM executa uma instância da sua aplicação.

O Load Balancer usa uma sonda de integridade para determinar a disponibilidade de cada VM no pool de back-end. O Balanceador de Carga só envia pedidos para as VMs em bom estado de funcionamento.

No cenário de exemplo, recebeu alertas a indicar que o Balanceador de Carga não consegue direcionar pedidos para as VMs no conjunto de back-end. Suspeita que o problema pode ter sido causado por uma alteração recente na configuração da rede. No entanto, tem de compreender como as alterações na rede afetam o funcionamento do Balanceador de Carga.

Ao final desta unidade, você é capaz de:

  • Descrever uma configuração normal do Balanceador de Carga, bem como os componentes envolvidos no encaminhamento de pedidos para as VMs.
  • Explicar problemas comuns que podem causar a ocorrência de falhas na distribuição de pedidos do Balanceador de Carga para as VMs.

Como funciona o Balanceador de Carga?

O Azure Load Balancer inclui muitos componentes:

  • Um endereço IP de front-end
  • Um conjunto de back-end de endereços de VM
  • Uma ou várias regras de encaminhamento
  • Uma sonda de estado de funcionamento
  • Uma coleção de VMs, normalmente numa rede virtual

O diagrama a seguir mostra como os vários elementos usados pelo Load Balancer operam juntos.

Diagrama que mostra os componentes do Azure Load Balancer.

Endereço IP de front-end e conjunto de back-end

O Balanceador de Carga fornece uma ligação ponto a ponto transparente de um cliente para uma aplicação que é executada numa coleção de VMs. O Balanceador de Carga armazena os endereços IP dessas VMs num repositório denominado conjunto de back-end. O Balanceador de Carga expõe o próprio endereço IP de front-end aos clientes. Quando um cliente envia um pedido para este endereço, o Balanceador de Carga seleciona o endereço IP de uma VM a partir de um conjunto de back-end. Em seguida, o Balanceador de Carga encaminha o pedido através do endereço IP de back-end para a VM.

O cliente não dá pelo Balanceador de Carga. O cliente vê um endereço IP ou um nome DNS e envia pedidos para este destino. Este processo funciona da mesma forma do que a comunicação direta do cliente com a VM. Quando o pedido chega à VM, o endereço do cliente original é preservado.

Além disso, o payload de mensagens enviadas do cliente para a VM é opaco para o Balanceador de Carga. O Balanceador de Carga não analisa os conteúdos das mensagens nem os manipula. Em vez disso, reencaminha as mensagens para a VM selecionada.

O Balanceador de Carga seleciona o endereço IP de uma VM a partir do conjunto de back-end através de um algoritmo concebido para distribuir pedidos uniformemente. O Balanceador de Carga gera um código hash ao utilizar as seguintes informações:

  • Endereço IP de origem e endereço de porta do cliente
  • Endereço IP e porta de destino
  • Protocolo de rede

O valor codificado em hash é utilizado como chave de uma tabela que contém os endereços IP no conjunto 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 Balanceador de Carga inclui estas novas instâncias quando distribui os pedidos de utilizador.

O Balanceador de Carga pode expor vários endereços IP públicos de front-end e ter múltiplos conjuntos de back-end. Este esquema permite-lhe reutilizar a mesma instância do Balanceador de Carga para processar pedidos de vários sistemas.

Regras de encaminhamento

Pode definir regras de balanceamento de carga para especificar como os pedidos direcionados para cada endereço IP de front-end são mapeados ao conjunto de back-end. Uma regra de balanceamento de carga também especifica o protocolo de correspondência e, opcionalmente, as portas de origem (cliente) e de destino. Os pedidos recebidos num endereço IP de front-end que não correspondem ao protocolo e aos requisitos de portas são eliminados pelo Balanceador de Carga. Uma regra de balanceamento de carga também pode configurar a persistência da sessão para que um determinado cliente provavelmente tenha suas solicitações roteadas 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.

Sondas do estado de funcionamento

O Balanceador de Carga tem de determinar se cada VM referenciada pelo conjunto de back-end está disponível para processar pedidos. A disponibilidade é determinada pela adição de uma sonda de integridade. Uma sonda de estado de funcionamento envia mensagens ping normais para uma porta especificada por si para as VMS no conjunto 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 Balanceador de Carga assume que não está íntegra e a remove da lista de VMs que podem aceitar solicitações do usuário. Em seguida, a carga de trabalho é distribuída pelas restantes VMs em bom estado de funcionamento. O Balanceador de Carga continua a enviar mensagens ping para a VM sem resposta. Se a VM começar a responder, ela será adicionada novamente à lista de VMs íntegras e começará a receber solicitações de usuário novamente.

Se não fornecer uma sonda de estado de funcionamento, o Balanceador de Carga não saberá se as VMs estão em bom estado de funcionamento. Em vez disso, assume que todas as VMs estão responsivas.

Rede virtual

As VMs referenciadas pelo pool de back-end são hospedadas em uma sub-rede da Rede Virtual do Azure. Pode proteger as VMs nesta rede ao configurar um grupo de segurança de rede (NSG). Um NSG implementa regras de segurança de saída e entrada que limitam o tráfego da rede virtual a um conjunto de pontos finais bem definidos.

Por exemplo, as VMs no conjunto de back-end do Balanceador de Carga, por norma, permitem o tráfego de entrada na porta 80 (HTTP) e na porta 443 (HTTPS) que vem de fora da rede virtual. No entanto, as VMs podem bloquear o tráfego noutras portas.

Sintomas e causas de falhas do Balanceador de Carga

Surgem problemas quando o Balanceador de Carga perde a conectividade com uma ou várias VMs no conjunto de back-end. Os sintomas mais comuns incluem:

  • A aplicação fica inacessível.
  • As VMs que executam a aplicação ficam inacessíveis.
  • Os tempos de resposta são lentos.
  • Os pedidos de utilizador estão a exceder o limite de tempo.

Pode haver muitas razões para estas falhas. Estas falhas estão mais associadas a problemas com a sonda e o caminho de dados.

Problemas com a sonda

Os problemas com a sonda surgem quando uma ou várias VMs no conjunto de back-end não respondem aos pedidos de sonda de estado de funcionamento. Esses problemas podem ser o resultado de:

  • Uma configuração incorreta da sonda, com uma porta ou um URL errado.
  • Se a porta necessária não estiver aberta, a VM não responde à sonda.

Problemas com o caminho de dados

Os problemas com o caminho de dados ocorrem quando um Balanceador de Carga não consegue encaminhar um pedido de cliente para a aplicação executada numa VM no conjunto de back-end. As causas possíveis incluem:

  • Uma regra NSG ou firewall está bloqueando as portas ou endereços IP usados pelo aplicativo.
  • A VM foi abaixo ou não responde. A VM pode estar desativada ou ter uma falha. Em alternativa, pode ter ocorrido um problema de segurança, como um certificado expirado no servidor.
  • A aplicação não responde. As VMs podem estar sobrecarregadas, a aplicação está a funcionar numa entrada incorreta ou a aplicação está a ter uma falha.