O livro está correto, no entanto, há partes que ele deixou de fora.
- Os endereços MAC não são tão fixos quanto você imagina, mas as NICs mais avançadas têm a capacidade de alterar o endereço MAC para algo específico. Na BIOS da NIC ou no próprio driver.
- Existem intervalos específicos de endereços MAC reservados para sistemas 'virtuais' (consulte Que intervalo de endereços MAC posso usar com segurança para minhas máquinas virtuais? )
- O software de cluster pode usar endereços MAC desses intervalos de reserva para apresentar os serviços IP do cluster.
- A pilha de rede linux tem a capacidade de criar NICs virtuais com endereços MAC específicos.
O procedimento seguido pelo software de cluster para criar um serviço baseado em um endereço MAC virtual é bastante simples. Quando o serviço surge, ele oferece um pacote Gratuitous Arp dizendo que o endereço IP específico pode ser encontrado no endereço MAC virtual. Quando o failover acontece, o nó 'para baixo' remove sua ligação IP / MAC local e o novo nó começa a ouvir essa combinação de endereço MAC e IP virtual. Não muss no fuss.
O outro método usado pelo software de clustering é não se incomodar com os MACs virtuais e confiar no Gratuitous ARP por todo o caminho. A sequência de inicialização / failover para tal sistema seria semelhante a:
-
O software de cluster
- liga o IP ao Nó A.
- Nó A G-ARPs "192.168.244.60 está em 02-00-ab-cd-ef-01"
- Todos os dispositivos na sub-rede atualizam suas tabelas ARP.
- O tempo passa.
- O nó A trava.
- O software de cluster liga o IP ao nó B.
- O nó B G-ARPs "192.168.244.60 está em 02-00-ab-cd-41-ba"
- Todos os dispositivos na sub-rede atualizam suas tabelas ARP.
Na minha experiência, o segundo método, o G-ARP puro, é o usado pela maioria dos clusters de linux atualmente. No entanto, ambos os métodos são válidos e foram usados. O benefício do método G-ARP é que você não precisa se preocupar com a atribuição de endereços MAC virtuais. O benefício para o método puro virtual-MAC é que ele não depende do G-ARP trabalhando em uma determinada sub-rede.