Existem diferentes tipos de balanceamento de carga. Você pode ter vários IPs públicos, visíveis em registros DNS. Cada um desses IPs poderia apontar diretamente para um servidor. Será então o cliente que escolher entre eles, e o cliente pode fazer failover entre eles. Você não deve depender muito do failover entre servidores, se você deixar isso para o cliente.
Você pode ajustar o cenário acima ao não distribuir todos os seus IPs públicos em todas as solicitações de DNS. Existem vários motivos para não distribuir todos os seus IPs públicos:
- Pode haver tantos que a resposta do DNS seria muito grande.
- Você pode querer ter mais controle sobre o local de carregamento.
- Você pode direcionar os usuários para servidores que estejam geograficamente mais próximos deles.
- Você pode deixar de contar aos clientes sobre IPs públicos que estão atualmente fora de serviço.
Os métodos acima são geralmente conhecidos como balanceamento de carga baseado em DNS.
Na próxima camada da cadeia, seus IPs públicos podem ser IPs virtuais, que podem ser migrados entre diferentes unidades de hardware. Cada IP virtual só pode ser encaminhado para uma peça de hardware de cada vez, por isso não faria sentido ter muito mais caixas nesta camada do que você tem endereços IP públicos.
Tais IPs virtuais são mais usados para disponibilidade, não são muito flexíveis como uma solução de balanceamento de carga.
Na próxima camada, você pode ter um balanceador de carga convencional. O balanceador de carga recebe as solicitações dos clientes e as encaminha para um pool de servidores. Todo o tráfego do cliente para o servidor precisa passar pelo balanceador de carga, mas o processamento que o balanceador de carga precisa executar pode ser extremamente leve.
Esta camada de balanceador de carga pode operar em dois modos diferentes. Eles podem operar no modo de proxy convencional, no qual uma conexão TCP é usada entre cliente e balanceador de carga e outra conexão TCP é usada entre balanceador de carga e servidor, ou no modo DSR no qual as conexões TCP são terminadas nos servidores atrás o balanceador de carga.
No modo de proxy, o balanceador de carga não precisa apenas lidar com todos os pacotes dos clientes. Ele também precisa manipular todos os pacotes dos servidores para os clientes. E o balanceador de carga precisa de uma pilha TCP completa com buffer e retransmissão.
No modo DSR, o balanceador de carga só precisa de um acompanhamento de conexão simples de cada conexão dos clientes. Isso reduz significativamente o uso de memória no balanceador de carga. Isso também significa que os pacotes do servidor para o cliente não passam pelo balanceador de carga, são enviados diretamente para o cliente (obviamente passando pelos roteadores a caminho). Esta propriedade é a razão pela qual esse modo é chamado de Retorno Direto ao Servidor.
A desvantagem do modo DSR é que a configuração de rede é um pouco mais complicada. Os pacotes do balanceador de carga para o servidor não podem depender apenas do roteamento comum. Como não reescreve o IP de destino dos pacotes de cliente para servidor, ele precisa manipular o endereço de destino em uma camada de protocolo inferior para rotear o pacote para o servidor apropriado ou inserir uma camada de encapsulamento para ter uma camada na qual colocar esse endereço de destino.
Todos os métodos acima podem ser colocados em camadas um na frente do outro. É assim que você pode construir um site com centenas de milhões de usuários.