O balanceamento ideal de carga pode ser muito caro e complicado. O balanceamento de carga básico deve garantir apenas que cada servidor esteja atendendo aproximadamente o mesmo número de ocorrências a qualquer momento.
O método mais simples de balanceamento de carga é fornecer vários registros A no DNS. Por padrão, o endereço IP será configurado em um método round robin. Isso fará com que os usuários sejam distribuídos de maneira relativamente uniforme entre os servidores. Isso funciona bem para sites sem estado. Um método um pouco mais complexo é necessário quando você tem um site com estado.
Para lidar com requisitos com estado, você pode usar redirecionamentos. Atribua a cada servidor da Web um endereço alternativo, como www1, www2, www3, etc. Redirecione a conexão www inicial para o endereço alternativo do host. Você pode acabar tendo problemas com os favoritos dessa maneira, mas eles devem estar uniformemente dispersos pelos servidores.
Como alternativa, o uso de um caminho diferente para indicar qual servidor está lidando com a sessão com estado permitiria as sessões de proxy que trocaram o host para o servidor original. Isso pode ser um problema quando a sessão de um servidor com falha chega ao servidor que assumiu o controle do servidor com falha. No entanto, exceto o software de clustering, o estado estará ausente de qualquer maneira. Devido ao cache do navegador, você pode não ter muitas sessões alterando os servidores.
O failover pode ser tratado configurando o servidor para assumir o endereço IP de um servidor com falha. Isso minimizará o tempo de inatividade se um servidor falhar. Sem o software de cluster, as sessões com estado serão perdidas se um servidor falhar.
Sem failover, os usuários sofrerão um atraso até que o navegador faça o failover para o próximo endereço IP.
O uso de serviços Restful em vez de sessões com estado deve eliminar os problemas de cluster no front-end. Problemas de cluster no lado do armazenamento ainda se aplicam.
Mesmo com os balanceadores de carga na frente dos servidores, você provavelmente terá DNS de rodízio na frente deles. Isso garantirá que todos os seus balanceadores de carga sejam utilizados. Eles adicionarão outra camada ao seu design, com complexidade adicional e outro ponto de falha. No entanto, eles podem fornecer alguns recursos de segurança.
A melhor solução dependerá dos requisitos relevantes.
A implementação de servidores de imagem para exibir conteúdo como imagens, arquivos CSS e outro conteúdo estático pode facilitar a carga nos servidores de aplicativos.