Pesquisar SafeKit

Testando o endereço IP virtual de balanceamento de carga em um cluster farm SafeKit

Este guia descreve como verificar se um SafeKit Farm (módulo Farm, balanceamento de carga em um endereço IP virtual) funciona corretamente em sua rede: distribuição de conexões entre os nós e redirecionamento do IP Virtual (VIP) quando o nó de distribuição para.

1. Princípios-chave

Pré-requisito: todos os nós da Farm devem estar na mesma sub-rede IP de camada 2: uma LAN ou uma VLAN estendida entre locais remotos.

  • O IP Virtual (VIP) é configurado localmente em cada nó da Farm: ele é definido como um alias do endereço IP físico, na placa de rede desse endereço, quando a Farm é iniciada no nó.
  • Um único nó, o servidor de despacho, recebe o tráfego da rede para o IP Virtual (VIP) (configuração vmac_directed, o padrão do SafeKit): seu endereço MAC é o associado ao IP Virtual (VIP) nas tabelas ARP (roteador, gateway, clientes na mesma sub-rede).
  • O filtro do kernel desse nó distribui as conexões TCP entre os nós da Farm, reescrevendo o endereço MAC de destino dos pacotes para o do nó de processamento (o endereço IP de destino permanece o IP Virtual (VIP)). As respostas são enviadas diretamente do nó que processa a conexão para o cliente.
  • A distribuição realizada pelo filtro é determinística : o nó de processamento é calculado a partir da identidade do cliente, de acordo com a regra de balanceamento de carga configurada:
    • no endereço IP do cliente (filter="on_addr"): um determinado cliente é sempre atendido pelo mesmo nó, o que garante a afinidade de sessão;
    • na porta TCP do cliente (filter="on_port"): cada conexão TCP do mesmo cliente pode ser atendida por um nó diferente. Esta é a regra usada para o mosaico (seção 2), que, portanto, mostra todos os nós de uma única estação de trabalho.
  • Se o servidor de despacho parar, outro nó assume essa função e envia GARPs (ARP gratuito) para que a rede associe o IP Virtual (VIP) ao seu próprio endereço MAC.

O que você precisa testar:

  1. que as conexões sejam distribuídas corretamente por todos os nós;
  2. que a rede (roteador, gateway, virtualização) leve em consideração o GARP quando o servidor de despacho for alterado.

2. Pré-requisito: o mosaico do SafeKit

O mosaico é uma página de teste fornecida pelo SafeKit. Ele abre muitas conexões TCP para o IP Virtual (VIP) e exibe, para cada uma, o nome do nó que respondeu. Isso mostra a distribuição rapidamente.

  1. No userconfig.xml do módulo Farm, na seção <vip>, adicione a regra de balanceamento de carga na porta do servidor web SafeKit. Exemplo com o servidor web SafeKit em HTTP na porta 9010:

    <loadbalancing_list>
      <group name="FarmProto">
        <rule port="9010" proto="tcp" filter="on_port"/>
      </group>
    </loadbalancing_list>
    

    Se o servidor web e o console do SafeKit tiverem sido alterados para HTTPS, substitua 9010 por 9453.

  2. Aplique a configuração em todos os nós.

  3. A partir de um navegador em uma estação de trabalho cliente fora da Farm, conecte-se a:

    http://<VIP>:9010/safekit/mosaic.html
    

    em seguida, insira o nome do módulo Farm e execute o teste. Cada célula do mosaico exibe o nome do nó que respondeu à conexão TCP, e uma cor é associada a cada nó para mostrar claramente os blocos do mosaico servidos pelo mesmo nó.

    Em HTTPS, use https://<VIP>:9453/safekit/mosaic.html, com a regra de balanceamento de carga na porta 9453.

Teste o endereço IP virtual de uma farm SafeKit com o mosaico

Assista ao vídeo de teste mosaico na seção " Demonstração da solução farm do SafeKit “.

3. Teste 1 – Distribuição de conexões

Passos

  1. Inicie a Farm em todos os nós (estado UP).
  2. Abra o mosaico a partir de uma estação de trabalho do cliente.

Resultado esperado: o mosaico exibe os nomes de todos os nós da Farm, com uma cor diferente para cada nó de processamento.

Isso prova que o roteador ou gateway a montante atinge um dos nós por meio de seu endereço MAC e que esse nó distribui corretamente as conexões.

4. Teste 2 – Alteração do servidor de despacho

Este teste verifica se o Farm continua respondendo quando o servidor de despacho para.

Passos

  1. Pare a Farm, ou seja, todos os nós no SafeKit.
  2. Inicie um único nó. Este nó se torna o servidor de despacho. → Resultado esperado: o mosaico exibe apenas este nó.
  3. Inicie os outros nós. → Resultado esperado: o mosaico exibe todos os nós.
  4. Pare o primeiro nó, aquele que atua como servidor de despacho. → Resultado esperado: o mosaico exibe os nós restantes.

Limitação deste teste: um resultado correto na etapa 4 não prova que GARP funciona. Quando o módulo Farm é iniciado nos outros nós (etapa 3), o endereço IP virtual é configurado nesses nós, o que gera mensagens na rede que podem redirecionar a associação do endereço IP virtual/endereço MAC. Apenas os testes 3 e 4 realmente testam GARP.

Parar qualquer outro nó da Farm (um que não seja o servidor de despacho) apenas testa a reconfiguração da distribuição.

5. Teste 3 – Verificando o redirecionamento GARP com arp -a

Juntamente com o teste 4, este teste realmente verifica GARP: você anota o endereço MAC do servidor de distribuição antes de pará-lo e, em seguida, verifica se a associação de IP virtual (VIP)/MAC foi alterada depois.

Este teste só é possível se a estação de trabalho do cliente que exibe o mosaico estiver na mesma sub-rede IP que a Farm.

Se houver um roteador entre o cliente e a Farm, a tabela ARP do cliente não conterá o IP Virtual (VIP), mas o endereço do gateway usado para chegar à rede da Farm. Nesse caso, verifique a tabela ARP do roteador ou gateway com a equipe de rede.

Passos

  1. Inicie a Farm em todos os nós.
  2. Na estação de trabalho do cliente, execute arp -a e anote o endereço MAC associado ao IP virtual (VIP). Ele identifica o servidor de despacho.
  3. Pare o nó Farm que tem este endereço MAC.
  4. Verifique se o mosaico ainda funciona com os nós restantes.
  5. Execute arp -a novamente para ler a nova associação de IP virtual (VIP)/MAC e identificar o novo servidor de distribuição.

6. Teste 4 – Verificação de ponta a ponta com Wireshark (Windows) ou tcpdump (Linux)

Você pode seguir uma conexão TCP para o IP virtual (VIP) capturando pacotes no cliente e nos nós Farm: com o Wireshark em máquinas Windows e com o tcpdump em máquinas Linux.

Você deve observar os cabeçalhos MAC (Ethernet) dos pacotes, não apenas os endereços IP: o filtro do kernel do servidor de distribuição distribui as conexões reescrevendo o endereço MAC de destino dos pacotes para o do nó de processamento. O endereço IP de destino permanece o IP Virtual (VIP) ao longo de todo o caminho.

O que você deve observar no mesmo pacote SYN:

PassoOnde capturar pacotesEndereços MAC observados
1. O cliente envia para o IP Virtual (VIP)clienteMAC do cliente → MAC do servidor de despacho
2. O servidor de despacho encaminha a conexãoservidor de despachoMAC do servidor de despacho → MAC do nó de processamento
3. O nó de processamento recebenó de processamentoServidor de despacho MAC → MAC do nó
4. O nó responde diretamente ao clientenó de processamentoMAC do nó → MAC do cliente
5. O cliente recebe a respostaclienteMAC do nó → MAC do cliente

Se a estação de trabalho do cliente estiver em uma sub-rede diferente da Farm, o “MAC do cliente” visto nos nós Farm é o endereço MAC do gateway (roteador) que conecta as duas sub-redes, e não o da estação de trabalho do cliente.

Repita a captura após parar o servidor de despacho (teste 2, etapa 4): a etapa 1 deve agora mostrar o endereço MAC do novo servidor de despacho.

7. De quais estações de trabalho testar

O comportamento depende do caminho da rede entre o cliente e a Farm. Execute os testes 1 e 2 de cada tipo de cliente relevante para sua arquitetura:

Localização do clienteO que o teste verifica
O cliente está na mesma sub-rede que a FarmAtualização das tabelas ARP dos clientes por GARP (3 testes possíveis)
Cliente em uma sub-rede diferente (roteador, gateway, rede virtual do hipervisor)Tratamento GARP pelo roteador ou gateway
Máquina virtual cliente em um hipervisor que também hospeda uma máquina virtual FarmComportamento do switch virtual do hipervisor, que também lida com a comutação e o roteamento internos

8. Resumo dos resultados esperados

TesteAçãoResultado esperado
1Todos os nós UP, mosaicoTodos os nós aparecem
2.2Um único nó foi iniciadoApenas este nó aparece
2.3Todos os nós foram iniciadosTodos os nós aparecem
2.4O servidor de despacho parouOs nós restantes aparecem, sem interrupção duradoura
3arp -a antes e depois da paradaO endereço MAC associado ao IP virtual (VIP) muda
4Captura do Wireshark ou tcpdump antes e depois da paradaO cliente envia para o endereço MAC do novo servidor de despacho

9. Resolução de problemas

Demonstração da solução farm do SafeKit

Vídeo SafeKit: Balanceamento de Carga de Rede e Gerenciamento de IP Virtual (5:03)

Neste vídeo, aprenda a implementar um endereço IP virtual para fornecer um único ponto de entrada para um cluster de 2 nós. O SafeKit simplifica o balanceamento de carga da rede, gerenciando automaticamente o IP virtual, garantindo que o tráfego do cliente seja distribuído entre os nós e redirecionado instantaneamente durante uma falha. Embora esta demonstração use o Apache no Windows, a solução funciona de forma idêntica com outros aplicativos.

Capítulos

  1. 🎬 Arquitetura: Preparando 2 nós para um IP virtual compartilhado (0:13)
  2. 🎬 Configuração: Configurando o módulo farm.safe e o endereço IP virtual (2:20)
  3. 🎬 Validação: Teste de failover e redirecionamento de IP virtual em caso de falha do servidor (2:30)

Implementação passo a passo

Para mais informações:

SafeKit AI Chat SafeKit AI