Ok, isso foi perguntado há um tempo, e estou atrasado para a festa. Ainda assim, há algo a acrescentar aqui.
Jackie, você acertou em cheio. Sua ilustração mostra como o balanceamento de carga é tratado na maioria das instalações menores e de médio porte.
Você deve ler a introdução do Willy Tarreau sobre o balanceamento de carga à qual o Nakedible se vinculou. Ainda é válido e é uma boa introdução.
Você precisa considerar como eles atendem às suas necessidades:
- Balanceadores de carga no nível TCP / IP (Linux Virtual Server et al). O overhead mais baixo por conexão, a velocidade mais alta, não pode "ver" o HTTP.
- Balanceadores de carga no nível HTTP (HAProxy, nginx, Apache 2.2, Pound, Microsoft ARR e mais). Sobrecarga mais alta, pode ver HTTP, pode compactar HTTP, pode fazer SSL, pode fazer balanceamento de carga de sessão persistente.
- Proxies reversos HTTP (Apache Traffic Server, Varnish, Squid). Pode armazenar objetos com capacidade de cache (algumas páginas da web, css, js, imagens) na RAM e encaminhá-los para clientes subsequentes sem envolver o servidor da web de back-end. Geralmente, é possível fazer as mesmas coisas que os balanceadores de carga HTTP L7.
existe um segundo balanceador, tenho certeza de que em algum momento o balanceador também precisaria de ajuda.
Bem, claro. Mas o balanceamento de carga é simples e, geralmente, um único balanceador de carga pode ser rápido . Linko para este artigo, que impressionou a web, como apenas um exemplo de que desempenho um único servidor moderno pode oferecer. Não use vários LBs antes de precisar. Quando você precisa de uma abordagem comum, são os balanceadores de carga no nível IP na parte frontal (ou DNS Round Robin), indo para os balanceadores de carga no nível HTTP, indo para proxies e servidores de aplicativos da web.
ajuda sobre o que os "balanceadores / es" devem ser e as melhores práticas sobre como configurá-los.
O ponto do problema é o tratamento do estado da sessão e, até certo ponto, o comportamento do estado de falha. A configuração dos balanceadores de carga é comparativamente simples.
Se você estiver usando apenas 2-4 servidores de aplicativos da web back-end, o hash estático com base no endereço IP de origem pode ser viável. Isso evita a necessidade de estado de sessão compartilhada entre os servidores de aplicativos da web. Cada nó do aplicativo da web vê 1 / N do tráfego geral e o mapeamento de cliente para servidor é estático na operação normal. Porém, não é um bom ajuste para instalações maiores.
Os dois melhores algoritmos de balanceamento de carga, no sentido de que eles têm um comportamento benigno sob alta carga e distribuição uniforme de carga, são round robin e verdadeiro balanceamento de carga aleatório. Ambos exigem que seu aplicativo da Web tenha o estado da sessão global disponível nos nós do aplicativo da web. Como isso é feito depende da pilha de tecnologia dos aplicativos da web; mas geralmente existem soluções padrão disponíveis para isso.
Se nem o hash estático nem o estado da sessão compartilhada são adequados para você, a escolha geralmente é o balanceamento de carga da ' sessão complicada ' e o estado da sessão por servidor. Na maioria dos casos, isso funciona bem e é uma escolha totalmente viável.
o balanceador veria quantas conexões existem em cada instância do apache (através de alguma lista de configuração de IPs internos ou eternos) e distribui as conexões igualmente
Sim, alguns sites usam isso. Existem muitos nomes para os diferentes algoritmos de balanceamento de carga que existem. Se você pode escolher round robin ou aleatório (ou ponderado round robin, ponderado aleatório), recomendo que você faça isso, pelas razões expostas acima.
Última coisa: não esqueça que muitos fornecedores (F5, Cisco e outros de ponta, FX Coyote Point e Kemp Technologies a preços mais razoáveis) oferecem dispositivos de balanceamento de carga maduros .