O protocolo NLB da Microsot (Network Load Balancing) tem como objetivo o balanceamento de tráfego entre um grupo de Servidores utilizando endereços MAC em multicast. Os clientes que acessam os serviços de um grupo de Servidores com NLB, enxergam o serviço de forma transparente.
Para trabalhar com NLB o Switch deve encaminhar o tráfego com destino ao serviço NLB para todos os servidores especificados no cluster NLB e cada servidor filtra o tráfego não desejado.
A cooperação entre o Switch e o protocolo NLB é muito importante e dessa forma é importante saber as maneiras que o protcolo NLB trabalha, que são os modos Unicast e Multicast:
Unicast
No modo unicast, NLB substitui o endereço MAC real de cada servidor no cluster para um endereço comum NLB MAC. Quando todos os servidores no cluster têm o mesmo endereço MAC, todos os pacotes enviados para esse endereço são enviados para todos os membros do cluster. No entanto, um problema com esta configuração é quando os servidores cluster NLB estão conectados ao mesmo switch, você não pode ter duas portas no switch com o registro do mesmo endereço MAC. O protocolo NLB resolve este problema mascarando o endereço MAC do cluster. O Switch olha para o endereço MAC de origem no cabeçalho do quadro Ethernet, a fim de saber quais os endereços MAC são associados com suas portas. O NLB cria um endereço MAC falso e atribui esse falso endereço MAC para cada servidor no cluster NLB. O NLB atribui a cada servidor NLB um endereço MAC falso diferente com base na identificação do membro.
Por exemplo, o endereço MAC do cluster NLB é o 00-bf-ac-10-00-01. O NLB no modo unicast leva o endereço MAC do cluster e, para cada membro do cluster, o NLB muda o segundo octeto do membro NLB. Por exemplo, o servidor 1 terá como falso endereço MAC 00-01-ac-10-00-01, o server com o ID 2 tem o falso endereço MAC 00-02-ac-10-00-01, assim por diante. Se um único endereço MAC está registrado em cada porta do switch, os pacotes não são entregues a todos os membros do cluster, em vez disso os pacotes são enviados para as portas de individuais com base no endereço MAC atribuído a essa porta. Para fazer os quadros serem entregues a todos os membros do cluster, o NLB registra um MAC diferente e utiliza nas mensagens ARP em broadcast. Quando o roteador envia uma solicitação ARP para o endereço MAC do endereço IP virtual, a resposta contém no cabeçalho ARP com o endereço MAC real do cluster NLB 00-bf-ac-10-00-01, como por exemplo citado acima e não o endereço MAC falso.
Os clientes então utilizam o endereço MAC no cabeçalho ARP, não o cabeçalho Ethernet para comunicar-se com o servidor. O switch usa o endereço MAC no cabeçalho Ethernet, não o cabeçalho ARP. A questão é quando um cliente envia um pacote para o cluster NLB com endereço MAC de destino como cluster de endereço MAC 00-bf-ac-10-00-01, o switch olha para a tabela MAC para o endereço MAC 00-bf-ac-10-00-01. Como não há porta registrada com o endereço do cluster NLB 00-bf-ac-10-00-01, o quadro é entregue a todas as portas. Isso força o Switch a encaminhar o quadro para toads as portas ocasionando flooding e atrapalhando o desempenho da rede.
Uma solução para mudar o comportamento de flooding é colocar um hub na frente dos membros do cluster NLB e, em seguida,um uplink do hub para uma porta do switch. Isso evita o problema de duas portas de switch registrando o mesmo endereço MAC. Quando o cliente envia pacotes para o endereço MAC do cluster NLB, os pacotes podem ir diretamente para a porta do switch conectado ao hub e, em seguida, para os membros do cluster NLB.
Multicast
Quando você usa o método de multicast, cada servidor do cluster mantém o endereço MAC original do da placa de rede. Além do endereço MAC original, é também atribuído um endereço MAC em multicast, que é compartilhado por todos os servidores de cluster. As requisições de entrada do cliente são enviadas para todos os servidores do cluster usando o endereço MAC em multicast.
No entanto, no modo multicast, a resposta ARP (ARP reply) enviada por um servidor do cluster em resposta a uma requisição ARP, mapeia o endereço IP unicast do cluster para endereços MAC em multicast. Tal mapeamento no ARP reply é rejeitado por alguns roteadores (ou Switch L3). Dessa forma os administradores devem adicionar uma entrada ARP estática no roteador para mapear o Endereço IP do cluster ao seu MAC Address.
Configurando NLB Multicast mode com o mapeamento estático para Comware
- Desabilite a função de validação do ARP.: undo arp check enable
Obs: configure nos Switches L3 e L2 (que os servidores do cluster estejam conectados).
- Configure uma entrada estática para o ARP :. arp static ip-address mac-address vlan-id interface-type interface-number .
Obs: Para Switches com função L3 na topologia.
- Configure uma entrada multicast MAC estática: mac-address multicast mac-address interface interface-list vlan vlan-id
Obs: dependendo do cenário, configure nos Switches L3 (porta para o trunk com o Switch de acesso) e L2 (porta para os servidores)
Resumo
Modo Unicast : O NLB atribui a cada membro de cluster um endereço MAC comum, que é o endereço MAC do cluster e muda o endereço MAC de origem de cada pacote enviado pelos servidores do cluster . Assim, o switch não pode adicionar o endereço MAC do cluster à sua tabela MAC . Dessa forma o endereço MAC é desconhecido e os pacotes destinados ao Cluster são encaminhados para todas as portas do Switch.
Modo Multicast : O NLB usa um endereço MAC multicast que é um endereço MAC virtual para as máquinas do Cluster.
Configuração
No configuration guide do Switch HPN 10500 há uma configuração mais simples sem o mapeamento da entrada ARP no Switch (o link do arquivo de configuração está nas referências abaixo).
O cluster NLB está na VLAN 10 enquanto os clientes estão na VLAN 20. O Switch fará o roteamento entre VLANs e o encaminhamento do tráfego NLB em modo multicast
Obs: iniciaremos a configuração com todas as portas configuradas nas respectivas VLANs e as máquinas utilizando o Switch como gateway
<Switch> system-view
[Switch] interface vlan-interface 10
[Switch-Vlan-interface10] ip address 16.1.1.1 255.255.255.0
[Switch-Vlan-interface10] quit
[Switch]
[Switch] interface vlan-interface 20
[Switch-Vlan-interface20] ip address 10.0.0.1 255.255.255.0
[Switch-Vlan-interface20] quit
# Desabilitando a validação ARP
[Switch] undo arp check enable
# Configurando a entrada MAC multicast estática
[Switch] mac-address multicast 03bf-1001-0164 interface GigabitEthernet 4/0/2 GigabitEthernet 4/0/3 vlan 10
Referências
http://www.cisco.com/c/en/us/support/docs/switches/catalyst-6500-series-switches/107995-microsoft-nlb.html
http://h10032.www1.hp.com/ctg/Manual/c03796252
Obs: Se vocês tiverem algum outro script ou experiência com esse tipo de cenário, por favor deixe um comentário 🙂
Se o link estiver quebrado, também deixe uma mensagem.