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.
- no endereço IP do cliente (
- 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:
- que as conexões sejam distribuídas corretamente por todos os nós;
- 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.
No
userconfig.xmldo 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.
Aplique a configuração em todos os nós.
A partir de um navegador em uma estação de trabalho cliente fora da Farm, conecte-se a:
http://<VIP>:9010/safekit/mosaic.htmlem 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.

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
- Inicie a Farm em todos os nós (estado UP).
- 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
- Pare a Farm, ou seja, todos os nós no SafeKit.
- Inicie um único nó. Este nó se torna o servidor de despacho. → Resultado esperado: o mosaico exibe apenas este nó.
- Inicie os outros nós. → Resultado esperado: o mosaico exibe todos os nós.
- 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
- Inicie a Farm em todos os nós.
- Na estação de trabalho do cliente, execute
arp -ae anote o endereço MAC associado ao IP virtual (VIP). Ele identifica o servidor de despacho. - Pare o nó Farm que tem este endereço MAC.
- Verifique se o mosaico ainda funciona com os nós restantes.
- Execute
arp -anovamente 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:
| Passo | Onde capturar pacotes | Endereços MAC observados |
|---|---|---|
| 1. O cliente envia para o IP Virtual (VIP) | cliente | MAC do cliente → MAC do servidor de despacho |
| 2. O servidor de despacho encaminha a conexão | servidor de despacho | MAC do servidor de despacho → MAC do nó de processamento |
| 3. O nó de processamento recebe | nó de processamento | Servidor de despacho MAC → MAC do nó |
| 4. O nó responde diretamente ao cliente | nó de processamento | MAC do nó → MAC do cliente |
| 5. O cliente recebe a resposta | cliente | MAC 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 cliente | O que o teste verifica |
|---|---|
| O cliente está na mesma sub-rede que a Farm | Atualizaçã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 Farm | Comportamento do switch virtual do hipervisor, que também lida com a comutação e o roteamento internos |
8. Resumo dos resultados esperados
| Teste | Ação | Resultado esperado |
|---|---|---|
| 1 | Todos os nós UP, mosaico | Todos os nós aparecem |
| 2.2 | Um único nó foi iniciado | Apenas este nó aparece |
| 2.3 | Todos os nós foram iniciados | Todos os nós aparecem |
| 2.4 | O servidor de despacho parou | Os nós restantes aparecem, sem interrupção duradoura |
| 3 | arp -a antes e depois da parada | O endereço MAC associado ao IP virtual (VIP) muda |
| 4 | Captura do Wireshark ou tcpdump antes e depois da parada | O cliente envia para o endereço MAC do novo servidor de despacho |
9. Resolução de problemas
- Mapas de bits de balanceamento de carga: para obter detalhes sobre o teste e os mapas de bits de balanceamento de carga, consulte o Guia do Usuário do SafeKit 8.2, seção 4.3.5 " Teste de balanceamento de carga TCP em um endereço IP virtual “.
- O mosaico não responde mais após a interrupção do servidor de despacho: GARP não é levado em consideração por um dispositivo no caminho (roteador, gateway, switch virtual). Verifique o tratamento GARP com sua equipe de rede.
- Envio periódico de GARP: o atributo
arpreroute="on"da seção<vip>(comarpintervalearpelapse) envia GARPs regularmente nos VIPs. Consulte o Guia do Usuário, seção 13.6.4 " Sintaxe<vip>“. - Diagnóstico da resolução de IP virtual (VIP) ↔ MAC: consulte o Guia do Usuário, seção 7.24 " Solução de problemas de resolução de IP virtual (VIP) ↔ MAC " e seção 7.15 " Módulo Farm UP (Ready), mas problema de balanceamento de carga em uma Farm “.
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
- 🎬 Arquitetura: Preparando 2 nós para um IP virtual compartilhado (0:13)
- 🎬 Configuração: Configurando o módulo farm.safe e o endereço IP virtual (2:20)
- 🎬 Validação: Teste de failover e redirecionamento de IP virtual em caso de falha do servidor (2:30)
Implementação passo a passo
- 🛠️ Leia o guia sobre como configurar um cluster farm.safe no Windows
- 🛠️ Leia o guia sobre como configurar um cluster farm.safe no Linux
Para mais informações:
- Como funciona um endereço IP virtual em um cluster de alta disponibilidade?
- Para failover primário/de backup com um endereço IP virtual, consulte Testando o endereço IP virtual de um cluster mirror SafeKit.