Pesquisar SafeKit

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

Este guia descreve como verificar se uma SafeKit Farm (módulo Farm, balanceamento de carga num endereço IP virtual) funciona corretamente na sua rede: distribuição de ligaçõ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: é 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 distribuição, recebe o tráfego de rede para o IP Virtual (VIP) (configuração vmac_directed, o padrão do SafeKit): o seu endereço MAC é o associado ao IP Virtual (VIP) nas tabelas ARP (router, gateway, clientes na mesma sub-rede).
  • O filtro do kernel deste nó distribui então as ligações TCP pelos 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 ligaçã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 servido pelo mesmo nó, o que garante a afinidade de sessão;
    • na porta TCP do cliente (filter="on_port"): cada ligação TCP do mesmo cliente pode ser servida por um nó diferente. Esta é a regra utilizada para o mosaico (secçã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 precisa, portanto, de testar:

  1. que as ligações estão corretamente distribuídas por todos os nós;
  2. que a rede (router, gateway, virtualização) leva em consideração o GARP quando o servidor de distribuição muda.

2. Pré-requisito: o mosaico do SafeKit

O mosaico é uma página de teste fornecida pelo SafeKit. Abre muitas ligações TCP para o IP Virtual (VIP) e exibe, para cada uma, o nome do nó que respondeu. Isto mostra a distribuição de um relance.

  1. No userconfig.xml do módulo Farm, na secçã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 a consola do SafeKit tiverem sido configurados para HTTPS, substitua 9010 por 9453.

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

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

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

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

    Em HTTPS, utilize 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 secção " Demonstração da solução farm do SafeKit “.

3. Teste 1 – Distribuição das ligaçõ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.

Isto prova que o router ou gateway a montante alcança um dos nós através do seu endereço MAC, e que este nó distribui corretamente as ligações.

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

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

Passos

  1. Parar a Farm, ou seja, todos os nós no SafeKit.
  2. Inicie um único nó. Este nó torna-se o servidor de distribuição. → 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 distribuição. → 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 já redirecionar a associação do endereço IP virtual/endereço MAC. Apenas os testes 3 e 4 testam realmente 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 – Verificação do redirecionamento GARP com arp -a

Juntamente com o teste 4, este teste verifica realmente GARP: anote o endereço MAC do servidor de distribuição antes de o parar e, em seguida, verifique se a associação de IP Virtual (VIP)/MAC mudou 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 existir um router entre o cliente e a Farm, a tabela ARP do cliente não contém o IP Virtual (VIP), mas sim o endereço do gateway utilizado para aceder à rede da Farm. Nesse caso, verifique a tabela ARP do router ou gateway com a equipa 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). Este identifica o servidor de distribuição.
  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 completa com Wireshark (Windows) ou tcpdump (Linux)

É possível seguir uma ligaçã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.

É preciso analisar os cabeçalhos MAC (Ethernet) dos pacotes, e não apenas os endereços IP: o filtro do kernel do servidor de distribuição distribui as ligaçõ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 percurso.

O que 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 distribuição
2. O servidor de encaminhamento reencaminha a ligaçãoservidor de despachoServidor de despacho MAC → 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 numa sub-rede diferente da Farm, o “MAC do cliente” visível nos nós da Farm é o endereço MAC do gateway (router) que liga as duas sub-redes, e não o da estação de trabalho do cliente.

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

7. De quais estações de trabalho testar

O comportamento depende do caminho de rede entre o cliente e a Farm. Execute os testes 1 e 2 de cada tipo de cliente relevante para a 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 numa sub-rede diferente (router, gateway, rede virtual do hipervisor)Gestão GARP pelo router ou gateway
Máquina virtual de cliente num hipervisor que também aloja uma máquina virtual FarmComportamento do comutador virtual do hipervisor, que também lida com a comutação e o encaminhamento 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 foi paradoOs nós restantes aparecem, sem interrupção duradoura
3arp -a antes e depois da paragemO endereço MAC associado ao IP Virtual (VIP) muda
4Captura de dados com o Wireshark ou o tcpdump antes e depois da paragemO cliente envia para o endereço MAC do novo servidor de encaminhamento

9. Resolução de problemas

Demonstração da solução farm SafeKit

Vídeo SafeKit: Balanceamento de Carga de Rede e Gestão 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, gerindo automaticamente o IP virtual, garantindo que o tráfego do cliente é distribuído pelos nós e redirecionado instantaneamente durante uma falha. Embora esta demonstração utilize o Apache no Windows, a solução funciona de forma idêntica com outras aplicações.

Capítulos

  1. 🎬 Arquitetura: Preparação de 2 nós para um IP virtual partilhado (0:13)
  2. 🎬 Configuração: Configurar o módulo farm.safe e o endereço IP virtual (2:20)
  3. 🎬 Validação: Teste de contingência 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